Revert "Remove notifyConfigurationChanged policy call"

Revert submission 28338641-remove_notify_configuration_changed

Reason for revert: Droidmonitor created revert due to http://b/353980868 - verifying through ABTD before submission.  

Reverted changes: /q/submissionid:28338641-remove_notify_configuration_changed

Change-Id: I90a37ca9b2d88e314d92c2345c0837a10fc76236
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index bb2efa1..1f46af8 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -2224,6 +2224,12 @@
 
     // Native callback.
     @SuppressWarnings("unused")
+    private void notifyConfigurationChanged(long whenNanos) {
+        mWindowManagerCallbacks.notifyConfigurationChanged();
+    }
+
+    // Native callback.
+    @SuppressWarnings("unused")
     private void notifyInputDevicesChanged(InputDevice[] inputDevices) {
         synchronized (mInputDevicesLock) {
             if (!mInputDevicesChangedPending) {
@@ -2234,9 +2240,6 @@
 
             mInputDevices = inputDevices;
         }
-        // Input device change can possibly change configuration, so notify window manager to update
-        // its configuration.
-        mWindowManagerCallbacks.notifyConfigurationChanged();
     }
 
     // Native callback.
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index 4d6a90c..5719810 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -104,6 +104,7 @@
 
 static struct {
     jclass clazz;
+    jmethodID notifyConfigurationChanged;
     jmethodID notifyInputDevicesChanged;
     jmethodID notifySwitch;
     jmethodID notifyInputChannelBroken;
@@ -313,6 +314,7 @@
 
     void getReaderConfiguration(InputReaderConfiguration* outConfig) override;
     void notifyInputDevicesChanged(const std::vector<InputDeviceInfo>& inputDevices) override;
+    void notifyConfigurationChanged(nsecs_t when) override;
     std::shared_ptr<KeyCharacterMap> getKeyboardLayoutOverlay(
             const InputDeviceIdentifier& identifier,
             const std::optional<KeyboardLayoutInfo> keyboardLayoutInfo) override;
@@ -938,6 +940,18 @@
     checkAndClearExceptionFromCallback(env, "notifySwitch");
 }
 
+void NativeInputManager::notifyConfigurationChanged(nsecs_t when) {
+#if DEBUG_INPUT_DISPATCHER_POLICY
+    ALOGD("notifyConfigurationChanged - when=%lld", when);
+#endif
+    ATRACE_CALL();
+
+    JNIEnv* env = jniEnv();
+
+    env->CallVoidMethod(mServiceObj, gServiceClassInfo.notifyConfigurationChanged, when);
+    checkAndClearExceptionFromCallback(env, "notifyConfigurationChanged");
+}
+
 static jobject getInputApplicationHandleObjLocalRef(
         JNIEnv* env, const std::shared_ptr<InputApplicationHandle>& inputApplicationHandle) {
     if (inputApplicationHandle == nullptr) {
@@ -2859,6 +2873,9 @@
     FIND_CLASS(clazz, "com/android/server/input/InputManagerService");
     gServiceClassInfo.clazz = reinterpret_cast<jclass>(env->NewGlobalRef(clazz));
 
+    GET_METHOD_ID(gServiceClassInfo.notifyConfigurationChanged, clazz,
+            "notifyConfigurationChanged", "(J)V");
+
     GET_METHOD_ID(gServiceClassInfo.notifyInputDevicesChanged, clazz,
             "notifyInputDevicesChanged", "([Landroid/view/InputDevice;)V");