author | Steven Englehardt <senglehardt@mozilla.com> |
Mon, 28 Sep 2015 13:00:25 -0700 | |
changeset 264770 | fa2906b5ee4ee50f1e8bbd4e0df7dc22d33f47d5 |
parent 264769 | 76076d8dad0272797b149ccb71b691b1ea3fdb84 |
child 264771 | 9eb07902468e229ca6382b12fe5c518364968a5e |
push id | 65734 |
push user | tvyas@mozilla.com |
push date | Mon, 28 Sep 2015 20:00:47 +0000 |
treeherder | mozilla-inbound@9eb07902468e [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | paolo |
bugs | 1191442 |
milestone | 44.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
browser/base/content/tabbrowser.xml | file | annotate | diff | comparison | revisions | |
browser/base/content/utilityOverlay.js | file | annotate | diff | comparison | revisions |
--- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -1410,32 +1410,34 @@ <![CDATA[ var aReferrerPolicy; var aFromExternal; var aRelatedToCurrent; var aAllowMixedContent; var aSkipAnimation; var aForceNotRemote; var aNoReferrer; + var aUserContextId; if (arguments.length == 2 && typeof arguments[1] == "object" && !(arguments[1] instanceof Ci.nsIURI)) { let params = arguments[1]; aReferrerURI = params.referrerURI; aReferrerPolicy = params.referrerPolicy; aCharset = params.charset; aPostData = params.postData; aLoadInBackground = params.inBackground; aAllowThirdPartyFixup = params.allowThirdPartyFixup; aFromExternal = params.fromExternal; aRelatedToCurrent = params.relatedToCurrent; aAllowMixedContent = params.allowMixedContent; aSkipAnimation = params.skipAnimation; aForceNotRemote = params.forceNotRemote; aNoReferrer = params.noReferrer; + aUserContextId = params.userContextId; } var bgLoad = (aLoadInBackground != null) ? aLoadInBackground : Services.prefs.getBoolPref("browser.tabs.loadInBackground"); var owner = bgLoad ? null : this.selectedTab; var tab = this.addTab(aURI, { referrerURI: aReferrerURI, referrerPolicy: aReferrerPolicy, @@ -1443,17 +1445,18 @@ postData: aPostData, ownerTab: owner, allowThirdPartyFixup: aAllowThirdPartyFixup, fromExternal: aFromExternal, relatedToCurrent: aRelatedToCurrent, skipAnimation: aSkipAnimation, allowMixedContent: aAllowMixedContent, forceNotRemote: aForceNotRemote, - noReferrer: aNoReferrer }); + noReferrer: aNoReferrer, + userContextId: aUserContextId }); if (!bgLoad) this.selectedTab = tab; return tab; ]]> </body> </method> @@ -1685,25 +1688,29 @@ <parameter name="aParams"/> <body> <![CDATA[ const NS_XUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; let remote = aParams && aParams.remote; let uriIsAboutBlank = aParams && aParams.uriIsAboutBlank; let isPreloadBrowser = aParams && aParams.isPreloadBrowser; + let userContextId = aParams && aParams.userContextId; let b = document.createElementNS(NS_XUL, "browser"); b.permanentKey = {}; b.setAttribute("type", "content-targetable"); b.setAttribute("message", "true"); b.setAttribute("messagemanagergroup", "browsers"); b.setAttribute("contextmenu", this.getAttribute("contentcontextmenu")); b.setAttribute("tooltip", this.getAttribute("contenttooltip")); + if (userContextId) + b.setAttribute("usercontextid", userContextId); + if (remote) b.setAttribute("remote", "true"); if (window.gShowPageResizers && window.windowState == window.STATE_NORMAL) { b.setAttribute("showresizer", "true"); } if (!isPreloadBrowser && this.hasAttribute("autocompletepopup")) @@ -1762,32 +1769,34 @@ const NS_XUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; var aReferrerPolicy; var aFromExternal; var aRelatedToCurrent; var aSkipAnimation; var aAllowMixedContent; var aForceNotRemote; var aNoReferrer; + var aUserContextId; if (arguments.length == 2 && typeof arguments[1] == "object" && !(arguments[1] instanceof Ci.nsIURI)) { let params = arguments[1]; aReferrerURI = params.referrerURI; aReferrerPolicy = params.referrerPolicy; aCharset = params.charset; aPostData = params.postData; aOwner = params.ownerTab; aAllowThirdPartyFixup = params.allowThirdPartyFixup; aFromExternal = params.fromExternal; aRelatedToCurrent = params.relatedToCurrent; aSkipAnimation = params.skipAnimation; aAllowMixedContent = params.allowMixedContent; aForceNotRemote = params.forceNotRemote; aNoReferrer = params.noReferrer; + aUserContextId = params.userContextId; } // if we're adding tabs, we're past interrupt mode, ditch the owner if (this.mCurrentTab.owner) this.mCurrentTab.owner = null; var t = document.createElementNS(NS_XUL, "tab"); @@ -1826,26 +1835,28 @@ // If this new tab is owned by another, assert that relationship if (aOwner) t.owner = aOwner; let b; let usingPreloadedContent = false; - // If we open a new tab with the newtab URL, - // check if there is a preloaded browser ready. - if (aURI == BROWSER_NEW_TAB_URL) { + // If we open a new tab with the newtab URL in the default + // userContext, check if there is a preloaded browser ready. + if (aURI == BROWSER_NEW_TAB_URL && !aUserContextId) { b = this._getPreloadedBrowser(); usingPreloadedContent = !!b; } if (!b) { // No preloaded browser found, create one. - b = this._createBrowser({remote, uriIsAboutBlank}); + b = this._createBrowser({remote: remote, + uriIsAboutBlank: uriIsAboutBlank, + userContextId: aUserContextId}); } let notificationbox = this.getNotificationBox(b); var position = this.tabs.length - 1; var uniqueId = this._generateUniquePanelID(); notificationbox.id = uniqueId; t.linkedPanel = uniqueId; t.linkedBrowser = b; @@ -2481,16 +2492,21 @@ let ourBrowser = this.getBrowserForTab(aOurTab); let otherBrowser = aOtherTab.linkedBrowser; // Can't swap between chrome and content processes. if (ourBrowser.isRemoteBrowser != otherBrowser.isRemoteBrowser) return; + // Keep the userContextId if set on other browser + if (otherBrowser.hasAttribute("usercontextid")) { + ourBrowser.setAttribute("usercontextid", otherBrowser.getAttribute("usercontextid")); + } + // That's gBrowser for the other window, not the tab's browser! var remoteBrowser = aOtherTab.ownerDocument.defaultView.gBrowser; var isPending = aOtherTab.hasAttribute("pending"); // First, start teardown of the other browser. Make sure to not // fire the beforeunload event in the process. Close the other // window if this was its last tab. if (!remoteBrowser._beginRemoveTab(aOtherTab, true, true))
--- a/browser/base/content/utilityOverlay.js +++ b/browser/base/content/utilityOverlay.js @@ -211,16 +211,17 @@ function openLinkIn(url, where, params) var aInBackground = params.inBackground; var aDisallowInheritPrincipal = params.disallowInheritPrincipal; var aInitiatingDoc = params.initiatingDoc; var aIsPrivate = params.private; var aSkipTabAnimation = params.skipTabAnimation; var aAllowPinnedTabHostChange = !!params.allowPinnedTabHostChange; var aNoReferrer = params.noReferrer; var aAllowPopups = !!params.allowPopups; + var aUserContextId = params.userContextId; if (where == "save") { if (!aInitiatingDoc) { Components.utils.reportError("openUILink/openLinkIn was called with " + "where == 'save' but without initiatingDoc. See bug 814264."); return; } // TODO(1073187): propagate referrerPolicy. @@ -352,17 +353,18 @@ function openLinkIn(url, where, params) referrerPolicy: aReferrerPolicy, charset: aCharset, postData: aPostData, inBackground: loadInBackground, allowThirdPartyFixup: aAllowThirdPartyFixup, relatedToCurrent: aRelatedToCurrent, skipAnimation: aSkipTabAnimation, allowMixedContent: aAllowMixedContent, - noReferrer: aNoReferrer + noReferrer: aNoReferrer, + userContextId: aUserContextId }); break; } w.gBrowser.selectedBrowser.focus(); if (!loadInBackground && w.isBlankPageURL(url)) { w.focusAndSelectUrlBar();