Merge "Fix handwriting trigger fail even isAutoHandwritingEnabled is true" into main
diff --git a/core/java/android/text/flags/flags.aconfig b/core/java/android/text/flags/flags.aconfig
index c83285a..3599332 100644
--- a/core/java/android/text/flags/flags.aconfig
+++ b/core/java/android/text/flags/flags.aconfig
@@ -168,3 +168,13 @@
   description: "Decouple variation settings, weight and style information from Typeface class"
   bug: "361260253"
 }
+
+flag {
+  name: "handwriting_track_disabled"
+  namespace: "text"
+  description: "Handwriting initiator tracks focused view even if handwriting is disabled to fix initiation bug."
+  bug: "361256391"
+  metadata {
+    purpose: PURPOSE_BUGFIX
+  }
+}
diff --git a/core/java/android/view/HandwritingInitiator.java b/core/java/android/view/HandwritingInitiator.java
index ab9bd1f..f132963 100644
--- a/core/java/android/view/HandwritingInitiator.java
+++ b/core/java/android/view/HandwritingInitiator.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import static com.android.text.flags.Flags.handwritingCursorPosition;
+import static com.android.text.flags.Flags.handwritingTrackDisabled;
 import static com.android.text.flags.Flags.handwritingUnsupportedMessage;
 
 import android.annotation.FlaggedApi;
@@ -352,7 +353,7 @@
 
         final View focusedView = getFocusedView();
 
-        if (!view.isAutoHandwritingEnabled()) {
+        if (!handwritingTrackDisabled() && !view.isAutoHandwritingEnabled()) {
             clearFocusedView(focusedView);
             return;
         }
@@ -363,7 +364,8 @@
         updateFocusedView(view);
 
         if (mState != null && mState.mPendingFocusedView != null
-                && mState.mPendingFocusedView.get() == view) {
+                && mState.mPendingFocusedView.get() == view
+                && (!handwritingTrackDisabled() || view.isAutoHandwritingEnabled())) {
             startHandwriting(view);
         }
     }
@@ -416,7 +418,7 @@
      */
     @VisibleForTesting
     public boolean updateFocusedView(@NonNull View view) {
-        if (!view.shouldInitiateHandwriting()) {
+        if (!handwritingTrackDisabled() && !view.shouldInitiateHandwriting()) {
             mFocusedView = null;
             return false;
         }
@@ -424,8 +426,10 @@
         final View focusedView = getFocusedView();
         if (focusedView != view) {
             mFocusedView = new WeakReference<>(view);
-            // A new view just gain focus. By default, we should show hover icon for it.
-            mShowHoverIconForConnectedView = true;
+            if (!handwritingTrackDisabled() || view.shouldInitiateHandwriting()) {
+                // A new view just gain focus. By default, we should show hover icon for it.
+                mShowHoverIconForConnectedView = true;
+            }
         }
 
         return true;