2013-12-12 04:28:15 +04:00
|
|
|
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
|
|
|
|
package org.mozilla.gecko;
|
|
|
|
|
2015-06-11 00:57:38 +03:00
|
|
|
import android.util.Log;
|
2013-12-12 04:28:15 +04:00
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
|
|
import android.text.TextUtils;
|
|
|
|
|
|
|
|
public class SiteIdentity {
|
2015-06-11 00:57:38 +03:00
|
|
|
private final String LOGTAG = "GeckoSiteIdentity";
|
2013-12-12 04:28:15 +04:00
|
|
|
private SecurityMode mSecurityMode;
|
2015-08-06 04:10:24 +03:00
|
|
|
private boolean mSecure;
|
|
|
|
private MixedMode mMixedModeActive;
|
|
|
|
private MixedMode mMixedModeDisplay;
|
2014-11-11 23:03:43 +03:00
|
|
|
private TrackingMode mTrackingMode;
|
2013-12-12 04:28:15 +04:00
|
|
|
private String mHost;
|
|
|
|
private String mOwner;
|
|
|
|
private String mSupplemental;
|
|
|
|
private String mVerifier;
|
2015-06-11 00:57:38 +03:00
|
|
|
private String mOrigin;
|
2013-12-12 04:28:15 +04:00
|
|
|
|
2014-11-11 23:03:43 +03:00
|
|
|
// The order of the items here relate to image levels in
|
|
|
|
// site_security_level.xml
|
2013-12-12 04:28:15 +04:00
|
|
|
public enum SecurityMode {
|
|
|
|
UNKNOWN("unknown"),
|
|
|
|
IDENTIFIED("identified"),
|
2014-11-11 23:03:43 +03:00
|
|
|
VERIFIED("verified");
|
2013-12-12 04:28:15 +04:00
|
|
|
|
|
|
|
private final String mId;
|
|
|
|
|
|
|
|
private SecurityMode(String id) {
|
|
|
|
mId = id;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static SecurityMode fromString(String id) {
|
|
|
|
if (id == null) {
|
|
|
|
throw new IllegalArgumentException("Can't convert null String to SiteIdentity");
|
|
|
|
}
|
|
|
|
|
|
|
|
for (SecurityMode mode : SecurityMode.values()) {
|
|
|
|
if (TextUtils.equals(mode.mId, id.toLowerCase())) {
|
|
|
|
return mode;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
throw new IllegalArgumentException("Could not convert String id to SiteIdentity");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
return mId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-11-11 23:03:43 +03:00
|
|
|
// The order of the items here relate to image levels in
|
|
|
|
// site_security_level.xml
|
|
|
|
public enum MixedMode {
|
|
|
|
UNKNOWN("unknown"),
|
2015-08-06 04:10:24 +03:00
|
|
|
MIXED_CONTENT_BLOCKED("blocked"),
|
|
|
|
MIXED_CONTENT_LOADED("loaded");
|
2014-11-11 23:03:43 +03:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-12-12 04:28:15 +04:00
|
|
|
public SiteIdentity() {
|
2015-03-10 08:37:17 +03:00
|
|
|
reset();
|
2013-12-12 04:28:15 +04:00
|
|
|
}
|
|
|
|
|
2015-03-12 23:21:43 +03:00
|
|
|
public void resetIdentity() {
|
2014-11-11 23:03:43 +03:00
|
|
|
mSecurityMode = SecurityMode.UNKNOWN;
|
2015-06-11 00:57:38 +03:00
|
|
|
mOrigin = null;
|
2013-12-12 04:28:15 +04:00
|
|
|
mHost = null;
|
|
|
|
mOwner = null;
|
|
|
|
mSupplemental = null;
|
|
|
|
mVerifier = null;
|
2015-08-06 04:10:24 +03:00
|
|
|
mSecure = false;
|
2015-03-12 23:21:43 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public void reset() {
|
|
|
|
resetIdentity();
|
2015-08-06 04:10:24 +03:00
|
|
|
mMixedModeActive = MixedMode.UNKNOWN;
|
|
|
|
mMixedModeDisplay = MixedMode.UNKNOWN;
|
2015-03-10 08:37:17 +03:00
|
|
|
mTrackingMode = TrackingMode.UNKNOWN;
|
2013-12-12 04:28:15 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
void update(JSONObject identityData) {
|
2015-03-10 08:37:17 +03:00
|
|
|
if (identityData == null) {
|
|
|
|
reset();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2013-12-12 04:28:15 +04:00
|
|
|
try {
|
2014-11-11 23:03:43 +03:00
|
|
|
JSONObject mode = identityData.getJSONObject("mode");
|
2013-12-12 04:28:15 +04:00
|
|
|
|
2014-11-11 23:03:43 +03:00
|
|
|
try {
|
2015-08-06 04:10:24 +03:00
|
|
|
mMixedModeDisplay = MixedMode.fromString(mode.getString("mixed_display"));
|
2014-11-11 23:03:43 +03:00
|
|
|
} catch (Exception e) {
|
2015-08-06 04:10:24 +03:00
|
|
|
mMixedModeDisplay = MixedMode.UNKNOWN;
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
mMixedModeActive = MixedMode.fromString(mode.getString("mixed_active"));
|
|
|
|
} catch (Exception e) {
|
|
|
|
mMixedModeActive = MixedMode.UNKNOWN;
|
2014-11-11 23:03:43 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
mTrackingMode = TrackingMode.fromString(mode.getString("tracking"));
|
|
|
|
} catch (Exception e) {
|
|
|
|
mTrackingMode = TrackingMode.UNKNOWN;
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
|
|
|
mSecurityMode = SecurityMode.fromString(mode.getString("identity"));
|
|
|
|
} catch (Exception e) {
|
2015-03-12 23:21:43 +03:00
|
|
|
resetIdentity();
|
2014-11-11 23:03:43 +03:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
try {
|
2015-06-11 00:57:38 +03:00
|
|
|
mOrigin = identityData.getString("origin");
|
2014-11-11 23:03:43 +03:00
|
|
|
mHost = identityData.getString("host");
|
2014-11-26 21:57:09 +03:00
|
|
|
mOwner = identityData.optString("owner", null);
|
2014-11-11 23:03:43 +03:00
|
|
|
mSupplemental = identityData.optString("supplemental", null);
|
|
|
|
mVerifier = identityData.getString("verifier");
|
2015-08-06 04:10:24 +03:00
|
|
|
mSecure = identityData.optBoolean("secure", false);
|
2014-11-11 23:03:43 +03:00
|
|
|
} catch (Exception e) {
|
2015-03-12 23:21:43 +03:00
|
|
|
resetIdentity();
|
2014-11-11 23:03:43 +03:00
|
|
|
}
|
2013-12-12 04:28:15 +04:00
|
|
|
} catch (Exception e) {
|
2015-03-10 08:37:17 +03:00
|
|
|
reset();
|
2013-12-12 04:28:15 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public SecurityMode getSecurityMode() {
|
|
|
|
return mSecurityMode;
|
|
|
|
}
|
|
|
|
|
2015-06-11 00:57:38 +03:00
|
|
|
public String getOrigin() {
|
|
|
|
return mOrigin;
|
|
|
|
}
|
|
|
|
|
2013-12-12 04:28:15 +04:00
|
|
|
public String getHost() {
|
|
|
|
return mHost;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getOwner() {
|
|
|
|
return mOwner;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getSupplemental() {
|
|
|
|
return mSupplemental;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getVerifier() {
|
|
|
|
return mVerifier;
|
|
|
|
}
|
|
|
|
|
2015-08-06 04:10:24 +03:00
|
|
|
public boolean isSecure() {
|
|
|
|
return mSecure;
|
|
|
|
}
|
|
|
|
|
|
|
|
public MixedMode getMixedModeActive() {
|
|
|
|
return mMixedModeActive;
|
2013-12-12 04:28:15 +04:00
|
|
|
}
|
2014-11-11 23:03:43 +03:00
|
|
|
|
2015-08-06 04:10:24 +03:00
|
|
|
public MixedMode getMixedModeDisplay() {
|
|
|
|
return mMixedModeDisplay;
|
2014-11-11 23:03:43 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public TrackingMode getTrackingMode() {
|
|
|
|
return mTrackingMode;
|
|
|
|
}
|
|
|
|
}
|