Commit f15871db authored by Friedrich Horschig's avatar Friedrich Horschig Committed by Commit Bot

[PwdCheckAndroid] Serialize CompromisedCredential for editing

By making CompromisedCredential implement Parcelable and provide a
static CREATOR, it can be serialized and used in Bundles. This enables
to pass it as extra when:
 * Saving the instance state if an activity is recreated
 * Starting fragments that need a compromised credential as extra

Bug: 1114720, 1092444
Change-Id: Ice45d321488794083f59217fc60c72a11f893e85
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2352879Reviewed-by: default avatarJan Wilken Dörrie <jdoerrie@chromium.org>
Commit-Queue: Friedrich [CET] <fhorschig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#797749}
parent 6631cffc
......@@ -4,6 +4,9 @@
package org.chromium.chrome.browser.password_check;
import android.os.Parcel;
import android.os.Parcelable;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.url.GURL;
......@@ -13,7 +16,36 @@ import java.util.Objects;
* This class holds the data used to represent a compromised credential in the Password Check
* settings screen.
*/
public class CompromisedCredential {
public class CompromisedCredential implements Parcelable {
/** This static member is required to automagically deserialize credential parcels . */
public static final Parcelable.Creator<CompromisedCredential> CREATOR =
new Parcelable.Creator<CompromisedCredential>() {
@Override
public CompromisedCredential createFromParcel(Parcel in) {
final String signonRealm = in.readString();
final GURL origin = GURL.deserialize(in.readString());
final String username = in.readString();
final String displayOrigin = in.readString();
final String displayUsername = in.readString();
final String password = in.readString();
final String passwordChangeUrl = in.readString();
final String associatedApp = in.readString();
boolean[] boolArguments = new boolean[2];
in.readBooleanArray(boolArguments);
final boolean phished = boolArguments[0];
final boolean hasScript = boolArguments[1];
return new CompromisedCredential(signonRealm, origin, username, displayOrigin,
displayUsername, password, passwordChangeUrl, associatedApp, phished,
hasScript);
}
@Override
public CompromisedCredential[] newArray(int size) {
return new CompromisedCredential[size];
}
};
private final String mSignonRealm;
private final GURL mOrigin;
private final String mUsername;
......@@ -126,4 +158,22 @@ public class CompromisedCredential {
return Objects.hash(mSignonRealm, mOrigin, mUsername, mDisplayOrigin, mDisplayUsername,
mPassword, mPasswordChangeUrl, mAssociatedApp, mPhished, mHasScript);
}
@Override
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeString(mSignonRealm);
parcel.writeString(mOrigin.serialize());
parcel.writeString(mUsername);
parcel.writeString(mDisplayOrigin);
parcel.writeString(mDisplayUsername);
parcel.writeString(mPassword);
parcel.writeString(mPasswordChangeUrl);
parcel.writeString(mAssociatedApp);
parcel.writeBooleanArray(new boolean[] {mPhished, mHasScript});
}
@Override
public int describeContents() {
return 0; // No file descriptor necessary.
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment