diff --git a/browser/base/content/test/permissions/browser_temporary_permissions.js b/browser/base/content/test/permissions/browser_temporary_permissions.js index 7b0b847f741c..4d1b8e98c291 100644 --- a/browser/base/content/test/permissions/browser_temporary_permissions.js +++ b/browser/base/content/test/permissions/browser_temporary_permissions.js @@ -82,6 +82,14 @@ add_task(async function testTempPermissionSubframes() { // 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) { diff --git a/dom/base/nsFrameLoaderOwner.cpp b/dom/base/nsFrameLoaderOwner.cpp index 17cfb6353362..7d51d8e8dcbd 100644 --- a/dom/base/nsFrameLoaderOwner.cpp +++ b/dom/base/nsFrameLoaderOwner.cpp @@ -14,7 +14,6 @@ #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" @@ -70,23 +69,6 @@ void nsFrameLoaderOwner::ChangeRemoteness( RefPtr 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 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) { @@ -102,6 +84,11 @@ void nsFrameLoaderOwner::ChangeRemoteness( 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 owner = do_QueryObject(this); + MOZ_ASSERT(owner); mFrameLoader = nsFrameLoader::Recreate(owner, bc, aOptions.mRemoteType, networkCreated); diff --git a/dom/base/test/mochitest.ini b/dom/base/test/mochitest.ini index d631850d67b4..eb25a417e28a 100644 --- a/dom/base/test/mochitest.ini +++ b/dom/base/test/mochitest.ini @@ -430,6 +430,7 @@ support-files = bug444546.sjs [test_bug461735.html] [test_bug465767.html] [test_bug466080.html] +fail-if = fission [test_bug466409.html] [test_bug466751.xhtml] [test_bug469020.html] diff --git a/dom/base/test/test_bug590812.html b/dom/base/test/test_bug590812.html index c47f708b2ca1..d072a45e16ee 100644 --- a/dom/base/test/test_bug590812.html +++ b/dom/base/test/test_bug590812.html @@ -18,6 +18,14 @@ 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); diff --git a/dom/base/test/test_x-frame-options.html b/dom/base/test/test_x-frame-options.html index adc0c40ac478..5ae9a8ed0098 100644 --- a/dom/base/test/test_x-frame-options.html +++ b/dom/base/test/test_x-frame-options.html @@ -20,6 +20,14 @@ 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, [], () => { diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp index 279c29d375dc..427e01483c92 100644 --- a/dom/ipc/ContentChild.cpp +++ b/dom/ipc/ContentChild.cpp @@ -2121,11 +2121,6 @@ already_AddRefed ContentChild::CreateBrowser( TabId tabId(nsContentUtils::GenerateTabId()); RefPtr browserBridge = new BrowserBridgeChild(aFrameLoader, aBrowsingContext, tabId); - - auto* docShell = owner->OwnerDoc()->GetDocShell(); - MOZ_ASSERT(docShell); - nsDocShell::Cast(docShell)->OOPChildLoadStarted(browserBridge); - browserChild->SendPBrowserBridgeConstructor( browserBridge, PromiseFlatString(aContext.PresentationURL()), aRemoteType, aBrowsingContext, chromeFlags, tabId); diff --git a/dom/tests/mochitest/general/mochitest.ini b/dom/tests/mochitest/general/mochitest.ini index 7c8606e886e8..dae23b310922 100644 --- a/dom/tests/mochitest/general/mochitest.ini +++ b/dom/tests/mochitest/general/mochitest.ini @@ -138,6 +138,7 @@ skip-if = toolkit == 'android' # bug 1230232 - Mouse doesn't select in the same [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] diff --git a/dom/tests/mochitest/storageevent/mochitest.ini b/dom/tests/mochitest/storageevent/mochitest.ini index e16d9cd2e965..d5ca1c68e92d 100644 --- a/dom/tests/mochitest/storageevent/mochitest.ini +++ b/dom/tests/mochitest/storageevent/mochitest.ini @@ -14,4 +14,5 @@ support-files = [test_storageLocalStorageEventCheckPropagation.html] [test_storageNotifications.html] [test_storageSessionStorageEventCheckNoPropagation.html] +skip-if = fission # intermittent since bug 1559841 [test_storageSessionStorageEventCheckPropagation.html] diff --git a/dom/tests/mochitest/whatwg/mochitest.ini b/dom/tests/mochitest/whatwg/mochitest.ini index 5f997a359f65..c4c15666ff6f 100644 --- a/dom/tests/mochitest/whatwg/mochitest.ini +++ b/dom/tests/mochitest/whatwg/mochitest.ini @@ -25,18 +25,25 @@ support-files = 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 # Fails intermittently under Fission. +skip-if = fission # Timeouts [test_postMessage_override.html] -skip-if = fission # Fails intermittently under Fission. +skip-if = 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 diff --git a/layout/forms/test/mochitest.ini b/layout/forms/test/mochitest.ini index 363f6253e02e..a09ca738924f 100644 --- a/layout/forms/test/mochitest.ini +++ b/layout/forms/test/mochitest.ini @@ -7,6 +7,7 @@ support-files = [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] @@ -23,6 +24,7 @@ skip-if = toolkit == 'android' [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] diff --git a/layout/svg/tests/test_filter_crossorigin.html b/layout/svg/tests/test_filter_crossorigin.html index 8f1c5311719a..3d45289b4953 100644 --- a/layout/svg/tests/test_filter_crossorigin.html +++ b/layout/svg/tests/test_filter_crossorigin.html @@ -27,6 +27,14 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=695385 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);