| ... |
... |
@@ -7,6 +7,8 @@ ChromeUtils.defineESModuleGetters(lazy, { |
|
7
|
7
|
EventDispatcher: "resource://gre/modules/Messaging.sys.mjs",
|
|
8
|
8
|
TorConnect: "moz-src:///toolkit/modules/TorConnect.sys.mjs",
|
|
9
|
9
|
TorConnectTopics: "moz-src:///toolkit/modules/TorConnect.sys.mjs",
|
|
|
10
|
+ TorDomainIsolator:
|
|
|
11
|
+ "moz-src:///toolkit/components/tor-launcher/TorDomainIsolator.sys.mjs",
|
|
10
|
12
|
TorSettingsTopics: "moz-src:///toolkit/modules/TorSettings.sys.mjs",
|
|
11
|
13
|
TorProviderBuilder:
|
|
12
|
14
|
"moz-src:///toolkit/components/tor-launcher/TorProviderBuilder.sys.mjs",
|
| ... |
... |
@@ -62,7 +64,7 @@ class TorAndroidIntegrationImpl { |
|
62
|
64
|
/**
|
|
63
|
65
|
* Register our listeners.
|
|
64
|
66
|
* We want this function to block GeckoView initialization, so it should not be
|
|
65
|
|
- * async. Any async task should be moved to #deferredInit, instead.
|
|
|
67
|
+ * async.
|
|
66
|
68
|
*/
|
|
67
|
69
|
init() {
|
|
68
|
70
|
if (this.#initialized) {
|
| ... |
... |
@@ -86,26 +88,21 @@ class TorAndroidIntegrationImpl { |
|
86
|
88
|
Services.obs.addObserver(this, lazy.TorSettingsTopics[topic]);
|
|
87
|
89
|
}
|
|
88
|
90
|
|
|
|
91
|
+ // Match the initialisation order from desktop's TorStartupService.
|
|
|
92
|
+ lazy.TorSettings.init().catch(error => {
|
|
|
93
|
+ logger.error("Cannot initailize TorSettings", error);
|
|
|
94
|
+ });
|
|
|
95
|
+
|
|
89
|
96
|
lazy.TorProviderBuilder.init();
|
|
|
97
|
+
|
|
|
98
|
+ lazy.TorConnect.init();
|
|
|
99
|
+
|
|
|
100
|
+ lazy.TorDomainIsolator.init();
|
|
|
101
|
+
|
|
90
|
102
|
// On Android immediately call firstWindowLoaded. This should be safe to
|
|
91
|
103
|
// call since it will await the initialisation of the TorProvider set up
|
|
92
|
104
|
// by TorProviderBuilder.init.
|
|
93
|
105
|
lazy.TorProviderBuilder.firstWindowLoaded();
|
|
94
|
|
-
|
|
95
|
|
- this.#deferredInit();
|
|
96
|
|
- }
|
|
97
|
|
-
|
|
98
|
|
- /**
|
|
99
|
|
- * Perform our init tasks that should not block the initialization of
|
|
100
|
|
- * GeckoView. This function will not be awaited, so errors can only be logged.
|
|
101
|
|
- */
|
|
102
|
|
- async #deferredInit() {
|
|
103
|
|
- try {
|
|
104
|
|
- await lazy.TorSettings.init();
|
|
105
|
|
- await lazy.TorConnect.init();
|
|
106
|
|
- } catch (e) {
|
|
107
|
|
- logger.error("Cannot initialize TorSettings or TorConnect", e);
|
|
108
|
|
- }
|
|
109
|
106
|
}
|
|
110
|
107
|
|
|
111
|
108
|
observe(subj, topic) {
|