From 79cb3c52888096eb9f4522f73158d29daa6c156b Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Wed, 16 Jun 2021 20:28:35 +0800 Subject: [PATCH] Move IME log to WindowTokenClient IMF has the requirement to debug if the configuration is dispatched to InputMethodService. Since we migrated InputMethodService to WindowProviderService, we should also move the debug logic to WindowContext module because config updates will be no longer from ActivityThread. Test: build & run Bug: 135719017 Change-Id: I248c90f36249a6a4537228f7b0204f0d4466ebc7 --- core/java/android/app/ActivityThread.java | 15 ------------ .../android/app/ActivityThreadInternal.java | 2 -- .../android/app/ConfigurationController.java | 21 ----------------- .../android/window/WindowTokenClient.java | 23 +++++++++++++++++++ 4 files changed, 23 insertions(+), 38 deletions(-) diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 3de9a5b1252cb..8662bb4b5dbb0 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -96,7 +96,6 @@ import android.graphics.Canvas; import android.graphics.HardwareRenderer; import android.graphics.Typeface; import android.hardware.display.DisplayManagerGlobal; -import android.inputmethodservice.InputMethodService; import android.media.MediaFrameworkInitializer; import android.media.MediaFrameworkPlatformInitializer; import android.media.MediaServiceManager; @@ -5779,9 +5778,6 @@ public final class ActivityThread extends ClientTransactionHandler final int NSVC = mServices.size(); for (int i=0; i { synchronized (mResourcesManager) { - // TODO (b/135719017): Temporary log for debugging IME service. - if (Build.IS_DEBUGGABLE && mHasImeComponent) { - Log.d(TAG, "ViewRootImpl.ConfigChangedCallback for IME, " - + "config=" + globalConfig); - } - // We need to apply this change to the resources immediately, because upon returning // the view hierarchy will be informed about it. if (mResourcesManager.applyConfigurationToResources(globalConfig, @@ -7884,11 +7874,6 @@ public final class ActivityThread extends ClientTransactionHandler return mDensityCompatMode; } - @Override - public boolean hasImeComponent() { - return mHasImeComponent; - } - // ------------------ Regular JNI ------------------------ private native void nPurgePendingResources(); private native void nDumpGraphicsInfo(FileDescriptor fd); diff --git a/core/java/android/app/ActivityThreadInternal.java b/core/java/android/app/ActivityThreadInternal.java index bc471c4dca187..bc698f6573055 100644 --- a/core/java/android/app/ActivityThreadInternal.java +++ b/core/java/android/app/ActivityThreadInternal.java @@ -32,8 +32,6 @@ interface ActivityThreadInternal { boolean isInDensityCompatMode(); - boolean hasImeComponent(); - boolean isCachedProcessState(); Application getApplication(); diff --git a/core/java/android/app/ConfigurationController.java b/core/java/android/app/ConfigurationController.java index c7702663ec9b9..8637e31eb122c 100644 --- a/core/java/android/app/ConfigurationController.java +++ b/core/java/android/app/ConfigurationController.java @@ -28,12 +28,9 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.HardwareRenderer; -import android.inputmethodservice.InputMethodService; -import android.os.Build; import android.os.LocaleList; import android.os.Trace; import android.util.DisplayMetrics; -import android.util.Log; import android.util.Slog; import android.view.ContextThemeWrapper; import android.view.WindowManagerGlobal; @@ -168,12 +165,7 @@ class ConfigurationController { mPendingConfiguration = null; } - final boolean hasIme = mActivityThread.hasImeComponent(); if (config == null) { - // TODO (b/135719017): Temporary log for debugging IME service. - if (Build.IS_DEBUGGABLE && hasIme) { - Log.w(TAG, "handleConfigurationChanged for IME app but config is null"); - } return; } @@ -204,12 +196,6 @@ class ConfigurationController { mConfiguration = new Configuration(); } if (!mConfiguration.isOtherSeqNewer(config) && compat == null) { - // TODO (b/135719017): Temporary log for debugging IME service. - if (Build.IS_DEBUGGABLE && hasIme) { - Log.w(TAG, "handleConfigurationChanged for IME app but config seq is obsolete " - + ", config=" + config - + ", mConfiguration=" + mConfiguration); - } return; } @@ -237,13 +223,6 @@ class ConfigurationController { ComponentCallbacks2 cb = callbacks.get(i); if (!equivalent) { performConfigurationChanged(cb, config); - } else { - // TODO (b/135719017): Temporary log for debugging IME service. - if (Build.IS_DEBUGGABLE && cb instanceof InputMethodService) { - Log.w(TAG, "performConfigurationChanged didn't callback to IME " - + ", configDiff=" + configDiff - + ", mConfiguration=" + mConfiguration); - } } } } diff --git a/core/java/android/window/WindowTokenClient.java b/core/java/android/window/WindowTokenClient.java index 04ac044aeff10..c32a268cef5c0 100644 --- a/core/java/android/window/WindowTokenClient.java +++ b/core/java/android/window/WindowTokenClient.java @@ -26,8 +26,11 @@ import android.app.IWindowToken; import android.app.ResourcesManager; import android.content.Context; import android.content.res.Configuration; +import android.inputmethodservice.AbstractInputMethodService; +import android.os.Build; import android.os.Bundle; import android.os.IBinder; +import android.util.Log; import java.lang.ref.WeakReference; @@ -43,6 +46,8 @@ import java.lang.ref.WeakReference; * @hide */ public class WindowTokenClient extends IWindowToken.Stub { + private static final String TAG = WindowTokenClient.class.getSimpleName(); + /** * Attached {@link Context} for this window token to update configuration and resources. * Initialized by {@link #attachContext(Context)}. @@ -53,6 +58,8 @@ public class WindowTokenClient extends IWindowToken.Stub { private final Configuration mConfiguration = new Configuration(); + private boolean mShouldDumpConfigForIme; + /** * Attaches {@code context} to this {@link WindowTokenClient}. Each {@link WindowTokenClient} * can only attach one {@link Context}. @@ -69,6 +76,8 @@ public class WindowTokenClient extends IWindowToken.Stub { } mContextRef = new WeakReference<>(context); mConfiguration.setTo(context.getResources().getConfiguration()); + mShouldDumpConfigForIme = Build.IS_DEBUGGABLE + && context instanceof AbstractInputMethodService; } @Override @@ -82,6 +91,13 @@ public class WindowTokenClient extends IWindowToken.Stub { newConfig, newConfig /* overrideConfig */, displayChanged, null /* configChanged */); + if (!shouldUpdateResources && mShouldDumpConfigForIme) { + Log.d(TAG, "Configuration not dispatch to IME because configuration is up" + + " to date. Current config=" + context.getResources().getConfiguration() + + ", reported config=" + mConfiguration + + ", updated config=" + newConfig); + } + if (shouldUpdateResources) { // TODO(ag/9789103): update resource manager logic to track non-activity tokens mResourcesManager.updateResourcesForActivity(this, newConfig, newDisplayId); @@ -104,6 +120,13 @@ public class WindowTokenClient extends IWindowToken.Stub { ((WindowProviderService) context).onConfigurationChanged(newConfig)); } freeTextLayoutCachesIfNeeded(diff); + if (diff == 0 && mShouldDumpConfigForIme) { + Log.d(TAG, "Configuration not dispatch to IME because configuration has no " + + " public difference with updated config. " + + " Current config=" + context.getResources().getConfiguration() + + ", reported config=" + mConfiguration + + ", updated config=" + newConfig); + } mConfiguration.setTo(newConfig); } if (displayChanged) {