am 6736d380: am bdb61865: Merge "Add equals() and hashcode() to SpannableString" into klp-dev
* commit '6736d380b7d318f3af84294ae38a881e2dc54528':
Add equals() and hashcode() to SpannableString
diff --git a/core/java/android/text/SpannableStringBuilder.java b/core/java/android/text/SpannableStringBuilder.java
index 8929930..6efde05 100644
--- a/core/java/android/text/SpannableStringBuilder.java
+++ b/core/java/android/text/SpannableStringBuilder.java
@@ -1288,6 +1288,47 @@
return mFilters;
}
+ // Same as SpannableStringInternal
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof Spanned &&
+ toString().equals(o.toString())) {
+ // Check span data
+ Object[] otherSpans = ((Spanned) o).getSpans(0,
+ ((Spanned) o).length(), Object.class);
+ if (mSpanCount == otherSpans.length) {
+ for (int i = 0; i < mSpanCount; ++i) {
+ Object thisSpan = mSpans[i];
+ Object otherSpan = otherSpans[i];
+ if (!thisSpan.equals(otherSpan) ||
+ getSpanStart(thisSpan) != getSpanStart(otherSpan) ||
+ getSpanEnd(thisSpan) != getSpanEnd(otherSpan) ||
+ getSpanFlags(thisSpan) != getSpanFlags(otherSpan)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+ // Same as SpannableStringInternal
+ @Override
+ public int hashCode() {
+ int hash = toString().hashCode();
+ hash = hash * 31 + mSpanCount;
+ for (int i = 0; i < mSpanCount; ++i) {
+ Object span = mSpans[i];
+ hash = hash * 31 + span.hashCode();
+ hash = hash * 31 + getSpanStart(span);
+ hash = hash * 31 + getSpanEnd(span);
+ hash = hash * 31 + getSpanFlags(span);
+ }
+ return hash;
+ }
+
private static final InputFilter[] NO_FILTERS = new InputFilter[0];
private InputFilter[] mFilters = NO_FILTERS;
diff --git a/core/java/android/text/SpannableStringInternal.java b/core/java/android/text/SpannableStringInternal.java
index 0825bf3..9b24a2e 100644
--- a/core/java/android/text/SpannableStringInternal.java
+++ b/core/java/android/text/SpannableStringInternal.java
@@ -358,6 +358,47 @@
}
}
+ // Same as SpannableStringBuilder
+ @Override
+ public boolean equals(Object o) {
+ if (o instanceof Spanned &&
+ toString().equals(o.toString())) {
+ // Check span data
+ Object[] otherSpans = ((Spanned) o).getSpans(0,
+ ((Spanned) o).length(), Object.class);
+ if (mSpanCount == otherSpans.length) {
+ for (int i = 0; i < mSpanCount; ++i) {
+ Object thisSpan = mSpans[i];
+ Object otherSpan = otherSpans[i];
+ if (!thisSpan.equals(otherSpan) ||
+ getSpanStart(thisSpan) != getSpanStart(otherSpan) ||
+ getSpanEnd(thisSpan) != getSpanEnd(otherSpan) ||
+ getSpanFlags(thisSpan) != getSpanFlags(otherSpan)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+ // Same as SpannableStringBuilder
+ @Override
+ public int hashCode() {
+ int hash = toString().hashCode();
+ hash = hash * 31 + mSpanCount;
+ for (int i = 0; i < mSpanCount; ++i) {
+ Object span = mSpans[i];
+ hash = hash * 31 + span.hashCode();
+ hash = hash * 31 + getSpanStart(span);
+ hash = hash * 31 + getSpanEnd(span);
+ hash = hash * 31 + getSpanFlags(span);
+ }
+ return hash;
+ }
+
private String mText;
private Object[] mSpans;
private int[] mSpanData;
diff --git a/core/java/android/transition/TextChange.java b/core/java/android/transition/TextChange.java
index 0b1e4e1..fa2f548 100644
--- a/core/java/android/transition/TextChange.java
+++ b/core/java/android/transition/TextChange.java
@@ -21,6 +21,7 @@
import android.animation.AnimatorSet;
import android.animation.ValueAnimator;
import android.graphics.Color;
+import android.util.Log;
import android.view.ViewGroup;
import android.widget.TextView;
@@ -36,6 +37,9 @@
* @hide
*/
public class TextChange extends Transition {
+
+ private static final String LOG_TAG = "TextChange";
+
private static final String PROPNAME_TEXT = "android:textchange:text";
private static final String PROPNAME_TEXT_COLOR = "android:textchange:textColor";
@@ -224,6 +228,9 @@
}
};
addListener(transitionListener);
+ if (DBG) {
+ Log.d(LOG_TAG, "createAnimator returning " + anim);
+ }
return anim;
}
return null;