[tor-commits] [Git][tpo/applications/tor-browser][tor-browser-115.6.0esr-13.5-1] 3 commits: fixup! Bug 40933: Add tor-launcher functionality
Pier Angelo Vendrame (@pierov)
git at gitlab.torproject.org
Wed Dec 20 20:51:16 UTC 2023
Pier Angelo Vendrame pushed to branch tor-browser-115.6.0esr-13.5-1 at The Tor Project / Applications / Tor Browser
Commits:
8649662e by Pier Angelo Vendrame at 2023-12-20T19:16:35+01:00
fixup! Bug 40933: Add tor-launcher functionality
Removed a redundant wrappedJSObject that broke stuff.
- - - - -
7cb6472f by Pier Angelo Vendrame at 2023-12-20T21:49:35+01:00
fixup! Bug 42247: Android helpers for the TorProvider
Bug 42251: Wired bootstrap updates.
- - - - -
d980086a by Pier Angelo Vendrame at 2023-12-20T21:49:46+01:00
fixup! Temporary changes to about:torconnect for Android.
Temporary message to open Android settings from about:torconnect
- - - - -
4 changed files:
- mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java
- toolkit/components/tor-launcher/TorProvider.sys.mjs
- toolkit/modules/TorAndroidIntegration.sys.mjs
- toolkit/modules/TorConnect.sys.mjs
Changes:
=====================================
mobile/android/geckoview/src/main/java/org/mozilla/geckoview/TorIntegrationAndroid.java
=====================================
@@ -46,6 +46,11 @@ public class TorIntegrationAndroid 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_BOOTSTRAP_STATE_CHANGED = "GeckoView:Tor:BootstrapStateChanged";
+ private static final String EVENT_BOOTSTRAP_PROGRESS = "GeckoView:Tor:BootstrapProgress";
+ private static final String EVENT_BOOTSTRAP_COMPLETE = "GeckoView:Tor:BootstrapComplete";
+ private static final String EVENT_BOOTSTRAP_ERROR = "GeckoView:Tor:BootstrapError";
+ private static final String EVENT_SETTINGS_OPEN = "GeckoView:Tor:OpenSettings";
// Events we emit
private static final String EVENT_SETTINGS_GET = "GeckoView:Tor:SettingsGet";
@@ -106,7 +111,12 @@ public class TorIntegrationAndroid implements BundleEventListener {
EVENT_TOR_START,
EVENT_MEEK_START,
EVENT_MEEK_STOP,
- EVENT_SETTINGS_READY);
+ EVENT_SETTINGS_READY,
+ EVENT_BOOTSTRAP_STATE_CHANGED,
+ EVENT_BOOTSTRAP_PROGRESS,
+ EVENT_BOOTSTRAP_COMPLETE,
+ EVENT_BOOTSTRAP_ERROR,
+ EVENT_SETTINGS_OPEN);
}
@Override // BundleEventListener
@@ -122,6 +132,32 @@ public class TorIntegrationAndroid implements BundleEventListener {
stopMeek(message, callback);
} else if (EVENT_SETTINGS_READY.equals(event)) {
loadSettings(message);
+ } else if (EVENT_BOOTSTRAP_STATE_CHANGED.equals(event)) {
+ String state = message.getString("state");
+ for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
+ listener.onBootstrapStateChange(state);
+ }
+ } else if (EVENT_BOOTSTRAP_PROGRESS.equals(event)) {
+ double progress = message.getDouble("progress");
+ String status = message.getString("status");
+ boolean hasWarnings = message.getBoolean("hasWarnings");
+ for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
+ listener.onBootstrapProgress(progress, status, hasWarnings);
+ }
+ } else if (EVENT_BOOTSTRAP_COMPLETE.equals(event)) {
+ for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
+ listener.onBootstrapComplete();
+ }
+ } else if (EVENT_BOOTSTRAP_ERROR.equals(event)) {
+ String msg = message.getString("message");
+ String details = message.getString("details");
+ for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
+ listener.onBootstrapError(msg, details);
+ }
+ } else if (EVENT_SETTINGS_OPEN.equals(event)) {
+ for (BootstrapStateChangeListener listener: mBootstrapStateListeners) {
+ listener.onSettingsRequested();
+ }
}
}
@@ -467,17 +503,12 @@ public class TorIntegrationAndroid implements BundleEventListener {
}
}
- public static class BootstrapState {
- // FIXME: We can do better than this :)
- public GeckoBundle mBundle;
-
- BootstrapState(GeckoBundle bundle) {
- mBundle = bundle;
- }
- }
-
public interface BootstrapStateChangeListener {
- void onBootstrapStateChange(BootstrapState state);
+ void onBootstrapStateChange(String state);
+ void onBootstrapProgress(double progress, String status, boolean hasWarnings);
+ void onBootstrapComplete();
+ void onBootstrapError(String message, String details);
+ void onSettingsRequested();
}
public @NonNull GeckoResult<GeckoBundle> getSettings() {
@@ -514,16 +545,6 @@ public class TorIntegrationAndroid implements BundleEventListener {
return EventDispatcher.getInstance().queryVoid(EVENT_BOOTSTRAP_CANCEL);
}
- public @NonNull GeckoResult<BootstrapState> getBootstrapState() {
- return EventDispatcher.getInstance().queryBundle(EVENT_BOOTSTRAP_GET_STATE).map(new GeckoResult.OnValueMapper<>() {
- @AnyThread
- @Nullable
- public BootstrapState onValue(@Nullable GeckoBundle value) throws Throwable {
- return new BootstrapState(value);
- }
- });
- }
-
public void registerBootstrapStateChangeListener(BootstrapStateChangeListener listener) {
mBootstrapStateListeners.add(listener);
}
=====================================
toolkit/components/tor-launcher/TorProvider.sys.mjs
=====================================
@@ -875,10 +875,7 @@ export class TorProvider {
*/
#processBootstrapStatus(statusObj, isNotification) {
// Notify observers
- Services.obs.notifyObservers(
- { wrappedJSObject: statusObj },
- TorProviderTopics.BootstrapStatus
- );
+ Services.obs.notifyObservers(statusObj, TorProviderTopics.BootstrapStatus);
if (statusObj.PROGRESS === 100) {
this.#isBootstrapDone = true;
=====================================
toolkit/modules/TorAndroidIntegration.sys.mjs
=====================================
@@ -25,9 +25,13 @@ const logger = new ConsoleAPI({
prefix: "TorAndroidIntegration",
});
-const EmittedEvents = Object.freeze( {
+const EmittedEvents = Object.freeze({
settingsReady: "GeckoView:Tor:SettingsReady",
settingsChanged: "GeckoView:Tor:SettingsChanged",
+ bootstrapStateChanged: "GeckoView:Tor:BootstrapStateChanged",
+ bootstrapProgress: "GeckoView:Tor:BootstrapProgress",
+ bootstrapComplete: "GeckoView:Tor:BootstrapComplete",
+ bootstrapError: "GeckoView:Tor:BootstrapError",
});
const ListenedEvents = Object.freeze({
@@ -89,6 +93,30 @@ class TorAndroidIntegrationImpl {
}
break;
case lazy.TorConnectTopics.StateChange:
+ lazy.EventDispatcher.instance.sendRequest({
+ type: EmittedEvents.bootstrapStateChanged,
+ state: subj.wrappedJSObject.state ?? "",
+ });
+ break;
+ case lazy.TorConnectTopics.BootstrapProgress:
+ lazy.EventDispatcher.instance.sendRequest({
+ type: EmittedEvents.bootstrapProgress,
+ progress: subj.wrappedJSObject.progress ?? "",
+ status: subj.wrappedJSObject.status ?? 0,
+ hasWarnings: subj.wrappedJSObject.hasWarnings ?? false,
+ });
+ break;
+ case lazy.TorConnectTopics.BootstrapComplete:
+ lazy.EventDispatcher.instance.sendRequest({
+ type: EmittedEvents.bootstrapComplete,
+ });
+ break;
+ case lazy.TorConnectTopics.BootstrapError:
+ lazy.EventDispatcher.instance.sendRequest({
+ type: EmittedEvents.bootstrapError,
+ message: subj.wrappedJSObject.message ?? "",
+ details: subj.wrappedJSObject.details ?? "",
+ });
break;
case lazy.TorSettingsTopics.Ready:
lazy.EventDispatcher.instance.sendRequest({
=====================================
toolkit/modules/TorConnect.sys.mjs
=====================================
@@ -7,6 +7,7 @@ import { setTimeout, clearTimeout } from "resource://gre/modules/Timer.sys.mjs";
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
+ EventDispatcher: "resource://gre/modules/Messaging.sys.mjs",
MoatRPC: "resource://gre/modules/Moat.sys.mjs",
TorBootstrapRequest: "resource://gre/modules/TorBootstrapRequest.sys.mjs",
});
@@ -1092,6 +1093,12 @@ export const TorConnect = (() => {
Further external commands and helper methods
*/
openTorPreferences() {
+ if (TorLauncherUtil.isAndroid) {
+ lazy.EventDispatcher.instance.sendRequest({
+ type: "GeckoView:Tor:OpenSettings",
+ });
+ return;
+ }
const win = lazy.BrowserWindowTracker.getTopWindow();
win.switchToTabHavingURI("about:preferences#connection", true);
},
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/e9cc4840f6735d0e54a50e37a1e0a879d66f26a6...d980086af1e949a92914330e2cdab976046bf858
--
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/e9cc4840f6735d0e54a50e37a1e0a879d66f26a6...d980086af1e949a92914330e2cdab976046bf858
You're receiving this email because of your account on gitlab.torproject.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tor-commits/attachments/20231220/e4760ff6/attachment-0001.htm>
More information about the tor-commits
mailing list