Track update count of IMMS#mMethodMap

InputMethodManagerService#buildInputMethodListLocked() is known be
one of the biggest contributors to CPU and I/O bandwidth consumed
by InputMethodManagerService (IMMS). To check when it gets called
and to see how a CL would affect its call count, it would be useful
if we can easily get the call count of that method.

With this CL, how many times IMMS#mMethodMap was rebuilt will be
included in the dumpsys.

Test: adb shell dumpsys input_method | grep "mMethodMapUpdateCount="
      to make sure the count is increasing.
Bug: 32343335
Change-Id: I05850578cbf2e6adfea6c7e9b1fb9ec4e9d5e2c9
diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java
index f0f50f0..121bc3c 100644
--- a/services/core/java/com/android/server/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/InputMethodManagerService.java
@@ -227,6 +227,12 @@
             new LruCache<>(SECURE_SUGGESTION_SPANS_MAX_SIZE);
     private final InputMethodSubtypeSwitchingController mSwitchingController;
 
+    /**
+     * Tracks how many times {@link #mMethodMap} was updated.
+     */
+    @GuardedBy("mMethodMap")
+    private int mMethodMapUpdateCount = 0;
+
     // Used to bring IME service up to visible adjustment while it is being shown.
     final ServiceConnection mVisibleConnection = new ServiceConnection() {
         @Override public void onServiceConnected(ComponentName name, IBinder service) {
@@ -3069,6 +3075,7 @@
         }
         mMethodList.clear();
         mMethodMap.clear();
+        mMethodMapUpdateCount++;
         mMyPackageMonitor.clearPackagesToMonitorComponentChangeLocked();
 
         // Use for queryIntentServicesAsUser
@@ -4070,7 +4077,7 @@
         synchronized (mMethodMap) {
             p.println("Current Input Method Manager state:");
             int N = mMethodList.size();
-            p.println("  Input Methods:");
+            p.println("  Input Methods: mMethodMapUpdateCount=" + mMethodMapUpdateCount);
             for (int i=0; i<N; i++) {
                 InputMethodInfo info = mMethodList.get(i);
                 p.println("  InputMethod #" + i + ":");