Bug 1036595 - Convert the 'Clear recent history' dialog to be in-content; r?MattN
MozReview-Commit-ID: CuJO3VtGwem
--- a/browser/components/preferences/in-content/privacy.js
+++ b/browser/components/preferences/in-content/privacy.js
@@ -646,32 +646,32 @@ var gPrivacyPane = {
gSubDialog.open("chrome://browser/content/preferences/sanitize.xul", "resizable=no");
},
/**
* Displays a dialog from which individual parts of private data may be
* cleared.
*/
- clearPrivateDataNow: function (aClearEverything)
- {
+ clearPrivateDataNow: function (aClearEverything) {
var ts = document.getElementById("privacy.sanitize.timeSpan");
var timeSpanOrig = ts.value;
- if (aClearEverything)
+
+ if (aClearEverything) {
ts.value = 0;
+ }
- const Cc = Components.classes, Ci = Components.interfaces;
- var glue = Cc["@mozilla.org/browser/browserglue;1"]
- .getService(Ci.nsIBrowserGlue);
- glue.sanitize(window);
+ gSubDialog.open("chrome://browser/content/sanitize.xul", "resizable=no", null, () => {
+ // reset the timeSpan pref
+ if (aClearEverything) {
+ ts.value = timeSpanOrig;
+ }
- // reset the timeSpan pref
- if (aClearEverything)
- ts.value = timeSpanOrig;
- Services.obs.notifyObservers(null, "clear-private-data", null);
+ Services.obs.notifyObservers(null, "clear-private-data", null);
+ });
},
/**
* Enables or disables the "Settings..." button depending
* on the privacy.sanitize.sanitizeOnShutdown preference value
*/
_updateSanitizeSettingsButton: function () {
var settingsButton = document.getElementById("clearDataSettings");
--- a/browser/components/preferences/in-content/subdialogs.js
+++ b/browser/components/preferences/in-content/subdialogs.js
@@ -168,16 +168,28 @@ var gSubDialog = {
this.injectXMLStylesheet(styleSheetURL);
}
// Provide the ability for the dialog to know that it is being loaded "in-content".
this._frame.contentDocument.documentElement.setAttribute("subdialog", "true");
this._frame.contentWindow.addEventListener("dialogclosing", this);
+ let oldResizeBy = this._frame.contentWindow.resizeBy;
+ this._frame.contentWindow.resizeBy = function(resizeByWidth, resizeByHeight) {
+ // Only handle resizeByHeight currently.
+ let frameHeight = gSubDialog._frame.clientHeight;
+ let boxMinHeight = parseFloat(getComputedStyle(gSubDialog._box).minHeight, 10);
+
+ gSubDialog._frame.style.height = (frameHeight + resizeByHeight) + "px";
+ gSubDialog._box.style.minHeight = (boxMinHeight + resizeByHeight) + "px";
+
+ oldResizeBy.call(gSubDialog._frame.contentWindow, resizeByWidth, resizeByHeight);
+ };
+
// Make window.close calls work like dialog closing.
let oldClose = this._frame.contentWindow.close;
this._frame.contentWindow.close = function() {
var closingEvent = gSubDialog._closingEvent;
if (!closingEvent) {
closingEvent = new CustomEvent("dialogclosing", {
bubbles: true,
detail: { button: null },
@@ -268,18 +280,20 @@ var gSubDialog = {
this._frame.style.height = frameHeight;
this._box.style.minHeight = "calc(" +
(boxVerticalBorder + groupBoxTitleHeight + boxVerticalPadding) +
"px + " + frameMinHeight + ")";
this._overlay.style.visibility = "visible";
this._overlay.style.opacity = ""; // XXX: focus hack continued from _onContentLoaded
- this._resizeObserver = new MutationObserver(this._onResize);
- this._resizeObserver.observe(this._box, {attributes: true});
+ if (this._box.getAttribute("resizable") == "true") {
+ this._resizeObserver = new MutationObserver(this._onResize);
+ this._resizeObserver.observe(this._box, {attributes: true});
+ }
this._trapFocus();
},
_onResize: function(mutations) {
let frame = gSubDialog._frame;
// The width and height styles are needed for the initial
// layout of the frame, but afterward they need to be removed
--- a/browser/themes/linux/sanitizeDialog.css
+++ b/browser/themes/linux/sanitizeDialog.css
@@ -51,17 +51,17 @@
}
/* Progressive disclosure button */
#detailsExpanderWrapper {
padding: 0;
margin-top: 6px;
margin-bottom: 6px;
- margin-inline-start: -6px;
+ margin-inline-start: -4px;
margin-inline-end: 0;
}
.expander-up,
.expander-down {
min-width: 0;
padding: 2px 0;
padding-inline-start: 2px;
--- a/browser/themes/shared/incontentprefs/preferences.inc.css
+++ b/browser/themes/shared/incontentprefs/preferences.inc.css
@@ -364,17 +364,17 @@ description > html|a {
#dialogBox > .groupbox-body {
-moz-appearance: none;
padding: 20px;
}
#dialogFrame {
-moz-box-flex: 1;
/* Default dialog dimensions */
- height: 20em;
+ height: 8em;
width: 66ch;
}
.largeDialogContainer.doScroll {
overflow-y: auto;
-moz-box-flex: 1;
}
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Preferences.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Preferences.jsm
@@ -18,16 +18,17 @@ this.Preferences = {
init(libDir) {
let panes = [
["paneGeneral", null],
["paneSearch", null],
["paneContent", null],
["paneApplications", null],
["panePrivacy", null],
["panePrivacy", null, DNTDialog],
+ ["panePrivacy", null, clearRecentHistoryDialog],
["paneSecurity", null],
["paneSync", null],
["paneAdvanced", "generalTab"],
["paneAdvanced", "dataChoicesTab"],
["paneAdvanced", "networkTab"],
["paneAdvanced", "networkTab", connectionDialog],
["paneAdvanced", "updateTab"],
["paneAdvanced", "encryptionTab"],
@@ -102,16 +103,22 @@ function* DNTDialog(aBrowser) {
}
function* connectionDialog(aBrowser) {
yield ContentTask.spawn(aBrowser, null, function* () {
content.document.getElementById("connectionSettings").click();
});
}
+function* clearRecentHistoryDialog(aBrowser) {
+ yield ContentTask.spawn(aBrowser, null, function* () {
+ content.document.getElementById("historyRememberClear").click();
+ });
+}
+
function* certManager(aBrowser) {
yield ContentTask.spawn(aBrowser, null, function* () {
content.document.getElementById("viewCertificatesButton").click();
});
}
function* deviceManager(aBrowser) {
yield ContentTask.spawn(aBrowser, null, function* () {