diff options
author | alk3pInjection <webmaster@raspii.tech> | 2023-11-16 00:18:35 +0800 |
---|---|---|
committer | alk3pInjection <webmaster@raspii.tech> | 2023-11-16 00:18:35 +0800 |
commit | ce0a98ec45af0139f2cd87c76cb0fc21d6b3c19e (patch) | |
tree | 997f870994046702b802b14654bdc1eddeed2995 | |
parent | e1fbc75f421d027940f0cec613669a010ac6ad96 (diff) | |
parent | 03b791e09ff1597cd0a806d42747984e816d69a4 (diff) |
Merge tag 'LA.QSSI.13.0.r1-12100-qssi.0' into tachibana-mr1tachibana-mr1
"LA.QSSI.13.0.r1-12100-qssi.0"
Change-Id: I92cc197481dc008fcff3feb153c913e6fe6d2511
-rw-r--r-- | core/java/android/app/assist/AssistStructure.java | 18 | ||||
-rw-r--r-- | core/java/android/util/BoostFramework.java | 2 | ||||
-rw-r--r-- | services/core/java/com/android/server/wm/TaskFragment.java | 4 |
3 files changed, 22 insertions, 2 deletions
diff --git a/core/java/android/app/assist/AssistStructure.java b/core/java/android/app/assist/AssistStructure.java index 6e49e956fe7e..27b8239edd4d 100644 --- a/core/java/android/app/assist/AssistStructure.java +++ b/core/java/android/app/assist/AssistStructure.java @@ -22,6 +22,7 @@ import android.os.PooledStringWriter; import android.os.RemoteException; import android.os.SystemClock; import android.service.autofill.FillRequest; +import android.text.Spanned; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -1556,6 +1557,10 @@ public class AssistStructure implements Parcelable { /** * Returns any text associated with the node that is displayed to the user, or null * if there is none. + * + * <p> The text will be stripped of any spans that could potentially contain reference to + * the activity context, to avoid memory leak. If the text contained a span, a plain + * string version of the text will be returned. */ @Nullable public CharSequence getText() { @@ -1995,14 +2000,16 @@ public class AssistStructure implements Parcelable { @Override public void setText(CharSequence text) { ViewNodeText t = getNodeText(); - t.mText = TextUtils.trimNoCopySpans(text); + // Strip spans from the text to avoid memory leak + t.mText = TextUtils.trimToParcelableSize(stripAllSpansFromText(text)); t.mTextSelectionStart = t.mTextSelectionEnd = -1; } @Override public void setText(CharSequence text, int selectionStart, int selectionEnd) { ViewNodeText t = getNodeText(); - t.mText = TextUtils.trimNoCopySpans(text); + // Strip spans from the text to avoid memory leak + t.mText = stripAllSpansFromText(text); t.mTextSelectionStart = selectionStart; t.mTextSelectionEnd = selectionEnd; } @@ -2221,6 +2228,13 @@ public class AssistStructure implements Parcelable { public void setHtmlInfo(@NonNull HtmlInfo htmlInfo) { mNode.mHtmlInfo = htmlInfo; } + + private CharSequence stripAllSpansFromText(CharSequence text) { + if (text instanceof Spanned) { + return text.toString(); + } + return text; + } } private static final class HtmlInfoNode extends HtmlInfo implements Parcelable { diff --git a/core/java/android/util/BoostFramework.java b/core/java/android/util/BoostFramework.java index 88c9460913f4..8dedc080ee7d 100644 --- a/core/java/android/util/BoostFramework.java +++ b/core/java/android/util/BoostFramework.java @@ -110,6 +110,8 @@ public class BoostFramework { public static final int VENDOR_HINT_DRAG_END = 0x00001052; //Ime Launch Boost Hint public static final int VENDOR_HINT_IME_LAUNCH_EVENT = 0x0000109F; + //App exit animation boost + public static final int VENDOR_HINT_EXIT_ANIM_BOOST = 0x000010A9; //feedback hints public static final int VENDOR_FEEDBACK_WORKLOAD_TYPE = 0x00001601; diff --git a/services/core/java/com/android/server/wm/TaskFragment.java b/services/core/java/com/android/server/wm/TaskFragment.java index e1e5261071c7..d58e3eb0a17d 100644 --- a/services/core/java/com/android/server/wm/TaskFragment.java +++ b/services/core/java/com/android/server/wm/TaskFragment.java @@ -1397,6 +1397,10 @@ class TaskFragment extends WindowContainer<WindowContainer> { dc.prepareAppTransition(TRANSIT_NONE); } else { dc.prepareAppTransition(TRANSIT_OPEN); + // Exit app animation boost + if (next != null && mPerf != null) { + mPerf.perfHint(BoostFramework.VENDOR_HINT_EXIT_ANIM_BOOST, next.packageName); + } } } |