Loading mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorAndroidIntegration.java +11 −2 Changes for mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorAndroidIntegration.java: 11 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ public class TorAndroidIntegration implements BundleEventListener { private static final String EVENT_TOR_STOP = "GeckoView:Tor:StopTor"; private static final String EVENT_MEEK_START = "GeckoView:Tor:StartMeek"; private static final String EVENT_MEEK_STOP = "GeckoView:Tor:StopMeek"; private static final String EVENT_CONNECT_STATE_CHANGED = "GeckoView:Tor:ConnectStateChanged"; private static final String EVENT_CONNECT_STATE_CHANGED = "GeckoView:Tor:ConnectStateChanged"; // deprecation path private static final String EVENT_CONNECT_STAGE_CHANGED = "GeckoView:Tor:ConnectStageChanged"; // replacement path private static final String EVENT_CONNECT_ERROR = "GeckoView:Tor:ConnectError"; private static final String EVENT_BOOTSTRAP_PROGRESS = "GeckoView:Tor:BootstrapProgress"; private static final String EVENT_BOOTSTRAP_COMPLETE = "GeckoView:Tor:BootstrapComplete"; Loading Loading @@ -114,6 +115,7 @@ public class TorAndroidIntegration implements BundleEventListener { EVENT_SETTINGS_READY, EVENT_SETTINGS_CHANGED, EVENT_CONNECT_STATE_CHANGED, EVENT_CONNECT_STAGE_CHANGED, EVENT_CONNECT_ERROR, EVENT_BOOTSTRAP_PROGRESS, EVENT_BOOTSTRAP_COMPLETE, Loading Loading @@ -150,6 +152,11 @@ public class TorAndroidIntegration implements BundleEventListener { for (BootstrapStateChangeListener listener : mBootstrapStateListeners) { listener.onBootstrapStateChange(state); } } else if (EVENT_CONNECT_STAGE_CHANGED.equals(event)) { TorConnectStage stage = new TorConnectStage(message.getBundle("stage")); for (BootstrapStateChangeListener listener : mBootstrapStateListeners) { listener.onBootstrapStageChange(stage); } } else if (EVENT_CONNECT_ERROR.equals(event)) { String code = message.getString("code"); String msg = message.getString("message"); Loading Loading @@ -629,7 +636,9 @@ public class TorAndroidIntegration implements BundleEventListener { } public interface BootstrapStateChangeListener { void onBootstrapStateChange(String state); void onBootstrapStateChange(String state); // depreaction path void onBootstrapStageChange(TorConnectStage stage); // new upgrade void onBootstrapProgress(double progress, boolean hasWarnings); Loading mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorBootstrappingStatus.java 0 → 100644 +14 −0 Changes for mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorBootstrappingStatus.java: 14 added lines, 0 removed lines. Original line number Diff line number Diff line package org.mozilla.geckoview; import org.mozilla.gecko.util.GeckoBundle; // Class to receive BootstrappingStatus object from TorConnect.sys.mjs ~ln698 public class TorBootstrappingStatus { public int progress; // percent of bootstrap progress public boolean hasWarning; // Whether this bootstrap has a warning in the tor log public TorBootstrappingStatus(GeckoBundle bundle) { progress = bundle.getInt("progress"); hasWarning = bundle.getBoolean("hasWarning"); } } mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStage.java 0 → 100644 +48 −0 Changes for mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStage.java: 48 added lines, 0 removed lines. Original line number Diff line number Diff line package org.mozilla.geckoview; import org.mozilla.gecko.util.GeckoBundle; // Class to receive ConnectStage object from TorConnect.sys.mjs ~ln677 public class TorConnectStage { public class Error { public String code; public String message; public String phase; public String reason; public Error(GeckoBundle bundle) { code = bundle.getString("code"); message = bundle.getString("message"); phase = bundle.getString("phase"); reason = bundle.getString("reason"); } } public TorConnectStageName name; // The TorConnectStage prior to this bootstrap attempt. Only set during the "Bootstrapping" stage. public TorConnectStageName bootstrapTrigger; public Error error; public String defaultRegion; public Boolean potentiallyBlocked; public Boolean tryAgain; public TorBootstrappingStatus bootstrappingStatus; public TorConnectStage(GeckoBundle bundle) { name = TorConnectStageName.fromString(bundle.getString("name")); if (bundle.getString("bootstrapTrigger") != null) { bootstrapTrigger = TorConnectStageName.fromString(bundle.getString("bootstrapTrigger")); } defaultRegion = bundle.getString("defaultRegion"); potentiallyBlocked = bundle.getBoolean("potentiallyBlocked"); tryAgain = bundle.getBoolean("tryAgain"); if (bundle.getBundle("error") != null) { error = new Error(bundle.getBundle("error")); } bootstrappingStatus = new TorBootstrappingStatus(bundle.getBundle("bootstrappingStatus")); } public Boolean isBootstrapped() { return name.isBootstrapped(); } } mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStageName.java 0 → 100644 +43 −0 Changes for mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStageName.java: 43 added lines, 0 removed lines. Original line number Diff line number Diff line package org.mozilla.geckoview; import java.security.InvalidParameterException; public enum TorConnectStageName { // These names should match entries from TorConnectStage in TorConnect.sys.mjs at ~ln163. Disabled("Disabled"), Loading("Loading"), Start("Start"), Bootstrapping("Bootstrapping"), Offline("Offline"), ChooseRegion("ChooseRegion"), RegionNotFound("RegionNotFound"), ConfirmRegion("ConfirmRegion"), FinalError("FinalError"), Bootstrapped("Bootstrapped"); private String valueText; TorConnectStageName(String valueText) { this.valueText = valueText; } public Boolean isBootstrapped() { return this == Bootstrapped; } public String getString() { return this.valueText; } public static TorConnectStageName fromString(String text) { for (TorConnectStageName tcs : TorConnectStageName.values()) { if (tcs.valueText.equalsIgnoreCase(text)) { return tcs; } } if (BuildConfig.BUILD_TYPE == "debug") { throw new InvalidParameterException("Unknown TorConnectStageName " + text); } return null; } } toolkit/modules/TorAndroidIntegration.sys.mjs +8 −1 Changes for toolkit/modules/TorAndroidIntegration.sys.mjs: 8 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -25,7 +25,8 @@ const logger = console.createInstance({ const EmittedEvents = Object.freeze({ settingsReady: "GeckoView:Tor:SettingsReady", settingsChanged: "GeckoView:Tor:SettingsChanged", connectStateChanged: "GeckoView:Tor:ConnectStateChanged", connectStateChanged: "GeckoView:Tor:ConnectStateChanged", // deprecation path connectStageChanged: "GeckoView:Tor:ConnectStageChanged", // new replacement path connectError: "GeckoView:Tor:ConnectError", bootstrapProgress: "GeckoView:Tor:BootstrapProgress", bootstrapComplete: "GeckoView:Tor:BootstrapComplete", Loading Loading @@ -106,6 +107,12 @@ class TorAndroidIntegrationImpl { state: subj.wrappedJSObject.state ?? "", }); break; case lazy.TorConnectTopics.StageChange: lazy.EventDispatcher.instance.sendRequest({ type: EmittedEvents.connectStageChanged, stage: subj.wrappedJSObject ?? "", }); break; case lazy.TorConnectTopics.BootstrapProgress: lazy.EventDispatcher.instance.sendRequest({ type: EmittedEvents.bootstrapProgress, Loading Loading
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorAndroidIntegration.java +11 −2 Changes for mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorAndroidIntegration.java: 11 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -37,7 +37,8 @@ public class TorAndroidIntegration implements BundleEventListener { private static final String EVENT_TOR_STOP = "GeckoView:Tor:StopTor"; private static final String EVENT_MEEK_START = "GeckoView:Tor:StartMeek"; private static final String EVENT_MEEK_STOP = "GeckoView:Tor:StopMeek"; private static final String EVENT_CONNECT_STATE_CHANGED = "GeckoView:Tor:ConnectStateChanged"; private static final String EVENT_CONNECT_STATE_CHANGED = "GeckoView:Tor:ConnectStateChanged"; // deprecation path private static final String EVENT_CONNECT_STAGE_CHANGED = "GeckoView:Tor:ConnectStageChanged"; // replacement path private static final String EVENT_CONNECT_ERROR = "GeckoView:Tor:ConnectError"; private static final String EVENT_BOOTSTRAP_PROGRESS = "GeckoView:Tor:BootstrapProgress"; private static final String EVENT_BOOTSTRAP_COMPLETE = "GeckoView:Tor:BootstrapComplete"; Loading Loading @@ -114,6 +115,7 @@ public class TorAndroidIntegration implements BundleEventListener { EVENT_SETTINGS_READY, EVENT_SETTINGS_CHANGED, EVENT_CONNECT_STATE_CHANGED, EVENT_CONNECT_STAGE_CHANGED, EVENT_CONNECT_ERROR, EVENT_BOOTSTRAP_PROGRESS, EVENT_BOOTSTRAP_COMPLETE, Loading Loading @@ -150,6 +152,11 @@ public class TorAndroidIntegration implements BundleEventListener { for (BootstrapStateChangeListener listener : mBootstrapStateListeners) { listener.onBootstrapStateChange(state); } } else if (EVENT_CONNECT_STAGE_CHANGED.equals(event)) { TorConnectStage stage = new TorConnectStage(message.getBundle("stage")); for (BootstrapStateChangeListener listener : mBootstrapStateListeners) { listener.onBootstrapStageChange(stage); } } else if (EVENT_CONNECT_ERROR.equals(event)) { String code = message.getString("code"); String msg = message.getString("message"); Loading Loading @@ -629,7 +636,9 @@ public class TorAndroidIntegration implements BundleEventListener { } public interface BootstrapStateChangeListener { void onBootstrapStateChange(String state); void onBootstrapStateChange(String state); // depreaction path void onBootstrapStageChange(TorConnectStage stage); // new upgrade void onBootstrapProgress(double progress, boolean hasWarnings); Loading
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorBootstrappingStatus.java 0 → 100644 +14 −0 Changes for mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorBootstrappingStatus.java: 14 added lines, 0 removed lines. Original line number Diff line number Diff line package org.mozilla.geckoview; import org.mozilla.gecko.util.GeckoBundle; // Class to receive BootstrappingStatus object from TorConnect.sys.mjs ~ln698 public class TorBootstrappingStatus { public int progress; // percent of bootstrap progress public boolean hasWarning; // Whether this bootstrap has a warning in the tor log public TorBootstrappingStatus(GeckoBundle bundle) { progress = bundle.getInt("progress"); hasWarning = bundle.getBoolean("hasWarning"); } }
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStage.java 0 → 100644 +48 −0 Changes for mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStage.java: 48 added lines, 0 removed lines. Original line number Diff line number Diff line package org.mozilla.geckoview; import org.mozilla.gecko.util.GeckoBundle; // Class to receive ConnectStage object from TorConnect.sys.mjs ~ln677 public class TorConnectStage { public class Error { public String code; public String message; public String phase; public String reason; public Error(GeckoBundle bundle) { code = bundle.getString("code"); message = bundle.getString("message"); phase = bundle.getString("phase"); reason = bundle.getString("reason"); } } public TorConnectStageName name; // The TorConnectStage prior to this bootstrap attempt. Only set during the "Bootstrapping" stage. public TorConnectStageName bootstrapTrigger; public Error error; public String defaultRegion; public Boolean potentiallyBlocked; public Boolean tryAgain; public TorBootstrappingStatus bootstrappingStatus; public TorConnectStage(GeckoBundle bundle) { name = TorConnectStageName.fromString(bundle.getString("name")); if (bundle.getString("bootstrapTrigger") != null) { bootstrapTrigger = TorConnectStageName.fromString(bundle.getString("bootstrapTrigger")); } defaultRegion = bundle.getString("defaultRegion"); potentiallyBlocked = bundle.getBoolean("potentiallyBlocked"); tryAgain = bundle.getBoolean("tryAgain"); if (bundle.getBundle("error") != null) { error = new Error(bundle.getBundle("error")); } bootstrappingStatus = new TorBootstrappingStatus(bundle.getBundle("bootstrappingStatus")); } public Boolean isBootstrapped() { return name.isBootstrapped(); } }
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStageName.java 0 → 100644 +43 −0 Changes for mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorConnectStageName.java: 43 added lines, 0 removed lines. Original line number Diff line number Diff line package org.mozilla.geckoview; import java.security.InvalidParameterException; public enum TorConnectStageName { // These names should match entries from TorConnectStage in TorConnect.sys.mjs at ~ln163. Disabled("Disabled"), Loading("Loading"), Start("Start"), Bootstrapping("Bootstrapping"), Offline("Offline"), ChooseRegion("ChooseRegion"), RegionNotFound("RegionNotFound"), ConfirmRegion("ConfirmRegion"), FinalError("FinalError"), Bootstrapped("Bootstrapped"); private String valueText; TorConnectStageName(String valueText) { this.valueText = valueText; } public Boolean isBootstrapped() { return this == Bootstrapped; } public String getString() { return this.valueText; } public static TorConnectStageName fromString(String text) { for (TorConnectStageName tcs : TorConnectStageName.values()) { if (tcs.valueText.equalsIgnoreCase(text)) { return tcs; } } if (BuildConfig.BUILD_TYPE == "debug") { throw new InvalidParameterException("Unknown TorConnectStageName " + text); } return null; } }
toolkit/modules/TorAndroidIntegration.sys.mjs +8 −1 Changes for toolkit/modules/TorAndroidIntegration.sys.mjs: 8 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -25,7 +25,8 @@ const logger = console.createInstance({ const EmittedEvents = Object.freeze({ settingsReady: "GeckoView:Tor:SettingsReady", settingsChanged: "GeckoView:Tor:SettingsChanged", connectStateChanged: "GeckoView:Tor:ConnectStateChanged", connectStateChanged: "GeckoView:Tor:ConnectStateChanged", // deprecation path connectStageChanged: "GeckoView:Tor:ConnectStageChanged", // new replacement path connectError: "GeckoView:Tor:ConnectError", bootstrapProgress: "GeckoView:Tor:BootstrapProgress", bootstrapComplete: "GeckoView:Tor:BootstrapComplete", Loading Loading @@ -106,6 +107,12 @@ class TorAndroidIntegrationImpl { state: subj.wrappedJSObject.state ?? "", }); break; case lazy.TorConnectTopics.StageChange: lazy.EventDispatcher.instance.sendRequest({ type: EmittedEvents.connectStageChanged, stage: subj.wrappedJSObject ?? "", }); break; case lazy.TorConnectTopics.BootstrapProgress: lazy.EventDispatcher.instance.sendRequest({ type: EmittedEvents.bootstrapProgress, Loading