Bug 1063831 - Support tracking protection in SiteIdentity.java r=margaret

This commit is contained in:
Mark Finkle 2014-11-11 15:03:43 -05:00
parent 8321137592
commit 8940a260d0

View File

@ -11,20 +11,20 @@ import android.text.TextUtils;
public class SiteIdentity {
private SecurityMode mSecurityMode;
private MixedMode mMixedMode;
private TrackingMode mTrackingMode;
private String mHost;
private String mOwner;
private String mSupplemental;
private String mVerifier;
private String mEncrypted;
// The order of the items here correspond to image
// levels in site_security_level.xml
// The order of the items here relate to image levels in
// site_security_level.xml
public enum SecurityMode {
UNKNOWN("unknown"),
IDENTIFIED("identified"),
VERIFIED("verified"),
MIXED_CONTENT_BLOCKED("mixed_content_blocked"),
MIXED_CONTENT_LOADED("mixed_content_loaded");
VERIFIED("verified");
private final String mId;
@ -52,12 +52,81 @@ public class SiteIdentity {
}
}
public SiteIdentity() {
reset(SecurityMode.UNKNOWN);
// The order of the items here relate to image levels in
// site_security_level.xml
public enum MixedMode {
UNKNOWN("unknown"),
MIXED_CONTENT_BLOCKED("mixed_content_blocked"),
MIXED_CONTENT_LOADED("mixed_content_loaded");
private final String mId;
private MixedMode(String id) {
mId = id;
}
public static MixedMode fromString(String id) {
if (id == null) {
throw new IllegalArgumentException("Can't convert null String to MixedMode");
}
for (MixedMode mode : MixedMode.values()) {
if (TextUtils.equals(mode.mId, id.toLowerCase())) {
return mode;
}
}
throw new IllegalArgumentException("Could not convert String id to MixedMode");
}
@Override
public String toString() {
return mId;
}
}
private void reset(SecurityMode securityMode) {
mSecurityMode = securityMode;
// The order of the items here relate to image levels in
// site_security_level.xml
public enum TrackingMode {
UNKNOWN("unknown"),
TRACKING_CONTENT_BLOCKED("tracking_content_blocked"),
TRACKING_CONTENT_LOADED("tracking_content_loaded");
private final String mId;
private TrackingMode(String id) {
mId = id;
}
public static TrackingMode fromString(String id) {
if (id == null) {
throw new IllegalArgumentException("Can't convert null String to TrackingMode");
}
for (TrackingMode mode : TrackingMode.values()) {
if (TextUtils.equals(mode.mId, id.toLowerCase())) {
return mode;
}
}
throw new IllegalArgumentException("Could not convert String id to TrackingMode");
}
@Override
public String toString() {
return mId;
}
}
public SiteIdentity() {
resetIdentityData();
mMixedMode = MixedMode.UNKNOWN;
mTrackingMode = TrackingMode.UNKNOWN;
}
private void resetIdentityData() {
mSecurityMode = SecurityMode.UNKNOWN;
mHost = null;
mOwner = null;
mSupplemental = null;
@ -67,20 +136,40 @@ public class SiteIdentity {
void update(JSONObject identityData) {
try {
mSecurityMode = SecurityMode.fromString(identityData.getString("mode"));
} catch (Exception e) {
reset(SecurityMode.UNKNOWN);
return;
}
JSONObject mode = identityData.getJSONObject("mode");
try {
mHost = identityData.getString("host");
mOwner = identityData.getString("owner");
mSupplemental = identityData.optString("supplemental", null);
mVerifier = identityData.getString("verifier");
mEncrypted = identityData.getString("encrypted");
try {
mMixedMode = MixedMode.fromString(mode.getString("mixed"));
} catch (Exception e) {
mMixedMode = MixedMode.UNKNOWN;
}
try {
mTrackingMode = TrackingMode.fromString(mode.getString("tracking"));
} catch (Exception e) {
mTrackingMode = TrackingMode.UNKNOWN;
}
try {
mSecurityMode = SecurityMode.fromString(mode.getString("identity"));
} catch (Exception e) {
resetIdentityData();
return;
}
try {
mHost = identityData.getString("host");
mOwner = identityData.getString("owner");
mSupplemental = identityData.optString("supplemental", null);
mVerifier = identityData.getString("verifier");
mEncrypted = identityData.getString("encrypted");
} catch (Exception e) {
resetIdentityData();
}
} catch (Exception e) {
reset(mSecurityMode);
resetIdentityData();
mMixedMode = MixedMode.UNKNOWN;
mTrackingMode = TrackingMode.UNKNOWN;
}
}
@ -107,4 +196,12 @@ public class SiteIdentity {
public String getEncrypted() {
return mEncrypted;
}
}
public MixedMode getMixedMode() {
return mMixedMode;
}
public TrackingMode getTrackingMode() {
return mTrackingMode;
}
}