Merge mozilla-inbound to mozilla-central. a=merge
authorAndreea Pavel <apavel@mozilla.com>
Fri, 20 Sep 2019 12:48:30 +0300
changeset 494192 67ba5406ce3954311b41ea6bb5564118a5699244
parent 494191 52cb15e3f79439a2e7207eb1f4a785a58c675d08 (current diff)
parent 494114 ba6eeb9857a97d54218ab71ae19ae529494b09a6 (diff)
child 494193 89b9b3aa3aafb413060c61e381723c0788c07848
child 494253 a7e1a6952d120e88a05775519657679cb9c8fe61
push id114108
push userdvarga@mozilla.com
push dateFri, 20 Sep 2019 09:59:36 +0000
treeherdermozilla-inbound@67ba5406ce39 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone71.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
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-inbound to mozilla-central. a=merge
browser/base/content/test/permissions/browser_temporary_permissions.js
dom/base/nsFrameLoaderOwner.cpp
dom/base/test/mochitest.ini
dom/base/test/test_bug590812.html
dom/base/test/test_x-frame-options.html
dom/ipc/ContentChild.cpp
dom/tests/mochitest/general/mochitest.ini
dom/tests/mochitest/storageevent/mochitest.ini
dom/tests/mochitest/whatwg/mochitest.ini
layout/forms/test/mochitest.ini
layout/svg/tests/test_filter_crossorigin.html
--- 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");