author | Andreea Pavel <apavel@mozilla.com> |
Fri, 20 Sep 2019 12:48:30 +0300 | |
changeset 494220 | 67ba5406ce3954311b41ea6bb5564118a5699244 |
parent 494219 | 52cb15e3f79439a2e7207eb1f4a785a58c675d08 (current diff) |
parent 494218 | ba6eeb9857a97d54218ab71ae19ae529494b09a6 (diff) |
child 494221 | a7e1a6952d120e88a05775519657679cb9c8fe61 |
child 494363 | 89b9b3aa3aafb413060c61e381723c0788c07848 |
push id | 95897 |
push user | dvarga@mozilla.com |
push date | Fri, 20 Sep 2019 09:56:57 +0000 |
treeherder | autoland@a7e1a6952d12 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | merge |
milestone | 71.0a1 |
first release with | nightly linux32
67ba5406ce39
/
71.0a1
/
20190920094918
/
files
nightly linux64
67ba5406ce39
/
71.0a1
/
20190920094918
/
files
nightly mac
67ba5406ce39
/
71.0a1
/
20190920094918
/
files
nightly win32
67ba5406ce39
/
71.0a1
/
20190920094918
/
files
nightly win64
67ba5406ce39
/
71.0a1
/
20190920094918
/
files
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
releases | nightly linux32
71.0a1
/
20190920094918
/
pushlog to previous
nightly linux64
71.0a1
/
20190920094918
/
pushlog to previous
nightly mac
71.0a1
/
20190920094918
/
pushlog to previous
nightly win32
71.0a1
/
20190920094918
/
pushlog to previous
nightly win64
71.0a1
/
20190920094918
/
pushlog to previous
|
--- a/browser/base/content/test/permissions/browser_temporary_permissions.js +++ b/browser/base/content/test/permissions/browser_temporary_permissions.js @@ -77,24 +77,16 @@ add_task(async function testTempPermissi ], }, r ); }); // Request a permission. await ContentTask.spawn(browser, uri.host, async function(host0) { - // FIXME(Fission): The load event fires before cross-origin iframes have - // loaded (bug 1559841). - if (content.SpecialPowers.useRemoteSubframes) { - for (let i = 0; i < 800; i++) { - await new Promise(resolve => content.setTimeout(resolve, 0)); - } - } - let frame = content.document.getElementById("frame"); await content.SpecialPowers.spawn(frame, [host0], async function(host) { const { E10SUtils } = ChromeUtils.import( "resource://gre/modules/E10SUtils.jsm" ); E10SUtils.wrapHandlingUserInput(this.content, true, function() {
--- a/dom/base/nsFrameLoaderOwner.cpp +++ b/dom/base/nsFrameLoaderOwner.cpp @@ -9,16 +9,17 @@ #include "nsFocusManager.h" #include "nsSubDocumentFrame.h" #include "nsQueryObject.h" #include "mozilla/AsyncEventDispatcher.h" #include "mozilla/dom/BrowsingContext.h" #include "mozilla/dom/FrameLoaderBinding.h" #include "mozilla/dom/HTMLIFrameElement.h" #include "mozilla/dom/MozFrameLoaderOwnerBinding.h" +#include "mozilla/ScopeExit.h" #include "mozilla/StaticPrefs_fission.h" #include "mozilla/EventStateManager.h" using namespace mozilla; using namespace mozilla::dom; already_AddRefed<nsFrameLoader> nsFrameLoaderOwner::GetFrameLoader() { return do_AddRef(mFrameLoader); @@ -64,36 +65,48 @@ bool nsFrameLoaderOwner::ShouldPreserveB StaticPrefs::fission_preserve_browsing_contexts(); } void nsFrameLoaderOwner::ChangeRemoteness( const mozilla::dom::RemotenessOptions& aOptions, mozilla::ErrorResult& rv) { RefPtr<mozilla::dom::BrowsingContext> bc; bool networkCreated = false; + // In this case, we're not reparenting a frameloader, we're just destroying + // our current one and creating a new one, so we can use ourselves as the + // owner. + RefPtr<Element> owner = do_QueryObject(this); + MOZ_ASSERT(owner); + + // When we destroy the original frameloader, it will stop blocking the parent + // document's load event, and immediately trigger the load event if there are + // no other blockers. Since we're going to be adding a new blocker as soon as + // we recreate the frame loader, this is not what we want, so add our own + // blocker until the process is complete. + Document* doc = owner->OwnerDoc(); + doc->BlockOnload(); + auto cleanup = MakeScopeExit([&]() { + doc->UnblockOnload(false); + }); + // If we already have a Frameloader, destroy it, possibly preserving its // browsing context. if (mFrameLoader) { if (ShouldPreserveBrowsingContext(aOptions)) { bc = mFrameLoader->GetBrowsingContext(); mFrameLoader->SkipBrowsingContextDetach(); } // Preserve the networkCreated status, as nsDocShells created after a // process swap may shouldn't change their dynamically-created status. networkCreated = mFrameLoader->IsNetworkCreated(); mFrameLoader->Destroy(); mFrameLoader = nullptr; } - // In this case, we're not reparenting a frameloader, we're just destroying - // our current one and creating a new one, so we can use ourselves as the - // owner. - RefPtr<Element> owner = do_QueryObject(this); - MOZ_ASSERT(owner); mFrameLoader = nsFrameLoader::Recreate(owner, bc, aOptions.mRemoteType, networkCreated); if (NS_WARN_IF(!mFrameLoader)) { return; } if (aOptions.mError.WasPassed()) {
--- a/dom/base/test/mochitest.ini +++ b/dom/base/test/mochitest.ini @@ -425,17 +425,16 @@ support-files = bug444546.sjs [test_bug455629.html] [test_bug456262.html] [test_bug457746.html] [test_bug459424.html] [test_bug461555.html] [test_bug461735.html] [test_bug465767.html] [test_bug466080.html] -fail-if = fission [test_bug466409.html] [test_bug466751.xhtml] [test_bug469020.html] [test_bug469304.html] [test_bug473162-1.html] [test_bug473162-2.html] [test_bug475156.html] skip-if = toolkit == 'android' #bug 855762
--- a/dom/base/test/test_bug590812.html +++ b/dom/base/test/test_bug590812.html @@ -13,24 +13,16 @@ <iframe src="file_bug590812.xml"></iframe> <iframe src="file_bug590812-ref.xhtml"></iframe> <pre id="test"> <script class="testbody" type="application/javascript"> SimpleTest.waitForExplicitFinish(); async function runTest() { - // FIXME(Fission): The load event fires before cross-origin iframes have - // loaded (bug 1559841). - if (SpecialPowers.useRemoteSubframes) { - for (let i = 0; i < 100; i++) { - await new Promise(resolve => setTimeout(resolve, 0)); - } - } - let sNoXUL = await snapshotWindow(window.frames[0], false); let sWithXUL = await snapshotWindow(window.frames[1], false); let sRef = await snapshotWindow(window.frames[2], false); let res; ok(compareSnapshots(sNoXUL, sRef, true)[0], "noxul domain same as ref"); ok(compareSnapshots(sWithXUL, sRef, true)[0], "xul supporting domain same as ref");
--- a/dom/base/test/test_x-frame-options.html +++ b/dom/base/test/test_x-frame-options.html @@ -15,24 +15,16 @@ <script class="testbody" type="text/javascript"> var path = "/tests/dom/base/test/"; var isUnique = SpecialPowers.getBoolPref("security.data_uri.unique_opaque_origin"); var testFramesLoaded = async function() { var harness = document.getElementById("harness").contentDocument; - // FIXME(Fission): The load event fires before cross-origin iframes have - // loaded (bug 1559841). - if (SpecialPowers.useRemoteSubframes) { - for (let i = 0; i < 100; i++) { - await new Promise(resolve => setTimeout(resolve, 0)); - } - } - // iframe from same origin, no X-F-O header - should load var frame = harness.getElementById("control1"); await SpecialPowers.spawn(frame, [], () => { var test1 = this.content.document.getElementById("test").textContent; Assert.equal(test1, "control1", "test control1"); }); // iframe from different origin, no X-F-O header - should load
--- a/dom/ipc/ContentChild.cpp +++ b/dom/ipc/ContentChild.cpp @@ -2116,16 +2116,19 @@ already_AddRefed<RemoteBrowser> ContentC } if (docShell->GetAffectPrivateSessionLifetime()) { chromeFlags |= nsIWebBrowserChrome::CHROME_PRIVATE_LIFETIME; } TabId tabId(nsContentUtils::GenerateTabId()); RefPtr<BrowserBridgeChild> browserBridge = new BrowserBridgeChild(aFrameLoader, aBrowsingContext, tabId); + + nsDocShell::Cast(docShell)->OOPChildLoadStarted(browserBridge); + browserChild->SendPBrowserBridgeConstructor( browserBridge, PromiseFlatString(aContext.PresentationURL()), aRemoteType, aBrowsingContext, chromeFlags, tabId); browserBridge->mIPCOpen = true; #if defined(ACCESSIBILITY) a11y::DocAccessible* docAcc = a11y::GetExistingDocAccessible(owner->OwnerDoc());
--- a/dom/tests/mochitest/general/mochitest.ini +++ b/dom/tests/mochitest/general/mochitest.ini @@ -133,17 +133,16 @@ skip-if = verify [test_resource_timing_frameset.html] [test_selectevents.html] skip-if = toolkit == 'android' # bug 1230232 - Mouse doesn't select in the same way [test_showModalDialog_removed.html] [test_storagePermissionsAccept.html] [test_storagePermissionsLimitForeign.html] [test_storagePermissionsReject.html] [test_storagePermissionsRejectForeign.html] -skip-if = fission # intermittent since bug 1559841 [test_stylesheetPI.html] [test_vibrator.html] [test_WebKitCSSMatrix.html] [test_windowedhistoryframes.html] [test_windowProperties.html] [test_resource_timing_nocors.html] [test_resizeby.html] skip-if = toolkit == 'android' || (devedition && os == 'win' && bits == 32) # Window sizes cannot be controled on android; Windows: bug 1540554
--- a/dom/tests/mochitest/storageevent/mochitest.ini +++ b/dom/tests/mochitest/storageevent/mochitest.ini @@ -9,10 +9,9 @@ support-files = frameSessionStorageSlaveNotEqual.html interOriginFrame.js interOriginTest2.js [test_storageLocalStorageEventCheckNoPropagation.html] [test_storageLocalStorageEventCheckPropagation.html] [test_storageNotifications.html] [test_storageSessionStorageEventCheckNoPropagation.html] -skip-if = fission # intermittent since bug 1559841 [test_storageSessionStorageEventCheckPropagation.html]
--- a/dom/tests/mochitest/whatwg/mochitest.ini +++ b/dom/tests/mochitest/whatwg/mochitest.ini @@ -20,30 +20,23 @@ support-files = [test_document_scripts.html] [test_MessageEvent_dispatchToOther.html] [test_MessageEvent.html] [test_postMessage_basehref.html] [test_postMessage_closed.html] skip-if = toolkit == 'android' #bug 894914 - wrong data - got FAIL, expected message [test_postMessage_hash.html] [test_postMessage.html] -skip-if = fission # Timeouts [test_postMessage_idn.xhtml] -skip-if = fission # Timeouts [test_postMessage_joined.html] -skip-if = fission # Timeouts [test_postMessage_onOther.html] -skip-if = fission #Bug 1571273 [test_postMessage_origin.xhtml] -skip-if = fission # Timeouts +skip-if = fission # Fails intermittently under Fission. [test_postMessage_override.html] -skip-if = fission +skip-if = fission # Fails intermittently under Fission. [test_postMessage_special.xhtml] [test_postMessage_structured_clone.html] -skip-if = fission # Bug 1578636 [test_postMessage_throw.html] [test_postMessage_transfer.html] -skip-if = fission # Bug 1579291 [test_postMessage_userpass.html] -skip-if = fission # Timeouts [test_bug500328.html] skip-if = true || toolkit=='android' # bug 696306, #TIMED_OUT android support-files = file_bug500328_1.html file_bug500328_2.html
--- a/layout/forms/test/mochitest.ini +++ b/layout/forms/test/mochitest.ini @@ -2,34 +2,32 @@ support-files = bug287446_subframe.html bug477700_subframe.html bug564115_window.html [test_bug231389.html] [test_bug287446.html] skip-if = fission && debug # Crashes: @ nsDocShell::SetParentWidget(nsIWidget*) -fail-if = fission [test_bug345267.html] [test_bug346043.html] [test_bug348236.html] skip-if = toolkit == 'android' || e10s || os == 'mac' # mac(select form control popup behavior is different) [test_bug353539.html] [test_bug365410.html] [test_bug378670.html] skip-if = toolkit == 'android' #TIMED_OUT [test_bug402198.html] [test_bug411236.html] [test_bug446663.html] skip-if = toolkit == 'android' [test_bug476308.html] [test_bug477531.html] [test_bug477700.html] skip-if = fission && debug # Crashes: @ nsDocShell::SetParentWidget(nsIWidget*) -fail-if = fission [test_bug478219.xhtml] skip-if = toolkit == 'android' [test_bug534785.html] [test_bug542914.html] [test_bug549170.html] [test_bug562447.html] [test_bug563642.html] [test_bug564115.html]
--- a/layout/style/FontFaceSet.cpp +++ b/layout/style/FontFaceSet.cpp @@ -1241,19 +1241,17 @@ nsresult FontFaceSet::LogMessage(gfxUser message.AppendLiteral("status="); message.AppendInt(static_cast<uint32_t>(aStatus)); break; } } message.AppendLiteral(" source: "); message.Append(fontURI); - if (LOG_ENABLED()) { - LOG(("userfonts (%p) %s", mUserFontSet.get(), message.get())); - } + LOG(("userfonts (%p) %s", mUserFontSet.get(), message.get())); // try to give the user an indication of where the rule came from RawServoFontFaceRule* rule = FindRuleForUserFontEntry(aUserFontEntry); nsString href; nsString text; uint32_t line = 0; uint32_t column = 0; if (rule) {
--- a/layout/svg/tests/test_filter_crossorigin.html +++ b/layout/svg/tests/test_filter_crossorigin.html @@ -22,24 +22,16 @@ https://bugzilla.mozilla.org/show_bug.cg <iframe src="file_yellow_black.svg"></iframe> <pre id="test"> <script type="application/javascript"> // Main Function async function run() { SimpleTest.waitForExplicitFinish(); - // FIXME(Fission): The load event fires before cross-origin iframes have - // loaded (bug 1559841). - if (SpecialPowers.useRemoteSubframes) { - for (let i = 0; i < 100; i++) { - await new Promise(resolve => setTimeout(resolve, 0)); - } - } - let snapshots = new Array(4); for (let i = 0; i < snapshots.length; i++) { snapshots[i] = await snapshotWindow(frames[i], false); } // Compare mochi.test iframe against its reference: assertSnapshots(snapshots[0], snapshots[1], true, null, "Testcase loaded from mochi.test", "Reference: black/yellow");