[tor-commits] [tor-launcher/master] Added hidden pref. to control whether Tor Launcher starts the tor process.
brade at torproject.org
brade at torproject.org
Tue Apr 9 17:02:56 UTC 2013
commit 3daaee7e03793efeaf3775d7f6bbb7128758db3c
Author: Kathy Brade <brade at torproject.org>
Date: Tue Apr 9 13:01:54 2013 -0400
Added hidden pref. to control whether Tor Launcher starts the tor process.
---
src/chrome/content/network-settings.js | 4 +---
src/components/tl-process.js | 24 ++++++++++++++++++------
src/components/tl-protocol.js | 21 +++++++++++++--------
src/defaults/preferences/prefs.js | 1 +
4 files changed, 33 insertions(+), 17 deletions(-)
diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js
index 98d4ed7..a2f57ad 100644
--- a/src/chrome/content/network-settings.js
+++ b/src/chrome/content/network-settings.js
@@ -15,8 +15,6 @@ XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherUtil",
XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherLogger",
"resource://torlauncher/modules/tl-logger.jsm");
-const kPrefPromptAtStartup = "extensions.torlauncher.prompt_at_startup";
-
const kUseProxyCheckbox = "useProxy";
const kProxyTypeMenulist = "proxyType";
const kProxyAddr = "proxyAddr";
@@ -48,7 +46,7 @@ var gIsBootstrapComplete = false;
function initDialog()
{
var okBtn = document.documentElement.getButton("accept");
- gIsInitialBootstrap = TorLauncherUtil.getBoolPref(kPrefPromptAtStartup);
+ gIsInitialBootstrap = window.arguments[0];
if (gIsInitialBootstrap)
{
document.documentElement.setAttribute("class", "initialBootstrap");
diff --git a/src/components/tl-process.js b/src/components/tl-process.js
index 4067232..4d77d21 100644
--- a/src/components/tl-process.js
+++ b/src/components/tl-process.js
@@ -30,6 +30,7 @@ TorProcessService.prototype =
kServiceName : "Tor Launcher Process Service",
kClassID: Components.ID("{FE7B4CAF-BCF4-4848-8BFF-EFA66C9AFDA1}"),
+ kPrefStartTor: "extensions.torlauncher.start_tor",
kPrefPromptAtStartup: "extensions.torlauncher.prompt_at_startup",
kInitialMonitorDelayMS: 1000, // TODO: how can we avoid this delay?
kMonitorDelayMS: 200,
@@ -76,7 +77,9 @@ TorProcessService.prototype =
this.mObsSvc.addObserver(this, "quit-application-granted", false);
this.mObsSvc.addObserver(this, kOpenNetworkSettingsTopic, false);
this.mObsSvc.addObserver(this, kUserQuitTopic, false);
- this._startTor();
+
+ if (TorLauncherUtil.getBoolPref(this.kPrefStartTor))
+ this._startTor();
}
else if ("quit-application-granted" == aTopic)
{
@@ -118,7 +121,7 @@ TorProcessService.prototype =
this.mTimer.init(this, this.kMonitorDelayMS, this.mTimer.TYPE_ONE_SHOT);
}
else if (kOpenNetworkSettingsTopic == aTopic)
- this._openNetworkSettings();
+ this._openNetworkSettings(false);
else if (kUserQuitTopic == aTopic)
this.mQuitSoon = true;
},
@@ -267,7 +270,7 @@ TorProcessService.prototype =
// to delay before retry inside TorSendCommand()... which is
// difficult b/c that is a synchronous API.
if (this.mProtocolSvc)
- this._openNetworkSettings(); // Blocks until dialog is closed.
+ this._openNetworkSettings(true); // Blocks until dialog is closed.
}
else
{
@@ -332,13 +335,22 @@ TorProcessService.prototype =
}, // _checkBootstrapStatus()
// Blocks until network settings dialog is closed.
- _openNetworkSettings: function()
+ _openNetworkSettings: function(aIsInitialBootstrap)
{
- var chromeURL = "chrome://torlauncher/content/network-settings.xul";
+ const kChromeURL = "chrome://torlauncher/content/network-settings.xul";
+
var wwSvc = Cc["@mozilla.org/embedcomp/window-watcher;1"]
.getService(Ci.nsIWindowWatcher);
var winFeatures = "chrome,dialog=yes,modal,all";
- wwSvc.openWindow(null, chromeURL, "_blank", winFeatures, null);
+
+ var argsArray = Cc["@mozilla.org/array;1"]
+ .createInstance(Ci.nsIMutableArray);
+ var variant = Cc["@mozilla.org/variant;1"]
+ .createInstance(Ci.nsIWritableVariant);
+ variant.setFromVariant(aIsInitialBootstrap);
+ argsArray.appendElement(variant, false);
+
+ wwSvc.openWindow(null, kChromeURL, "_blank", winFeatures, argsArray);
},
_openProgressDialog: function()
diff --git a/src/components/tl-protocol.js b/src/components/tl-protocol.js
index 26cd983..f589472 100644
--- a/src/components/tl-protocol.js
+++ b/src/components/tl-protocol.js
@@ -71,6 +71,8 @@ TorProtocolService.prototype =
kServiceName : "Tor Launcher Protocol Service",
kClassID: Components.ID("{4F476361-23FB-43EF-A427-B36A14D3208E}"),
+ kPrefStartTor: "extensions.torlauncher.start_tor",
+
// nsISupports implementation.
QueryInterface: function(aIID)
{
@@ -429,16 +431,19 @@ TorProtocolService.prototype =
return null;
}
- // Try to become the primary controller (TAKEOWNERSHIP).
- reply = this._sendCommand(conn, "TAKEOWNERSHIP", null);
- if (!this.TorCommandSucceeded(reply))
- TorLauncherLogger.log(4, "take ownership failed");
- else
+ if (TorLauncherUtil.getBoolPref(this.kPrefStartTor))
{
- reply = this._sendCommand(conn, "RESETCONF",
- "__OwningControllerProcess");
+ // Try to become the primary controller (TAKEOWNERSHIP).
+ reply = this._sendCommand(conn, "TAKEOWNERSHIP", null);
if (!this.TorCommandSucceeded(reply))
- TorLauncherLogger.log(4, "clear owning controller process failed");
+ TorLauncherLogger.log(4, "take ownership failed");
+ else
+ {
+ reply = this._sendCommand(conn, "RESETCONF",
+ "__OwningControllerProcess");
+ if (!this.TorCommandSucceeded(reply))
+ TorLauncherLogger.log(4, "clear owning controller process failed");
+ }
}
}
catch(e)
diff --git a/src/defaults/preferences/prefs.js b/src/defaults/preferences/prefs.js
index 68613b5..d9ea4d1 100644
--- a/src/defaults/preferences/prefs.js
+++ b/src/defaults/preferences/prefs.js
@@ -4,6 +4,7 @@ pref("extensions.torlauncher.logmethod", 1); // 0=stdout, 1=errorconsole, 2=deb
pref("extensions.torlauncher.control_host", "127.0.0.1");
pref("extensions.torlauncher.control_port", 9151);
+pref("extensions.torlauncher.start_tor", true);
pref("extensions.torlauncher.prompt_at_startup", true);
// All path prefs. are relative to the firefox executable's directory
More information about the tor-commits
mailing list