Merge "Make AbsSavedState read using given ClassLoader" into nyc-dev am: b02d51b

am: d807891

* commit 'd80789117cf2f41de41e4e4d57c2964ae989c458':
  Make AbsSavedState read using given ClassLoader

Change-Id: If344423f5f4ea13a5f5b442e8a959317fe195151
This commit is contained in:
Chris Banes
2016-04-23 07:12:46 +00:00
committed by android-build-merger
5 changed files with 55 additions and 15 deletions

View File

@@ -40825,6 +40825,7 @@ package android.view {
public abstract class AbsSavedState implements android.os.Parcelable {
ctor protected AbsSavedState(android.os.Parcelable);
ctor protected AbsSavedState(android.os.Parcel);
ctor protected AbsSavedState(android.os.Parcel, java.lang.ClassLoader);
method public int describeContents();
method public final android.os.Parcelable getSuperState();
method public void writeToParcel(android.os.Parcel, int);
@@ -42941,6 +42942,7 @@ package android.view {
public static class View.BaseSavedState extends android.view.AbsSavedState {
ctor public View.BaseSavedState(android.os.Parcel);
ctor public View.BaseSavedState(android.os.Parcel, java.lang.ClassLoader);
ctor public View.BaseSavedState(android.os.Parcelable);
field public static final android.os.Parcelable.Creator<android.view.View.BaseSavedState> CREATOR;
}

View File

@@ -43838,6 +43838,7 @@ package android.view {
public abstract class AbsSavedState implements android.os.Parcelable {
ctor protected AbsSavedState(android.os.Parcelable);
ctor protected AbsSavedState(android.os.Parcel);
ctor protected AbsSavedState(android.os.Parcel, java.lang.ClassLoader);
method public int describeContents();
method public final android.os.Parcelable getSuperState();
method public void writeToParcel(android.os.Parcel, int);
@@ -45954,6 +45955,7 @@ package android.view {
public static class View.BaseSavedState extends android.view.AbsSavedState {
ctor public View.BaseSavedState(android.os.Parcel);
ctor public View.BaseSavedState(android.os.Parcel, java.lang.ClassLoader);
ctor public View.BaseSavedState(android.os.Parcelable);
field public static final android.os.Parcelable.Creator<android.view.View.BaseSavedState> CREATOR;
}

View File

@@ -40902,6 +40902,7 @@ package android.view {
public abstract class AbsSavedState implements android.os.Parcelable {
ctor protected AbsSavedState(android.os.Parcelable);
ctor protected AbsSavedState(android.os.Parcel);
ctor protected AbsSavedState(android.os.Parcel, java.lang.ClassLoader);
method public int describeContents();
method public final android.os.Parcelable getSuperState();
method public void writeToParcel(android.os.Parcel, int);
@@ -43018,6 +43019,7 @@ package android.view {
public static class View.BaseSavedState extends android.view.AbsSavedState {
ctor public View.BaseSavedState(android.os.Parcel);
ctor public View.BaseSavedState(android.os.Parcel, java.lang.ClassLoader);
ctor public View.BaseSavedState(android.os.Parcelable);
field public static final android.os.Parcelable.Creator<android.view.View.BaseSavedState> CREATOR;
}

View File

@@ -37,7 +37,7 @@ public abstract class AbsSavedState implements Parcelable {
/**
* Constructor called by derived classes when creating their SavedState objects
*
*
* @param superState The state of the superclass of this view
*/
protected AbsSavedState(Parcelable superState) {
@@ -49,13 +49,22 @@ public abstract class AbsSavedState implements Parcelable {
/**
* Constructor used when reading from a parcel. Reads the state of the superclass.
*
* @param source
*
* @param source parcel to read from
*/
protected AbsSavedState(Parcel source) {
// FIXME need class loader
Parcelable superState = source.readParcelable(null);
this(source, null);
}
/**
* Constructor used when reading from a parcel using a given class loader.
* Reads the state of the superclass.
*
* @param source parcel to read from
* @param loader ClassLoader to use for reading
*/
protected AbsSavedState(Parcel source, ClassLoader loader) {
Parcelable superState = source.readParcelable(loader);
mSuperState = superState != null ? superState : EMPTY_STATE;
}
@@ -68,20 +77,27 @@ public abstract class AbsSavedState implements Parcelable {
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(mSuperState, flags);
dest.writeParcelable(mSuperState, flags);
}
public static final Parcelable.Creator<AbsSavedState> CREATOR
= new Parcelable.Creator<AbsSavedState>() {
public static final Parcelable.Creator<AbsSavedState> CREATOR
= new Parcelable.ClassLoaderCreator<AbsSavedState>() {
@Override
public AbsSavedState createFromParcel(Parcel in) {
Parcelable superState = in.readParcelable(null);
return createFromParcel(in, null);
}
@Override
public AbsSavedState createFromParcel(Parcel in, ClassLoader loader) {
Parcelable superState = in.readParcelable(loader);
if (superState != null) {
throw new IllegalStateException("superState must be null");
}
return EMPTY_STATE;
}
@Override
public AbsSavedState[] newArray(int size) {
return new AbsSavedState[size];
}

View File

@@ -22575,10 +22575,21 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/**
* Constructor used when reading from a parcel. Reads the state of the superclass.
*
* @param source
* @param source parcel to read from
*/
public BaseSavedState(Parcel source) {
super(source);
this(source, null);
}
/**
* Constructor used when reading from a parcel using a given class loader.
* Reads the state of the superclass.
*
* @param source parcel to read from
* @param loader ClassLoader to use for reading
*/
public BaseSavedState(Parcel source, ClassLoader loader) {
super(source, loader);
mStartActivityRequestWhoSaved = source.readString();
}
@@ -22597,12 +22608,19 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
out.writeString(mStartActivityRequestWhoSaved);
}
public static final Parcelable.Creator<BaseSavedState> CREATOR =
new Parcelable.Creator<BaseSavedState>() {
public static final Parcelable.Creator<BaseSavedState> CREATOR
= new Parcelable.ClassLoaderCreator<BaseSavedState>() {
@Override
public BaseSavedState createFromParcel(Parcel in) {
return new BaseSavedState(in);
}
@Override
public BaseSavedState createFromParcel(Parcel in, ClassLoader loader) {
return new BaseSavedState(in, loader);
}
@Override
public BaseSavedState[] newArray(int size) {
return new BaseSavedState[size];
}