Bug 1393802 - Make about:home's identity block consistent with about:newtab's. r=florian
MozReview-Commit-ID: BwE7tRSPNRk
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1374,20 +1374,16 @@ var gBrowserInit = {
document.documentElement.setAttribute("darkwindowframe", "true");
}
}
ToolbarIconColor.init();
gRemoteControl.updateVisualCue(Marionette.running);
- this._uriToLoadPromise.then(uriToLoad => {
- gIdentityHandler.initIdentityBlock(uriToLoad);
- });
-
// Wait until chrome is painted before executing code not critical to making the window visible
this._boundDelayedStartup = this._delayedStartup.bind(this);
window.addEventListener("MozAfterPaint", this._boundDelayedStartup);
this._loadHandled = true;
},
_cancelDelayedStartup() {
@@ -7077,17 +7073,17 @@ var gIdentityHandler = {
* to be able to focus it on the popupshown event.
*/
_popupTriggeredByKeyboard: false,
/**
* RegExp used to decide if an about url should be shown as being part of
* the browser UI.
*/
- _secureInternalUIWhitelist: /^(?:accounts|addons|cache|config|crashes|customizing|downloads|healthreport|home|license|newaddon|permissions|preferences|privatebrowsing|rights|searchreset|sessionrestore|support|welcomeback)(?:[?#]|$)/i,
+ _secureInternalUIWhitelist: /^(?:accounts|addons|cache|config|crashes|customizing|downloads|healthreport|license|newaddon|permissions|preferences|rights|searchreset|sessionrestore|support|welcomeback)(?:[?#]|$)/i,
get _isBroken() {
return this._state & Ci.nsIWebProgressListener.STATE_IS_BROKEN;
},
get _isSecure() {
// If a <browser> is included within a chrome document, then this._state
// will refer to the security state for the <browser> and not the top level
@@ -7707,24 +7703,16 @@ var gIdentityHandler = {
this._identityPopupContentSupp.textContent = supplemental;
this._identityPopupContentVerif.textContent = verifier;
// Update per-site permissions section.
this.updateSitePermissions();
},
setURI(uri) {
- // Ignore about:blank loads until the window's initial URL has loaded,
- // to avoid hiding the UI that initIdentityBlock could have prepared.
- if (this._ignoreAboutBlankUntilFirstLoad) {
- if (uri.spec == "about:blank")
- return;
- this._ignoreAboutBlankUntilFirstLoad = false;
- }
-
this._uri = uri;
try {
this._uri.host;
this._uriHasHost = true;
} catch (ex) {
this._uriHasHost = false;
}
@@ -7749,40 +7737,16 @@ var gIdentityHandler = {
// Check the URI again after resolving.
this._isURILoadedFromFile = resolvedURI.schemeIs("file");
} catch (ex) {
// NetUtil's methods will throw for malformed URIs and the like
}
},
/**
- * Used to initialize the identity block before first paint to avoid
- * flickering when opening a new window showing a secure internal page
- * (eg. about:home)
- */
- initIdentityBlock(initialURI) {
- if (this._uri) {
- // Apparently we already loaded something, so there's nothing to do here.
- return;
- }
-
- if ((typeof initialURI != "string") || !initialURI.startsWith("about:"))
- return;
-
- let uri = Services.io.newURI(initialURI);
- if (this._secureInternalUIWhitelist.test(uri.pathQueryRef)) {
- this._isSecureInternalUI = true;
- this._ignoreAboutBlankUntilFirstLoad = true;
- this.refreshIdentityBlock();
- // The identity label won't be visible without setting this.
- gURLBar.setAttribute("pageproxystate", "valid");
- }
- },
-
- /**
* Click handler for the identity-box element in primary chrome.
*/
handleIdentityButtonEvent(event) {
event.stopPropagation();
if ((event.type == "click" && event.button != 0) ||
(event.type == "keypress" && event.charCode != KeyEvent.DOM_VK_SPACE &&
event.keyCode != KeyEvent.DOM_VK_RETURN)) {
--- a/browser/base/content/test/about/browser_aboutHome.js
+++ b/browser/base/content/test/about/browser_aboutHome.js
@@ -523,28 +523,27 @@ add_task(async function() {
// Skip this test on Mac, because Space doesn't activate the button there.
if (AppConstants.platform == "macosx") {
return;
}
await BrowserTestUtils.withNewTab({ gBrowser, url: "about:home" }, async function(browser) {
info("Waiting for about:addons tab to open...");
- let promiseTabOpened = BrowserTestUtils.waitForNewTab(gBrowser, "about:addons");
+ let promiseTabLoaded = BrowserTestUtils.browserLoaded(browser, false, "about:addons");
await ContentTask.spawn(browser, null, async function() {
let addOnsButton = content.document.getElementById("addons");
addOnsButton.focus();
});
await BrowserTestUtils.synthesizeKey(" ", {}, browser);
- let tab = await promiseTabOpened;
- is(tab.linkedBrowser.currentURI.spec, "about:addons",
+ await promiseTabLoaded;
+ is(browser.currentURI.spec, "about:addons",
"Should have seen the about:addons tab");
- await BrowserTestUtils.removeTab(tab);
});
});
/**
* Cleans up snippets and ensures that by default we don't try to check for
* remote snippets since that may cause network bustage or slowness.
*
* @param aSetupFn
--- a/browser/base/content/test/general/browser_bug882977.js
+++ b/browser/base/content/test/general/browser_bug882977.js
@@ -1,16 +1,16 @@
"use strict";
/**
* Tests that the identity-box shows the chromeUI styling
- * when viewing about:home in a new window.
+ * when viewing such a page in a new window.
*/
add_task(async function() {
- let homepage = "about:home";
+ let homepage = "about:preferences";
await SpecialPowers.pushPrefEnv({
"set": [
["browser.startup.homepage", homepage],
["browser.startup.page", 1],
]
});
let win = OpenBrowserWindow();
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -38,17 +38,19 @@ Object.defineProperty(this, "BROWSER_NEW
var TAB_DROP_TYPE = "application/x-moz-tabbrowser-tab";
var gBidiUI = false;
/**
* Determines whether the given url is considered a special URL for new tabs.
*/
function isBlankPageURL(aURL) {
- return aURL == "about:blank" || aURL == BROWSER_NEW_TAB_URL;
+ return aURL == "about:blank" ||
+ aURL == "about:home" ||
+ aURL == BROWSER_NEW_TAB_URL;
}
function getBrowserURL() {
return "chrome://browser/content/browser.xul";
}
function getTopWin(skipPopups) {
// If this is called in a browser window, use that window regardless of