summaryrefslogtreecommitdiffstats
path: root/core/java/android/text/ParcelableSpan.java
diff options
context:
space:
mode:
authorAlan Viverette <alanv@google.com>2015-06-02 16:11:00 -0700
committerAlan Viverette <alanv@google.com>2015-06-02 16:11:00 -0700
commita70d4a90a029910f788c3e7f8715cf3b842b1e2b (patch)
tree9c7e3361c9606a66c9da091b5530809b4161d608 /core/java/android/text/ParcelableSpan.java
parent5431000830551959db15038da8f057c2e993d01a (diff)
downloadframeworks_base-a70d4a90a029910f788c3e7f8715cf3b842b1e2b.zip
frameworks_base-a70d4a90a029910f788c3e7f8715cf3b842b1e2b.tar.gz
frameworks_base-a70d4a90a029910f788c3e7f8715cf3b842b1e2b.tar.bz2
Prevent poorly-extended ParcelableSpans from writing to parcels
If a developer extends an existing ParcelableSpan and overwrites writeToParcel, TextUtils will crash when attempting to unparcel since the span type ID is not accurate. This CL makes a separate framework-private method for writeToParcel to ensure that even if a developer extends a ParcelableSpan class, they won't modify the parceling or unparceling code that's tied to the span type ID. Bug: 21274544 Change-Id: If4c3506a55999df7a3b6d87cb8d550235d7a02c6
Diffstat (limited to 'core/java/android/text/ParcelableSpan.java')
-rw-r--r--core/java/android/text/ParcelableSpan.java19
1 files changed, 18 insertions, 1 deletions
diff --git a/core/java/android/text/ParcelableSpan.java b/core/java/android/text/ParcelableSpan.java
index 224511a..d7c1a4b 100644
--- a/core/java/android/text/ParcelableSpan.java
+++ b/core/java/android/text/ParcelableSpan.java
@@ -16,6 +16,7 @@
package android.text;
+import android.os.Parcel;
import android.os.Parcelable;
/**
@@ -27,5 +28,21 @@ public interface ParcelableSpan extends Parcelable {
/**
* Return a special type identifier for this span class.
*/
- public abstract int getSpanTypeId();
+ int getSpanTypeId();
+
+ /**
+ * Internal implementation of {@link #getSpanTypeId()} that is not meant to
+ * be overridden outside of the framework.
+ *
+ * @hide
+ */
+ int getSpanTypeIdInternal();
+
+ /**
+ * Internal implementation of {@link Parcelable#writeToParcel(Parcel, int)}
+ * that is not meant to be overridden outside of the framework.
+ *
+ * @hide
+ */
+ void writeToParcelInternal(Parcel dest, int flags);
}