mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 842290 - Make privacy preference tab always check for permanent private browsing status changing, regardless of whether pref changes apply instantly. r=ehsan
This commit is contained in:
parent
6577598005
commit
3fe5e954e6
@ -24,9 +24,7 @@ var gPrivacyPane = {
|
||||
this.initializeHistoryMode();
|
||||
this.updateHistoryModePane();
|
||||
this.updatePrivacyMicroControls();
|
||||
this.initAutoStartPrivateBrowsingObserver();
|
||||
|
||||
window.addEventListener("unload", this.removeASPBObserver.bind(this), false);
|
||||
this.initAutoStartPrivateBrowsingReverter();
|
||||
},
|
||||
|
||||
// HISTORY MODE
|
||||
@ -232,44 +230,37 @@ var gPrivacyPane = {
|
||||
// PRIVATE BROWSING
|
||||
|
||||
/**
|
||||
* Install the observer for the auto-start private browsing mode pref.
|
||||
* Initialize the starting state for the auto-start private browsing mode pref reverter.
|
||||
*/
|
||||
initAutoStartPrivateBrowsingObserver: function PPP_initAutoStartPrivateBrowsingObserver()
|
||||
initAutoStartPrivateBrowsingReverter: function PPP_initAutoStartPrivateBrowsingReverter()
|
||||
{
|
||||
let prefService = document.getElementById("privacyPreferences")
|
||||
.service
|
||||
.QueryInterface(Components.interfaces.nsIPrefBranch);
|
||||
prefService.addObserver("browser.privatebrowsing.autostart",
|
||||
this.autoStartPrivateBrowsingObserver,
|
||||
false);
|
||||
let mode = document.getElementById("historyMode");
|
||||
let autoStart = document.getElementById("privateBrowsingAutoStart");
|
||||
this._lastMode = mode.selectedIndex;
|
||||
this._lastCheckState = autoStart.hasAttribute('checked');
|
||||
},
|
||||
|
||||
/**
|
||||
* Install the observer for the auto-start private browsing mode pref.
|
||||
*/
|
||||
removeASPBObserver: function PPP_removeASPBObserver()
|
||||
{
|
||||
let prefService = document.getElementById("privacyPreferences")
|
||||
.service
|
||||
.QueryInterface(Components.interfaces.nsIPrefBranch);
|
||||
prefService.removeObserver("browser.privatebrowsing.autostart",
|
||||
this.autoStartPrivateBrowsingObserver);
|
||||
},
|
||||
_lastMode: null,
|
||||
_lasCheckState: null,
|
||||
updateAutostart: function PPP_updateAutostart() {
|
||||
let mode = document.getElementById("historyMode");
|
||||
let autoStart = document.getElementById("privateBrowsingAutoStart");
|
||||
let pref = document.getElementById("browser.privatebrowsing.autostart");
|
||||
if ((mode.value == "custom" && this._lastCheckState == autoStart.checked) ||
|
||||
(mode.value == "remember" && !this._lastCheckState) ||
|
||||
(mode.value == "dontremember" && this._lastCheckState)) {
|
||||
// These are all no-op changes, so we don't need to prompt.
|
||||
this._lastMode = mode.selectedIndex;
|
||||
this._lastCheckState = autoStart.hasAttribute('checked');
|
||||
return;
|
||||
}
|
||||
|
||||
autoStartPrivateBrowsingObserver:
|
||||
{
|
||||
QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIObserver]),
|
||||
|
||||
observe: function PPP_observe(aSubject, aTopic, aData)
|
||||
{
|
||||
if (!gPrivacyPane._shouldPromptForRestart) {
|
||||
if (!this._shouldPromptForRestart) {
|
||||
// We're performing a revert. Just let it happen.
|
||||
gPrivacyPane._shouldPromptForRestart = true;
|
||||
return;
|
||||
}
|
||||
|
||||
const Cc = Components.classes, Ci = Components.interfaces;
|
||||
let pref = document.getElementById("browser.privatebrowsing.autostart");
|
||||
let brandName = document.getElementById("bundleBrand").getString("brandShortName");
|
||||
let bundle = document.getElementById("bundlePreferences");
|
||||
let msg = bundle.getFormattedString(pref.value ?
|
||||
@ -286,24 +277,25 @@ var gPrivacyPane = {
|
||||
shouldProceed = !cancelQuit.data;
|
||||
|
||||
if (shouldProceed) {
|
||||
document.documentElement.acceptDialog();
|
||||
let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"]
|
||||
.getService(Ci.nsIAppStartup);
|
||||
appStartup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
|
||||
return;
|
||||
}
|
||||
}
|
||||
gPrivacyPane._shouldPromptForRestart = false;
|
||||
pref.value = !pref.value;
|
||||
|
||||
let mode = document.getElementById("historyMode");
|
||||
if (mode.value != "custom") {
|
||||
mode.selectedIndex = pref.value ? 1 : 0;
|
||||
mode.doCommand();
|
||||
this._shouldPromptForRestart = false;
|
||||
|
||||
if (this._lastCheckState) {
|
||||
autoStart.checked = "checked";
|
||||
} else {
|
||||
let rememberHistoryCheckbox = document.getElementById("rememberHistory");
|
||||
rememberHistory.checked = pref.value;
|
||||
autoStart.removeAttribute('checked');
|
||||
}
|
||||
}
|
||||
mode.selectedIndex = this._lastMode;
|
||||
mode.doCommand();
|
||||
|
||||
this._shouldPromptForRestart = true;
|
||||
},
|
||||
|
||||
// HISTORY
|
||||
|
@ -61,7 +61,6 @@
|
||||
<preference id="browser.privatebrowsing.autostart"
|
||||
name="browser.privatebrowsing.autostart"
|
||||
onchange="gPrivacyPane.updatePrivacyMicroControls();"
|
||||
instantApply="true"
|
||||
type="bool"/>
|
||||
|
||||
</preferences>
|
||||
@ -101,7 +100,8 @@
|
||||
<menulist id="historyMode"
|
||||
oncommand="gPrivacyPane.updateHistoryModePane();
|
||||
gPrivacyPane.updateHistoryModePrefs();
|
||||
gPrivacyPane.updatePrivacyMicroControls();">
|
||||
gPrivacyPane.updatePrivacyMicroControls();
|
||||
gPrivacyPane.updateAutostart();">
|
||||
<menupopup>
|
||||
<menuitem label="&historyHeader.remember.label;" value="remember"/>
|
||||
<menuitem label="&historyHeader.dontremember.label;" value="dontremember"/>
|
||||
@ -148,7 +148,8 @@
|
||||
<checkbox id="privateBrowsingAutoStart"
|
||||
label="&privateBrowsingPermanent2.label;"
|
||||
accesskey="&privateBrowsingPermanent2.accesskey;"
|
||||
preference="browser.privatebrowsing.autostart"/>
|
||||
preference="browser.privatebrowsing.autostart"
|
||||
oncommand="gPrivacyPane.updateAutostart()"/>
|
||||
|
||||
<vbox class="indent">
|
||||
<checkbox id="rememberHistory"
|
||||
|
@ -27,9 +27,7 @@ var gPrivacyPane = {
|
||||
this.initializeHistoryMode();
|
||||
this.updateHistoryModePane();
|
||||
this.updatePrivacyMicroControls();
|
||||
this.initAutoStartPrivateBrowsingObserver();
|
||||
|
||||
window.addEventListener("unload", this.removeASPBObserver.bind(this), false);
|
||||
this.initAutoStartPrivateBrowsingReverter();
|
||||
},
|
||||
|
||||
// HISTORY MODE
|
||||
@ -235,44 +233,37 @@ var gPrivacyPane = {
|
||||
// PRIVATE BROWSING
|
||||
|
||||
/**
|
||||
* Install the observer for the auto-start private browsing mode pref.
|
||||
* Initialize the starting state for the auto-start private browsing mode pref reverter.
|
||||
*/
|
||||
initAutoStartPrivateBrowsingObserver: function PPP_initAutoStartPrivateBrowsingObserver()
|
||||
initAutoStartPrivateBrowsingReverter: function PPP_initAutoStartPrivateBrowsingReverter()
|
||||
{
|
||||
let prefService = document.getElementById("privacyPreferences")
|
||||
.service
|
||||
.QueryInterface(Components.interfaces.nsIPrefBranch);
|
||||
prefService.addObserver("browser.privatebrowsing.autostart",
|
||||
this.autoStartPrivateBrowsingObserver,
|
||||
false);
|
||||
let mode = document.getElementById("historyMode");
|
||||
let autoStart = document.getElementById("privateBrowsingAutoStart");
|
||||
this._lastMode = mode.selectedIndex;
|
||||
this._lastCheckState = autoStart.hasAttribute('checked');
|
||||
},
|
||||
|
||||
/**
|
||||
* Install the observer for the auto-start private browsing mode pref.
|
||||
*/
|
||||
removeASPBObserver: function PPP_removeASPBObserver()
|
||||
{
|
||||
let prefService = document.getElementById("privacyPreferences")
|
||||
.service
|
||||
.QueryInterface(Components.interfaces.nsIPrefBranch);
|
||||
prefService.removeObserver("browser.privatebrowsing.autostart",
|
||||
this.autoStartPrivateBrowsingObserver);
|
||||
},
|
||||
_lastMode: null,
|
||||
_lasCheckState: null,
|
||||
updateAutostart: function PPP_updateAutostart() {
|
||||
let mode = document.getElementById("historyMode");
|
||||
let autoStart = document.getElementById("privateBrowsingAutoStart");
|
||||
let pref = document.getElementById("browser.privatebrowsing.autostart");
|
||||
if ((mode.value == "custom" && this._lastCheckState == autoStart.checked) ||
|
||||
(mode.value == "remember" && !this._lastCheckState) ||
|
||||
(mode.value == "dontremember" && this._lastCheckState)) {
|
||||
// These are all no-op changes, so we don't need to prompt.
|
||||
this._lastMode = mode.selectedIndex;
|
||||
this._lastCheckState = autoStart.hasAttribute('checked');
|
||||
return;
|
||||
}
|
||||
|
||||
autoStartPrivateBrowsingObserver:
|
||||
{
|
||||
QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIObserver]),
|
||||
|
||||
observe: function PPP_observe(aSubject, aTopic, aData)
|
||||
{
|
||||
if (!gPrivacyPane._shouldPromptForRestart) {
|
||||
if (!this._shouldPromptForRestart) {
|
||||
// We're performing a revert. Just let it happen.
|
||||
gPrivacyPane._shouldPromptForRestart = true;
|
||||
return;
|
||||
}
|
||||
|
||||
const Cc = Components.classes, Ci = Components.interfaces;
|
||||
let pref = document.getElementById("browser.privatebrowsing.autostart");
|
||||
let brandName = document.getElementById("bundleBrand").getString("brandShortName");
|
||||
let bundle = document.getElementById("bundlePreferences");
|
||||
let msg = bundle.getFormattedString(pref.value ?
|
||||
@ -289,24 +280,25 @@ var gPrivacyPane = {
|
||||
shouldProceed = !cancelQuit.data;
|
||||
|
||||
if (shouldProceed) {
|
||||
document.documentElement.acceptDialog();
|
||||
let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"]
|
||||
.getService(Ci.nsIAppStartup);
|
||||
appStartup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
|
||||
return;
|
||||
}
|
||||
}
|
||||
gPrivacyPane._shouldPromptForRestart = false;
|
||||
pref.value = !pref.value;
|
||||
|
||||
let mode = document.getElementById("historyMode");
|
||||
if (mode.value != "custom") {
|
||||
mode.selectedIndex = pref.value ? 1 : 0;
|
||||
mode.doCommand();
|
||||
this._shouldPromptForRestart = false;
|
||||
|
||||
if (this._lastCheckState) {
|
||||
autoStart.checked = "checked";
|
||||
} else {
|
||||
let rememberHistoryCheckbox = document.getElementById("rememberHistory");
|
||||
rememberHistory.checked = pref.value;
|
||||
autoStart.removeAttribute('checked');
|
||||
}
|
||||
}
|
||||
mode.selectedIndex = this._lastMode;
|
||||
mode.doCommand();
|
||||
|
||||
this._shouldPromptForRestart = true;
|
||||
},
|
||||
|
||||
// HISTORY
|
||||
|
@ -73,7 +73,6 @@
|
||||
<preference id="browser.privatebrowsing.autostart"
|
||||
name="browser.privatebrowsing.autostart"
|
||||
onchange="gPrivacyPane.updatePrivacyMicroControls();"
|
||||
instantApply="true"
|
||||
type="bool"/>
|
||||
|
||||
</preferences>
|
||||
@ -113,7 +112,8 @@
|
||||
<menulist id="historyMode"
|
||||
oncommand="gPrivacyPane.updateHistoryModePane();
|
||||
gPrivacyPane.updateHistoryModePrefs();
|
||||
gPrivacyPane.updatePrivacyMicroControls();">
|
||||
gPrivacyPane.updatePrivacyMicroControls();
|
||||
gPrivacyPane.updateAutostart();">
|
||||
<menupopup>
|
||||
<menuitem label="&historyHeader.remember.label;" value="remember"/>
|
||||
<menuitem label="&historyHeader.dontremember.label;" value="dontremember"/>
|
||||
@ -160,7 +160,8 @@
|
||||
<checkbox id="privateBrowsingAutoStart" class="indent"
|
||||
label="&privateBrowsingPermanent2.label;"
|
||||
accesskey="&privateBrowsingPermanent2.accesskey;"
|
||||
preference="browser.privatebrowsing.autostart"/>
|
||||
preference="browser.privatebrowsing.autostart"
|
||||
oncommand="gPrivacyPane.updateAutostart()"/>
|
||||
|
||||
<vbox class="indent">
|
||||
<vbox class="indent">
|
||||
|
Loading…
Reference in New Issue
Block a user