Merge "Fix a bug in ContrastColorUtil that was copying NoCopySpan." into main
diff --git a/core/java/com/android/internal/util/ContrastColorUtil.java b/core/java/com/android/internal/util/ContrastColorUtil.java
index 77de272..0fd1391 100644
--- a/core/java/com/android/internal/util/ContrastColorUtil.java
+++ b/core/java/com/android/internal/util/ContrastColorUtil.java
@@ -31,6 +31,7 @@
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.graphics.drawable.VectorDrawable;
+import android.text.NoCopySpan;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.BackgroundColorSpan;
@@ -188,6 +189,10 @@
Object[] spans = ss.getSpans(0, ss.length(), Object.class);
SpannableStringBuilder builder = new SpannableStringBuilder(ss.toString());
for (Object span : spans) {
+ if (span instanceof NoCopySpan) {
+ // These spans can contain external references and should not be copied.
+ continue;
+ }
Object resultSpan = span;
if (resultSpan instanceof CharacterStyle) {
resultSpan = ((CharacterStyle) span).getUnderlying();
@@ -254,6 +259,10 @@
Object[] spans = ss.getSpans(0, ss.length(), Object.class);
SpannableStringBuilder builder = new SpannableStringBuilder(ss.toString());
for (Object span : spans) {
+ if (span instanceof NoCopySpan) {
+ // These spans can contain external references and should not be copied.
+ continue;
+ }
Object resultSpan = span;
if (resultSpan instanceof CharacterStyle) {
resultSpan = ((CharacterStyle) span).getUnderlying();
@@ -300,6 +309,10 @@
Object[] spans = ss.getSpans(0, ss.length(), Object.class);
SpannableStringBuilder builder = new SpannableStringBuilder(ss.toString());
for (Object span : spans) {
+ if (span instanceof NoCopySpan) {
+ // These spans can contain external references and should not be copied.
+ continue;
+ }
Object resultSpan = span;
int spanStart = ss.getSpanStart(span);
int spanEnd = ss.getSpanEnd(span);