Skip to content

Commit

Permalink
Added back preference window.
Browse files Browse the repository at this point in the history
The preference window was removed in 42.0 code base, We have restored
this feature and updated it to reflect the changes made in the
in-content.

This feature will be maintained for as long as we deem possible.

Notes: Modifications to sync options may cause issues further down.
  • Loading branch information
InternalError503 committed Oct 2, 2015
1 parent 9ba6779 commit 351d7e1
Show file tree
Hide file tree
Showing 27 changed files with 7,671 additions and 62 deletions.
9 changes: 4 additions & 5 deletions browser/app/profile/firefox.js
Expand Up @@ -848,11 +848,7 @@ pref("plugin.state.npnisp", 2);
pref("plugin.state.iprint", 2);
#endif

#ifdef XP_MACOSX
pref("browser.preferences.animateFadeIn", true);
#else
pref("browser.preferences.animateFadeIn", false);
#endif

#ifdef XP_WIN
pref("browser.preferences.instantApply", false);
Expand Down Expand Up @@ -2059,4 +2055,7 @@ pref("browser.flash-protected-mode-flip.done", false);
pref("browser.selfsupport.url", "");

// Defines the url to be used for new tabs.
pref("browser.newtab.url", "about:newtab");
pref("browser.newtab.url", "about:newtab");

// Toggles between the two Preferences implementations, pop-up window and in-content
pref("browser.preferences.inContent", true);
87 changes: 53 additions & 34 deletions browser/base/content/utilityOverlay.js
Expand Up @@ -545,45 +545,64 @@ function openPreferences(paneID, extraArgs)
return (aName || "").replace(/^pane./, function(toReplace) { return toReplace[4].toLowerCase(); });
}

let win = Services.wm.getMostRecentWindow("navigator:browser");
let friendlyCategoryName = internalPrefCategoryNameToFriendlyName(paneID);
let preferencesURL = "about:preferences" +
(friendlyCategoryName ? "#" + friendlyCategoryName : "");
let newLoad = true;
let browser = null;
if (!win) {
const Cc = Components.classes;
const Ci = Components.interfaces;
let windowArguments = Cc["@mozilla.org/supports-array;1"]
.createInstance(Ci.nsISupportsArray);
let supportsStringPrefURL = Cc["@mozilla.org/supports-string;1"]
.createInstance(Ci.nsISupportsString);
supportsStringPrefURL.data = preferencesURL;
windowArguments.AppendElement(supportsStringPrefURL);

win = Services.ww.openWindow(null, Services.prefs.getCharPref("browser.chromeURL"),
"_blank", "chrome,dialog=no,all", windowArguments);
} else {
newLoad = !win.switchToTabHavingURI(preferencesURL, true, {ignoreFragment: true});
browser = win.gBrowser.selectedBrowser;
}
if (getBoolPref("browser.preferences.inContent")) {
let win = Services.wm.getMostRecentWindow("navigator:browser");
let friendlyCategoryName = internalPrefCategoryNameToFriendlyName(paneID);
let preferencesURL = "about:preferences" +
(friendlyCategoryName ? "#" + friendlyCategoryName : "");
let newLoad = true;
let browser = null;
if (!win) {
const Cc = Components.classes;
const Ci = Components.interfaces;
let windowArguments = Cc["@mozilla.org/supports-array;1"]
.createInstance(Ci.nsISupportsArray);
let supportsStringPrefURL = Cc["@mozilla.org/supports-string;1"]
.createInstance(Ci.nsISupportsString);
supportsStringPrefURL.data = preferencesURL;
windowArguments.AppendElement(supportsStringPrefURL);

win = Services.ww.openWindow(null, Services.prefs.getCharPref("browser.chromeURL"),
"_blank", "chrome,dialog=no,all", windowArguments);
} else {
newLoad = !win.switchToTabHavingURI(preferencesURL, true, {ignoreFragment: true});
browser = win.gBrowser.selectedBrowser;
}

if (newLoad) {
Services.obs.addObserver(function advancedPaneLoadedObs(prefWin, topic, data) {
if (!browser) {
browser = win.gBrowser.selectedBrowser;
}
if (prefWin != browser.contentWindow) {
return;
if (newLoad) {
Services.obs.addObserver(function advancedPaneLoadedObs(prefWin, topic, data) {
if (!browser) {
browser = win.gBrowser.selectedBrowser;
}
if (prefWin != browser.contentWindow) {
return;
}
Services.obs.removeObserver(advancedPaneLoadedObs, "advanced-pane-loaded");
switchToAdvancedSubPane(browser.contentDocument);
}, "advanced-pane-loaded", false);
} else {
if (paneID) {
browser.contentWindow.gotoPref(paneID);
}
Services.obs.removeObserver(advancedPaneLoadedObs, "advanced-pane-loaded");
switchToAdvancedSubPane(browser.contentDocument);
}, "advanced-pane-loaded", false);
}
} else {
if (paneID) {
browser.contentWindow.gotoPref(paneID);
var instantApply = getBoolPref("browser.preferences.instantApply", false);
var features = "chrome,titlebar,toolbar,centerscreen" + (instantApply ? ",dialog=no" : ",modal");

var win = Services.wm.getMostRecentWindow("Browser:Preferences");
if (win) {
win.focus();
if (paneID) {
var pane = win.document.getElementById(paneID);
win.document.documentElement.showPane(pane);
}

switchToAdvancedSubPane(win.document);
} else {
openDialog("chrome://browser/content/preferences/preferences.xul",
"Preferences", features, paneID, extraArgs);
}
switchToAdvancedSubPane(browser.contentDocument);
}
}

Expand Down
39 changes: 26 additions & 13 deletions browser/components/nsBrowserContentHandler.js
Expand Up @@ -231,22 +231,34 @@ function openWindow(parent, url, target, features, args, noExternalArgs) {
}

function openPreferences() {
var sa = Components.classes["@mozilla.org/supports-array;1"]
.createInstance(Components.interfaces.nsISupportsArray);
if (Services.prefs.getBoolPref("browser.preferences.inContent")) {
var sa = Components.classes["@mozilla.org/supports-array;1"]
.createInstance(Components.interfaces.nsISupportsArray);

var wuri = Components.classes["@mozilla.org/supports-string;1"]
.createInstance(Components.interfaces.nsISupportsString);
wuri.data = "about:preferences";
var wuri = Components.classes["@mozilla.org/supports-string;1"]
.createInstance(Components.interfaces.nsISupportsString);
wuri.data = "about:preferences";

sa.AppendElement(wuri);
sa.AppendElement(wuri);

var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
.getService(nsIWindowWatcher);
var wwatch = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
.getService(nsIWindowWatcher);

wwatch.openWindow(null, gBrowserContentHandler.chromeURL,
"_blank",
"chrome,dialog=no,all",
sa);
wwatch.openWindow(null, gBrowserContentHandler.chromeURL,
"_blank",
"chrome,dialog=no,all",
sa);
} else {
var features = "chrome,titlebar,toolbar,centerscreen,dialog=no";
var url = "chrome://browser/content/preferences/preferences.xul";

var win = getMostRecentWindow("Browser:Preferences");
if (win) {
win.focus();
} else {
openWindow(null, url, "_blank", features);
}
}
}

function getMostRecentWindow(aType) {
Expand Down Expand Up @@ -375,7 +387,8 @@ nsBrowserContentHandler.prototype = {

// Handle old preference dialog URLs.
if (chromeParam == "chrome://browser/content/pref/pref.xul" ||
chromeParam == "chrome://browser/content/preferences/preferences.xul") {
(Services.prefs.getBoolPref("browser.preferences.inContent") &&
chromeParam == "chrome://browser/content/preferences/preferences.xul")) {
openPreferences();
cmdLine.preventDefault = true;
} else try {
Expand Down

0 comments on commit 351d7e1

Please sign in to comment.