Merge mozilla-central to autoland r=merge a=merge on a CLOSED TREE
authorBrindusan Cristian <cbrindusan@mozilla.com>
Wed, 20 Dec 2017 23:46:31 +0200
changeset 397043 7c7b2f1d488aed629c0f8bdc7c3a38a29a84b540
parent 397042 1662a060890dee9a9c7843e383255080a5a9557f (current diff)
parent 397027 62dd5404cf55e29412d5fff8fe9105076b1ca437 (diff)
child 397044 2913983fd2f5357be9dd4c8a779bcdcebcf388a5
push id33123
push userncsoregi@mozilla.com
push dateThu, 21 Dec 2017 10:00:47 +0000
treeherdermozilla-central@06a19fbe2581 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge, merge
milestone59.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
Merge mozilla-central to autoland r=merge a=merge on a CLOSED TREE
testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/execorder.html.ini
testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-1.html.ini
testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-2.html.ini
testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html.ini
testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html.ini
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1208,16 +1208,35 @@ var gBrowserInit = {
       if (linkedBrowser) {
         remoteType = linkedBrowser.remoteType;
         isRemote = remoteType != E10SUtils.NOT_REMOTE;
         sameProcessAsFrameLoader = linkedBrowser.frameLoader;
       }
       initBrowser.removeAttribute("blank");
     }
 
+    // Set a sane starting width/height for all resolutions on new profiles.
+    if (Services.prefs.getBoolPref("privacy.resistFingerprinting")) {
+      // When the fingerprinting resistance is enabled, making sure that we don't
+      // have a maximum window to interfere with generating rounded window dimensions.
+      document.documentElement.setAttribute("sizemode", "normal");
+    } else if (!document.documentElement.hasAttribute("width")) {
+      const TARGET_WIDTH = 1280;
+      const TARGET_HEIGHT = 1040;
+      let width = Math.min(screen.availWidth * .9, TARGET_WIDTH);
+      let height = Math.min(screen.availHeight * .9, TARGET_HEIGHT);
+
+      document.documentElement.setAttribute("width", width);
+      document.documentElement.setAttribute("height", height);
+
+      if (width < TARGET_WIDTH && height < TARGET_HEIGHT) {
+        document.documentElement.setAttribute("sizemode", "maximized");
+      }
+    }
+
     gBrowser.updateBrowserRemoteness(initBrowser, isRemote, {
       remoteType, sameProcessAsFrameLoader
     });
   },
 
   onLoad() {
     gBrowser.addEventListener("DOMUpdatePageReport", gPopupBlockerObserver);
 
@@ -1270,37 +1289,16 @@ var gBrowserInit = {
     Services.obs.notifyObservers(window, "browser-window-before-show");
 
     gUIDensity.init();
 
     if (AppConstants.CAN_DRAW_IN_TITLEBAR) {
       gDragSpaceObserver.init();
     }
 
-    let isResistFingerprintingEnabled = Services.prefs.getBoolPref("privacy.resistFingerprinting");
-
-    // Set a sane starting width/height for all resolutions on new profiles.
-    if (isResistFingerprintingEnabled) {
-      // When the fingerprinting resistance is enabled, making sure that we don't
-      // have a maximum window to interfere with generating rounded window dimensions.
-      document.documentElement.setAttribute("sizemode", "normal");
-    } else if (!document.documentElement.hasAttribute("width")) {
-      const TARGET_WIDTH = 1280;
-      const TARGET_HEIGHT = 1040;
-      let width = Math.min(screen.availWidth * .9, TARGET_WIDTH);
-      let height = Math.min(screen.availHeight * .9, TARGET_HEIGHT);
-
-      document.documentElement.setAttribute("width", width);
-      document.documentElement.setAttribute("height", height);
-
-      if (width < TARGET_WIDTH && height < TARGET_HEIGHT) {
-        document.documentElement.setAttribute("sizemode", "maximized");
-      }
-    }
-
     if (!window.toolbar.visible) {
       // adjust browser UI for popups
       gURLBar.setAttribute("readonly", "true");
     }
 
     // Misc. inits.
     TabletModeUpdater.init();
     CombinedStopReload.ensureInitialized();
--- a/browser/base/content/test/performance/browser.ini
+++ b/browser/base/content/test/performance/browser.ini
@@ -23,12 +23,13 @@ skip-if = !e10s
 [browser_tabopen_reflows.js]
 [browser_tabopen_squeeze_reflows.js]
 [browser_tabstrip_overflow_underflow_reflows.js]
 [browser_tabswitch_reflows.js]
 [browser_toolbariconcolor_restyles.js]
 [browser_urlbar_keyed_search_reflows.js]
 skip-if = (os == 'linux') || (os == 'win' && debug) # Disabled on Linux and Windows debug due to perma failures. Bug 1392320.
 [browser_urlbar_search_reflows.js]
+skip-if = debug && (os == 'linux' || os == 'win') # Disabled on Linux and Windows debug due to intermittent timeouts. Bug 1414126.
 [browser_windowclose_reflows.js]
 [browser_windowopen_flicker.js]
 skip-if = (debug && os == 'win') # Disabled on windows debug for intermittent leaks
 [browser_windowopen_reflows.js]
--- a/browser/base/content/test/performance/browser_startup_flicker.js
+++ b/browser/base/content/test/performance/browser_startup_flicker.js
@@ -43,37 +43,23 @@ add_task(async function() {
         {name: "bug 1403648 - urlbar down arrow shouldn't flicker",
          condition: r => // 5x9px area, sometimes less at the end of the opacity transition
                          inRange(r.h, 3, 5) && inRange(r.w, 7, 9) &&
                          inRange(r.y1, 40, 80) && // in the toolbar
                          // at ~80% of the window width
                          inRange(r.x1, width * .75, width * .9)
         },
 
-        {name: "bug 1394914 - sidebar toolbar icon should be visible at first paint",
-         condition: r => r.h == 13 && inRange(r.w, 14, 16) && // icon size
-                         inRange(r.y1, 40, 80) && // in the toolbar
-                         // near the right end of screen
-                         inRange(r.x1, width - 100, width - 50)
-        },
-
         {name: "bug 1403648 - urlbar should be focused at first paint",
          condition: r => inRange(r.y2, 60, 80) && // in the toolbar
                          // taking 50% to 75% of the window width
                          inRange(r.w, width * .5, width * .75) &&
                          // starting at 15 to 25% of the window width
                          inRange(r.x1, width * .15, width * .25)
         },
-
-        {name: "bug 1421460 - restore icon should be visible at first paint",
-         condition: r => r.w == 9 && r.h == 9 && // 9x9 icon
-                         AppConstants.platform == "win" &&
-                         // near the right end of the screen
-                         inRange(r.x1, width - 80, width - 70)
-        },
       ];
 
       let rectText = `${rect.toSource()}, window width: ${width}`;
       for (let e of exceptions) {
         if (e.condition(rect)) {
           todo(false, e.name + ", " + rectText);
           return false;
         }
--- a/browser/base/content/test/performance/browser_windowopen_flicker.js
+++ b/browser/base/content/test/performance/browser_windowopen_flicker.js
@@ -93,23 +93,16 @@ add_task(async function() {
         {name: "bug 1403648 - urlbar down arrow shouldn't flicker",
          condition: r => // 5x9px area, sometimes less at the end of the opacity transition
                          inRange(r.h, 3, 5) && inRange(r.w, 7, 9) &&
                          inRange(r.y1, 40, 80) && // in the toolbar
                          // at ~80% of the window width
                          inRange(r.x1, width * .75, width * .9)
         },
 
-        {name: "bug 1394914 - sidebar toolbar icon should be visible at first paint",
-         condition: r => r.h == 13 && inRange(r.w, 14, 16) && // icon size
-                         inRange(r.y1, 40, 80) && // in the toolbar
-                         // near the right end of screen
-                         inRange(r.x1, width - 100, width - 50)
-        },
-
         {name: "bug 1403648 - urlbar should be focused at first paint",
          condition: r => inRange(r.y2, 60, 80) && // in the toolbar
                          // taking 50% to 75% of the window width
                          inRange(r.w, width * .5, width * .75) &&
                          // starting at 15 to 25% of the window width
                          inRange(r.x1, width * .15, width * .25)
         },
 
--- a/browser/base/content/test/performance/browser_windowopen_reflows.js
+++ b/browser/base/content/test/performance/browser_windowopen_reflows.js
@@ -7,17 +7,27 @@
  * WHOA THERE: We should never be adding new things to EXPECTED_REFLOWS. This
  * is a whitelist that should slowly go away as we improve the performance of
  * the front-end. Instead of adding more reflows to the whitelist, you should
  * be modifying your code to avoid the reflow.
  *
  * See https://developer.mozilla.org/en-US/Firefox/Performance_best_practices_for_Firefox_fe_engineers
  * for tips on how to do that.
  */
-const EXPECTED_REFLOWS = [];
+const EXPECTED_REFLOWS = [
+  {
+    stack: [
+      "onOverflow@resource:///modules/CustomizableUI.jsm",
+      "init@resource:///modules/CustomizableUI.jsm",
+      "observe@resource:///modules/CustomizableUI.jsm",
+      "_delayedStartup@chrome://browser/content/browser.js",
+    ],
+    times: 2, // This number should only ever go down - never up.
+  },
+];
 
 if (Services.appinfo.OS == "WINNT") {
   EXPECTED_REFLOWS.push(
     {
       stack: [
         "verticalMargins@chrome://browser/content/browser-tabsintitlebar.js",
         "_update@chrome://browser/content/browser-tabsintitlebar.js",
         "init@chrome://browser/content/browser-tabsintitlebar.js",
--- a/browser/components/customizableui/content/toolbar.xml
+++ b/browser/components/customizableui/content/toolbar.xml
@@ -13,43 +13,24 @@
       <stylesheet src="chrome://global/skin/toolbar.css"/>
     </resources>
     <implementation>
       <field name="overflowedDuringConstruction">null</field>
 
       <constructor><![CDATA[
           let scope = {};
           Cu.import("resource:///modules/CustomizableUI.jsm", scope);
+          let CustomizableUI = scope.CustomizableUI;
           // Add an early overflow event listener that will mark if the
           // toolbar overflowed during construction.
-          if (scope.CustomizableUI.isAreaOverflowable(this.id)) {
+          if (CustomizableUI.isAreaOverflowable(this.id)) {
             this.addEventListener("overflow", this);
             this.addEventListener("underflow", this);
           }
 
-          if (document.readyState == "complete") {
-            this._init();
-          } else {
-            // Need to wait until XUL overlays are loaded. See bug 554279.
-            let self = this;
-            document.addEventListener("readystatechange", function onReadyStateChange() {
-              if (document.readyState != "complete")
-                return;
-              document.removeEventListener("readystatechange", onReadyStateChange);
-              self._init();
-            });
-          }
-      ]]></constructor>
-
-      <method name="_init">
-        <body><![CDATA[
-          let scope = {};
-          Cu.import("resource:///modules/CustomizableUI.jsm", scope);
-          let CustomizableUI = scope.CustomizableUI;
-
           // Bug 989289: Forcibly set the now unsupported "mode" and "iconsize"
           // attributes, just in case they accidentally get restored from
           // persistence from a user that's been upgrading and downgrading.
           if (CustomizableUI.isBuiltinToolbar(this.id)) {
             const kAttributes = new Map([["mode", "icons"], ["iconsize", "small"]]);
             for (let [attribute, value] of kAttributes) {
               if (this.getAttribute(attribute) != value) {
                 this.setAttribute(attribute, value);
@@ -78,18 +59,17 @@
             }
           }
 
           // pass the current set of children for comparison with placements:
           let children = Array.from(this.childNodes)
                               .filter(node => node.getAttribute("skipintoolbarset") != "true" && node.id)
                               .map(node => node.id);
           CustomizableUI.registerToolbarNode(this, children);
-        ]]></body>
-      </method>
+      ]]></constructor>
 
       <method name="handleEvent">
         <parameter name="aEvent"/>
         <body><![CDATA[
           if (aEvent.type == "overflow" && aEvent.detail > 0) {
             if (this.overflowable && this.overflowable.initialized) {
               this.overflowable.onOverflow(aEvent);
             } else {
--- a/browser/config/tooltool-manifests/linux64/jsshell.manifest
+++ b/browser/config/tooltool-manifests/linux64/jsshell.manifest
@@ -1,9 +1,9 @@
 [
   {
-    "size": 996696,
-    "digest": "7c09f6144c84a6dd9bdb8d817e7957b432e72138ecb4a2adf6f5754b7ef2a2bd5c53ba113659283644f510a1aab87a1efc09851bc07457978eb0c0a63f4c29a4",
+    "size": 2156788,
+    "digest": "8e3b50c4879f1321655a7b2b613dc6c981580fb5e14af585eda1f79020e98378f67bfdf46bf49c060635b283b1892d0e5ca23ab219af83de0456fbee3e276983",
     "algorithm": "sha512",
     "filename": "breakpad-tools.tar.xz",
     "unpack": true
   }
 ]
--- a/build/moz.configure/toolchain.configure
+++ b/build/moz.configure/toolchain.configure
@@ -1012,17 +1012,17 @@ def compiler(language, host_or_target, c
                 log.warning('The value of %s is not used by this build system.'
                             % linker_var)
 
         if host_or_target == target:
             @depends(valid_compiler)
             def is_msvc(compiler):
                 return compiler.type == 'msvc'
 
-            imply_option('LINK', linker, reason='LD', when=is_msvc)
+            imply_option('LINKER', linker, reason='LD', when=is_msvc)
 
     return valid_compiler
 
 
 c_compiler = compiler('C', target)
 cxx_compiler = compiler('C++', target, c_compiler=c_compiler)
 host_c_compiler = compiler('C', host, other_compiler=c_compiler)
 host_cxx_compiler = compiler('C++', host, c_compiler=host_c_compiler,
--- a/build/moz.configure/windows.configure
+++ b/build/moz.configure/windows.configure
@@ -424,19 +424,19 @@ def valid_mt(path):
     except subprocess.CalledProcessError:
         pass
     raise FatalCheckError('%s is not Microsoft Manifest Tool')
 
 
 set_config('MSMANIFEST_TOOL', depends(valid_mt)(lambda x: bool(x)))
 
 
-link = check_prog('LINK', ('link.exe',), paths=vc_compiler_path)
+link = check_prog('LINKER', ('link.exe',), paths=vc_compiler_path)
 
-add_old_configure_assignment('LINK', link)
+add_old_configure_assignment('LINKER', link)
 
 
 # Normally, we'd just have CC, etc. set to absolute paths, but the build system
 # doesn't currently handle properly the case where the paths contain spaces.
 # Additionally, there's the issue described in toolchain.configure, in
 # valid_compiler().
 @depends(sdk_bin_path)
 @imports('os')
--- a/config/config.mk
+++ b/config/config.mk
@@ -413,17 +413,17 @@ CREATE_PRECOMPLETE_CMD = $(PYTHON) $(abs
 # MDDEPDIR is the subdirectory where dependency files are stored
 MDDEPDIR := .deps
 
 EXPAND_LIBS_EXEC = $(PYTHON) $(MOZILLA_DIR)/config/expandlibs_exec.py
 EXPAND_LIBS_GEN = $(PYTHON) $(MOZILLA_DIR)/config/expandlibs_gen.py
 EXPAND_AR = $(EXPAND_LIBS_EXEC) --extract -- $(AR)
 EXPAND_CC = $(EXPAND_LIBS_EXEC) --uselist -- $(CC)
 EXPAND_CCC = $(EXPAND_LIBS_EXEC) --uselist -- $(CCC)
-EXPAND_LINK = $(EXPAND_LIBS_EXEC) --uselist -- $(LINK)
+EXPAND_LINK = $(EXPAND_LIBS_EXEC) --uselist -- $(LINKER)
 EXPAND_MKSHLIB_ARGS = --uselist
 ifdef SYMBOL_ORDER
 EXPAND_MKSHLIB_ARGS += --symbol-order $(SYMBOL_ORDER)
 endif
 EXPAND_MKSHLIB = $(EXPAND_LIBS_EXEC) $(EXPAND_MKSHLIB_ARGS) -- $(MKSHLIB)
 
 # $(call CHECK_SYMBOLS,lib,PREFIX,dep_name,test)
 # Checks that the given `lib` doesn't contain dependency on symbols with a
--- a/config/rules.mk
+++ b/config/rules.mk
@@ -586,17 +586,17 @@ ifdef ENABLE_STRIP
 endif
 ifdef MOZ_POST_PROGRAM_COMMAND
 	$(MOZ_POST_PROGRAM_COMMAND) $@
 endif
 
 $(HOST_PROGRAM): $(HOST_PROGOBJS) $(HOST_LIBS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 	$(REPORT_BUILD)
 ifeq (_WINNT,$(GNU_CC)_$(HOST_OS_ARCH))
-	$(EXPAND_LIBS_EXEC) -- $(LINK) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
+	$(EXPAND_LIBS_EXEC) -- $(LINKER) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $(HOST_OBJS) $(WIN32_EXE_LDFLAGS) $(HOST_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 ifdef MSMANIFEST_TOOL
 	@if test -f $@.manifest; then \
 		if test -f '$(srcdir)/$@.manifest'; then \
 			echo 'Embedding manifest from $(srcdir)/$@.manifest and $@.manifest'; \
 			$(MT) -NOLOGO -MANIFEST '$(win_srcdir)/$@.manifest' $@.manifest -OUTPUTRESOURCE:$@\;1; \
 		else \
 			echo 'Embedding manifest from $@.manifest'; \
 			$(MT) -NOLOGO -MANIFEST $@.manifest -OUTPUTRESOURCE:$@\;1; \
@@ -645,17 +645,17 @@ ifdef ENABLE_STRIP
 endif
 ifdef MOZ_POST_PROGRAM_COMMAND
 	$(MOZ_POST_PROGRAM_COMMAND) $@
 endif
 
 $(HOST_SIMPLE_PROGRAMS): host_%$(HOST_BIN_SUFFIX): host_%.$(OBJ_SUFFIX) $(HOST_LIBS) $(HOST_EXTRA_DEPS) $(GLOBAL_DEPS)
 	$(REPORT_BUILD)
 ifeq (WINNT_,$(HOST_OS_ARCH)_$(GNU_CC))
-	$(EXPAND_LIBS_EXEC) -- $(LINK) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
+	$(EXPAND_LIBS_EXEC) -- $(LINKER) -NOLOGO -OUT:$@ -PDB:$(HOST_PDBFILE) $< $(WIN32_EXE_LDFLAGS) $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 else
 ifneq (,$(HOST_CPPSRCS)$(USE_HOST_CXX))
 	$(EXPAND_LIBS_EXEC) -- $(HOST_CXX) $(HOST_OUTOPTION)$@ $(HOST_CXX_LDFLAGS) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 else
 	$(EXPAND_LIBS_EXEC) -- $(HOST_CC) $(HOST_OUTOPTION)$@ $(HOST_C_LDFLAGS) $< $(HOST_LIBS) $(HOST_EXTRA_LIBS)
 endif
 endif
 ifndef CROSS_COMPILE
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -15217,17 +15217,17 @@ nsDocShell::ShouldPrepareForIntercept(ns
 
   if (!aIsNonSubresourceRequest) {
     nsCOMPtr<nsIDocument> doc = GetDocument();
     if (!doc) {
       return NS_ERROR_NOT_AVAILABLE;
     }
 
     ErrorResult rv;
-    *aShouldIntercept = swm->IsControlled(doc, rv);
+    *aShouldIntercept = doc->GetController().isSome();
     if (NS_WARN_IF(rv.Failed())) {
       return rv.StealNSResult();
     }
 
     return NS_OK;
   }
 
   // If the user has set a cookie policy that restricts cookies, then
--- a/dom/base/nsContentSink.cpp
+++ b/dom/base/nsContentSink.cpp
@@ -43,16 +43,17 @@
 #include "nsWidgetsCID.h"
 #include "nsIDOMNode.h"
 #include "mozAutoDocUpdate.h"
 #include "nsIWebNavigation.h"
 #include "nsGenericHTMLElement.h"
 #include "nsHTMLDNSPrefetch.h"
 #include "nsIObserverService.h"
 #include "mozilla/Preferences.h"
+#include "mozilla/dom/ServiceWorkerDescriptor.h"
 #include "mozilla/dom/ScriptLoader.h"
 #include "nsParserConstants.h"
 #include "nsSandboxFlags.h"
 #include "Link.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
@@ -1104,17 +1105,17 @@ nsContentSink::ProcessOfflineManifest(co
   // Don't bother processing offline manifest for documents
   // without a docshell
   if (!mDocShell) {
     return;
   }
 
   // If this document has been interecepted, let's skip the processing of the
   // manifest.
-  if (nsContentUtils::IsControlledByServiceWorker(mDocument)) {
+  if (mDocument->GetController().isSome()) {
     return;
   }
 
   // If the docshell's in private browsing mode, we don't want to do any
   // manifest processing.
   nsCOMPtr<nsILoadContext> loadContext = do_QueryInterface(mDocShell);
   if (loadContext->UsePrivateBrowsing()) {
     return;
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -1974,46 +1974,24 @@ nsContentUtils::ParseLegacyFontSize(cons
       value = 3 + value;
     }
   }
 
   return clamped(value, 1, 7);
 }
 
 /* static */
-bool
-nsContentUtils::IsControlledByServiceWorker(nsIDocument* aDocument)
-{
-  if (nsContentUtils::IsInPrivateBrowsing(aDocument)) {
-    return false;
-  }
-
-  RefPtr<workers::ServiceWorkerManager> swm =
-    workers::ServiceWorkerManager::GetInstance();
-  MOZ_ASSERT(swm);
-
-  ErrorResult rv;
-  bool controlled = swm->IsControlled(aDocument, rv);
-  if (NS_WARN_IF(rv.Failed())) {
-    rv.SuppressException();
-    return false;
-  }
-
-  return controlled;
-}
-
-/* static */
 void
 nsContentUtils::GetOfflineAppManifest(nsIDocument *aDocument, nsIURI **aURI)
 {
   MOZ_ASSERT(NS_IsMainThread());
   MOZ_ASSERT(aDocument);
   *aURI = nullptr;
 
-  if (IsControlledByServiceWorker(aDocument)) {
+  if (aDocument->GetController().isSome()) {
     return;
   }
 
   Element* docElement = aDocument->GetRootElement();
   if (!docElement) {
     return;
   }
 
--- a/dom/base/nsContentUtils.h
+++ b/dom/base/nsContentUtils.h
@@ -2392,21 +2392,16 @@ public:
    * Returns true if the <style scoped> enabling pref is true.
    */
   static bool IsScopedStylePrefEnabled()
   {
     return sIsScopedStyleEnabled;
   }
 
   /**
-   * Return true if this doc is controlled by a ServiceWorker.
-   */
-  static bool IsControlledByServiceWorker(nsIDocument* aDocument);
-
-  /**
    * Fire mutation events for changes caused by parsing directly into a
    * context node.
    *
    * @param aDoc the document of the node
    * @param aDest the destination node that got stuff appended to it
    * @param aOldChildCount the number of children the node had before parsing
    */
   static void FireMutationEventsForDirectParsing(nsIDocument* aDoc,
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -207,29 +207,32 @@
 
 #include "imgILoader.h"
 #include "imgRequestProxy.h"
 #include "nsWrapperCacheInlines.h"
 #include "nsSandboxFlags.h"
 #include "mozilla/dom/AnimatableBinding.h"
 #include "mozilla/dom/AnonymousContent.h"
 #include "mozilla/dom/BindingUtils.h"
+#include "mozilla/dom/ClientInfo.h"
+#include "mozilla/dom/ClientState.h"
 #include "mozilla/dom/DocumentFragment.h"
 #include "mozilla/dom/DocumentTimeline.h"
 #include "mozilla/dom/Event.h"
 #include "mozilla/dom/HTMLBodyElement.h"
 #include "mozilla/dom/HTMLInputElement.h"
 #include "mozilla/dom/ImageTracker.h"
 #include "mozilla/dom/MediaQueryList.h"
 #include "mozilla/dom/NodeFilterBinding.h"
 #include "mozilla/OwningNonNull.h"
 #include "mozilla/dom/TabChild.h"
 #include "mozilla/dom/WebComponentsBinding.h"
 #include "mozilla/dom/CustomElementRegistryBinding.h"
 #include "mozilla/dom/CustomElementRegistry.h"
+#include "mozilla/dom/ServiceWorkerDescriptor.h"
 #include "mozilla/dom/TimeoutManager.h"
 #include "mozilla/ExtensionPolicyService.h"
 #include "nsFrame.h"
 #include "nsDOMCaretPosition.h"
 #include "nsViewportInfo.h"
 #include "mozilla/StaticPtr.h"
 #include "nsITextControlElement.h"
 #include "nsIDOMNSEditableElement.h"
@@ -5047,17 +5050,17 @@ nsDocument::SetScriptGlobalObject(nsIScr
         loadGroup->RemoveRequest(mOnloadBlocker, nullptr, NS_OK);
       }
     }
 
     using mozilla::dom::workers::ServiceWorkerManager;
     RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
     if (swm) {
       ErrorResult error;
-      if (swm->IsControlled(this, error)) {
+      if (GetController().isSome()) {
         imgLoader* loader = nsContentUtils::GetImgLoaderForDocument(this);
         if (loader) {
           loader->ClearCacheForControlledDocument(this);
         }
 
         // We may become controlled again if this document comes back out
         // of bfcache.  Clear our state to allow that to happen.  Only
         // clear this flag if we are actually controlled, though, so pages
@@ -5837,16 +5840,46 @@ nsIDocument::GetAnonRootIfInAnonymousCon
       return child->IsElement() ? child->AsElement() : nullptr;
     }
     child = parent;
     parent = child->GetParentNode();
   }
   return nullptr;
 }
 
+Maybe<ClientInfo>
+nsIDocument::GetClientInfo() const
+{
+  nsPIDOMWindowInner* inner = GetInnerWindow();
+  if (inner) {
+    return Move(inner->GetClientInfo());
+  }
+  return Move(Maybe<ClientInfo>());
+}
+
+Maybe<ClientState>
+nsIDocument::GetClientState() const
+{
+  nsPIDOMWindowInner* inner = GetInnerWindow();
+  if (inner) {
+    return Move(inner->GetClientState());
+  }
+  return Move(Maybe<ClientState>());
+}
+
+Maybe<ServiceWorkerDescriptor>
+nsIDocument::GetController() const
+{
+  nsPIDOMWindowInner* inner = GetInnerWindow();
+  if (inner) {
+    return Move(inner->GetController());
+  }
+  return Move(Maybe<ServiceWorkerDescriptor>());
+}
+
 //
 // nsIDOMDocument interface
 //
 DocumentType*
 nsIDocument::GetDoctype() const
 {
   for (nsIContent* child = GetFirstChild();
        child;
--- a/dom/base/nsGlobalWindowInner.cpp
+++ b/dom/base/nsGlobalWindowInner.cpp
@@ -7407,27 +7407,28 @@ nsGlobalWindowInner::InitWasOffline()
 int16_t
 nsGlobalWindowInner::Orientation(CallerType aCallerType) const
 {
   return nsContentUtils::ResistFingerprinting(aCallerType) ?
            0 : WindowOrientationObserver::OrientationAngle();
 }
 #endif
 
-Console*
+already_AddRefed<Console>
 nsGlobalWindowInner::GetConsole(ErrorResult& aRv)
 {
   if (!mConsole) {
     mConsole = Console::Create(this, aRv);
     if (NS_WARN_IF(aRv.Failed())) {
       return nullptr;
     }
   }
 
-  return mConsole;
+  RefPtr<Console> console = mConsole;
+  return console.forget();
 }
 
 bool
 nsGlobalWindowInner::IsSecureContext() const
 {
   return JS_GetIsSecureContext(js::GetObjectCompartment(GetWrapperPreserveColor()));
 }
 
--- a/dom/base/nsGlobalWindowInner.h
+++ b/dom/base/nsGlobalWindowInner.h
@@ -679,17 +679,17 @@ public:
   nsIDOMNavigator* GetNavigator() override;
   nsIDOMOfflineResourceList* GetApplicationCache(mozilla::ErrorResult& aError);
   already_AddRefed<nsIDOMOfflineResourceList> GetApplicationCache() override;
 
 #if defined(MOZ_WIDGET_ANDROID)
   int16_t Orientation(mozilla::dom::CallerType aCallerType) const;
 #endif
 
-  mozilla::dom::Console* GetConsole(mozilla::ErrorResult& aRv);
+  already_AddRefed<mozilla::dom::Console> GetConsole(mozilla::ErrorResult& aRv);
 
   // https://w3c.github.io/webappsec-secure-contexts/#dom-window-issecurecontext
   bool IsSecureContext() const;
 
   void GetSidebar(mozilla::dom::OwningExternalOrWindowProxy& aResult,
                   mozilla::ErrorResult& aRv);
   already_AddRefed<mozilla::dom::External> GetExternal(mozilla::ErrorResult& aRv);
 
--- a/dom/base/nsIDocument.h
+++ b/dom/base/nsIDocument.h
@@ -123,16 +123,18 @@ class ImageLoader;
 class Rule;
 } // namespace css
 
 namespace dom {
 class Animation;
 class AnonymousContent;
 class Attr;
 class BoxObject;
+class ClientInfo;
+class ClientState;
 class CDATASection;
 class Comment;
 struct CustomElementDefinition;
 class DocGroup;
 class DocumentFragment;
 class DocumentTimeline;
 class DocumentType;
 class DOMImplementation;
@@ -154,16 +156,17 @@ class MediaQueryList;
 class GlobalObject;
 class NodeFilter;
 class NodeIterator;
 enum class OrientationType : uint8_t;
 class ProcessingInstruction;
 class Promise;
 class ScriptLoader;
 class Selection;
+class ServiceWorkerDescriptor;
 class StyleSheetList;
 class SVGDocument;
 class SVGSVGElement;
 class Touch;
 class TouchList;
 class TreeWalker;
 class XPathEvaluator;
 class XPathExpression;
@@ -1119,16 +1122,20 @@ public:
    */
   virtual void ScheduleSVGForPresAttrEvaluation(nsSVGElement* aSVG) = 0;
   // Unschedule an element scheduled by ScheduleFrameRequestCallback (e.g. for when it is destroyed)
   virtual void UnscheduleSVGForPresAttrEvaluation(nsSVGElement* aSVG) = 0;
 
   // Resolve all SVG pres attrs scheduled in ScheduleSVGForPresAttrEvaluation
   virtual void ResolveScheduledSVGPresAttrs() = 0;
 
+  mozilla::Maybe<mozilla::dom::ClientInfo> GetClientInfo() const;
+  mozilla::Maybe<mozilla::dom::ClientState> GetClientState() const;
+  mozilla::Maybe<mozilla::dom::ServiceWorkerDescriptor> GetController() const;
+
 protected:
   virtual Element *GetRootElementInternal() const = 0;
 
   void SetPageUnloadingEventTimeStamp()
   {
     MOZ_ASSERT(!mPageUnloadingEventTimeStamp);
     mPageUnloadingEventTimeStamp = mozilla::TimeStamp::NowLoRes();
   }
--- a/dom/clients/manager/ClientInfo.cpp
+++ b/dom/clients/manager/ClientInfo.cpp
@@ -6,16 +6,18 @@
 
 #include "ClientInfo.h"
 
 #include "mozilla/dom/ClientIPCTypes.h"
 
 namespace mozilla {
 namespace dom {
 
+using mozilla::ipc::PrincipalInfo;
+
 ClientInfo::ClientInfo(const nsID& aId,
                        ClientType aType,
                        const mozilla::ipc::PrincipalInfo& aPrincipalInfo,
                        const TimeStamp& aCreationTime)
   : mData(MakeUnique<IPCClientInfo>(aId, aType, aPrincipalInfo, aCreationTime,
                                     EmptyCString(),
                                     mozilla::dom::FrameType::None))
 {
@@ -105,10 +107,36 @@ ClientInfo::SetFrameType(mozilla::dom::F
 }
 
 const IPCClientInfo&
 ClientInfo::ToIPC() const
 {
   return *mData;
 }
 
+bool
+ClientInfo::IsPrivateBrowsing() const
+{
+  switch(PrincipalInfo().type()) {
+    case PrincipalInfo::TContentPrincipalInfo:
+    {
+      auto& p = PrincipalInfo().get_ContentPrincipalInfo();
+      return p.attrs().mPrivateBrowsingId != 0;
+    }
+    case PrincipalInfo::TSystemPrincipalInfo:
+    {
+      return false;
+    }
+    case PrincipalInfo::TNullPrincipalInfo:
+    {
+      auto& p = PrincipalInfo().get_NullPrincipalInfo();
+      return p.attrs().mPrivateBrowsingId != 0;
+    }
+    default:
+    {
+      // clients should never be expanded principals
+      MOZ_CRASH("unexpected principal type!");
+    }
+  }
+}
+
 } // namespace dom
 } // namespace mozilla
--- a/dom/clients/manager/ClientInfo.h
+++ b/dom/clients/manager/ClientInfo.h
@@ -86,14 +86,18 @@ public:
   // Set the frame type for the global.  This should only happen once the
   // global has become execution ready.
   void
   SetFrameType(mozilla::dom::FrameType aFrameType);
 
   // Convert to the ipdl generated type.
   const IPCClientInfo&
   ToIPC() const;
+
+  // Determine if the client is in private browsing mode.
+  bool
+  IsPrivateBrowsing() const;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // _mozilla_dom_ClientInfo_h
--- a/dom/clients/manager/ClientOpenWindowUtils.cpp
+++ b/dom/clients/manager/ClientOpenWindowUtils.cpp
@@ -75,25 +75,18 @@ public:
     nsresult rv = securityManager->CheckSameOriginURI(doc->GetOriginalURI(),
                                                       mBaseURI, false);
     if (NS_FAILED(rv)) {
       mPromise->Resolve(NS_OK, __func__);
       mPromise = nullptr;
       return NS_OK;
     }
 
-    nsPIDOMWindowInner* innerWindow = doc->GetInnerWindow();
-    if (NS_WARN_IF(!innerWindow)) {
-      mPromise->Reject(NS_ERROR_FAILURE, __func__);
-      mPromise = nullptr;
-      return NS_OK;
-    }
-
-    Maybe<ClientInfo> info = innerWindow->GetClientInfo();
-    Maybe<ClientState> state = innerWindow->GetClientState();
+    Maybe<ClientInfo> info(doc->GetClientInfo());
+    Maybe<ClientState> state(doc->GetClientState());
 
     if (NS_WARN_IF(info.isNothing() || state.isNothing())) {
       mPromise->Reject(NS_ERROR_FAILURE, __func__);
       mPromise = nullptr;
       return NS_OK;
     }
 
     mPromise->Resolve(ClientInfoAndState(info.ref().ToIPC(), state.ref().ToIPC()),
--- a/dom/clients/manager/ClientSource.cpp
+++ b/dom/clients/manager/ClientSource.cpp
@@ -350,16 +350,21 @@ ClientSource::WorkerSyncPing(WorkerPriva
   GetActor()->SendWorkerSyncPing();
 }
 
 void
 ClientSource::SetController(const ServiceWorkerDescriptor& aServiceWorker)
 {
   NS_ASSERT_OWNINGTHREAD(ClientSource);
 
+  // A client in private browsing mode should never be controlled by
+  // a service worker.  The principal origin attributes should guarantee
+  // this invariant.
+  MOZ_DIAGNOSTIC_ASSERT(!mClientInfo.IsPrivateBrowsing());
+
   if (mController.isSome() && mController.ref() == aServiceWorker) {
     return;
   }
 
   mController.reset();
   mController.emplace(aServiceWorker);
 
   RefPtr<ServiceWorkerContainer> swc;
--- a/dom/console/Console.cpp
+++ b/dom/console/Console.cpp
@@ -812,19 +812,18 @@ Console::Create(nsPIDOMWindowInner* aWin
   return console.forget();
 }
 
 Console::Console(nsPIDOMWindowInner* aWindow)
   : mWindow(aWindow)
   , mOuterID(0)
   , mInnerID(0)
   , mStatus(eUnknown)
+  , mCreationTimeStamp(TimeStamp::Now())
 {
-  MOZ_ASSERT_IF(NS_IsMainThread(), aWindow);
-
   if (mWindow) {
     mInnerID = mWindow->WindowID();
 
     // Without outerwindow any console message coming from this object will not
     // shown in the devtools webconsole. But this should be fine because
     // probably we are shutting down, or the window is CCed/GCed.
     nsPIDOMWindowOuter* outerWindow = mWindow->GetOuterWindow();
     if (outerWindow) {
@@ -850,19 +849,21 @@ Console::Initialize(ErrorResult& aRv)
 
   if (NS_IsMainThread()) {
     nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
     if (NS_WARN_IF(!obs)) {
       aRv.Throw(NS_ERROR_FAILURE);
       return;
     }
 
-    aRv = obs->AddObserver(this, "inner-window-destroyed", true);
-    if (NS_WARN_IF(aRv.Failed())) {
-      return;
+    if (mWindow) {
+      aRv = obs->AddObserver(this, "inner-window-destroyed", true);
+      if (NS_WARN_IF(aRv.Failed())) {
+        return;
+      }
     }
 
     aRv = obs->AddObserver(this, "memory-pressure", true);
     if (NS_WARN_IF(aRv.Failed())) {
       return;
     }
   }
 
@@ -1218,46 +1219,48 @@ Console::MethodInternal(JSContext* aCx, 
 
   if (NS_WARN_IF(!callData->Initialize(aCx, aMethodName, aMethodString,
                                        aData, this))) {
     return;
   }
 
   OriginAttributes oa;
 
-  if (mWindow) {
-    // Save the principal's OriginAttributes in the console event data
-    // so that we will be able to filter messages by origin attributes.
-    nsCOMPtr<nsIScriptObjectPrincipal> sop = do_QueryInterface(mWindow);
-    if (NS_WARN_IF(!sop)) {
-      return;
-    }
-
-    nsCOMPtr<nsIPrincipal> principal = sop->GetPrincipal();
-    if (NS_WARN_IF(!principal)) {
-      return;
-    }
-
-    oa = principal->OriginAttributesRef();
-    callData->SetAddonId(principal);
+  if (NS_IsMainThread()) {
+    if (mWindow) {
+      // Save the principal's OriginAttributes in the console event data
+      // so that we will be able to filter messages by origin attributes.
+      nsCOMPtr<nsIScriptObjectPrincipal> sop = do_QueryInterface(mWindow);
+      if (NS_WARN_IF(!sop)) {
+        return;
+      }
+
+      nsCOMPtr<nsIPrincipal> principal = sop->GetPrincipal();
+      if (NS_WARN_IF(!principal)) {
+        return;
+      }
+
+      oa = principal->OriginAttributesRef();
+      callData->SetAddonId(principal);
 
 #ifdef DEBUG
-    if (!nsContentUtils::IsSystemPrincipal(principal)) {
-      nsCOMPtr<nsIWebNavigation> webNav = do_GetInterface(mWindow);
-      if (webNav) {
-        nsCOMPtr<nsILoadContext> loadContext = do_QueryInterface(webNav);
-        MOZ_ASSERT(loadContext);
-
-        bool pb;
-        if (NS_SUCCEEDED(loadContext->GetUsePrivateBrowsing(&pb))) {
-          MOZ_ASSERT(pb == !!oa.mPrivateBrowsingId);
+      if (!nsContentUtils::IsSystemPrincipal(principal)) {
+        nsCOMPtr<nsIWebNavigation> webNav = do_GetInterface(mWindow);
+        if (webNav) {
+          nsCOMPtr<nsILoadContext> loadContext = do_QueryInterface(webNav);
+          MOZ_ASSERT(loadContext);
+
+          bool pb;
+          if (NS_SUCCEEDED(loadContext->GetUsePrivateBrowsing(&pb))) {
+            MOZ_ASSERT(pb == !!oa.mPrivateBrowsingId);
+          }
         }
       }
+#endif
     }
-#endif
   } else {
     WorkerPrivate* workerPrivate = GetCurrentThreadWorkerPrivate();
     MOZ_ASSERT(workerPrivate);
     oa = workerPrivate->GetOriginAttributes();
   }
 
   callData->SetOriginAttributes(oa);
 
@@ -1285,77 +1288,21 @@ Console::MethodInternal(JSContext* aCx, 
     if (NS_WARN_IF(NS_FAILED(rv))) {
       return;
     }
   }
 
   DOMHighResTimeStamp monotonicTimer;
 
   // Monotonic timer for 'time' and 'timeEnd'
-  if (aMethodName == MethodTime ||
-      aMethodName == MethodTimeEnd ||
-      aMethodName == MethodTimeStamp) {
-    if (mWindow) {
-      nsGlobalWindowInner *win = nsGlobalWindowInner::Cast(mWindow);
-      MOZ_ASSERT(win);
-
-      RefPtr<Performance> performance = win->GetPerformance();
-      if (!performance) {
-        return;
-      }
-
-      monotonicTimer = performance->Now();
-
-      nsDocShell* docShell = static_cast<nsDocShell*>(mWindow->GetDocShell());
-      RefPtr<TimelineConsumers> timelines = TimelineConsumers::Get();
-      bool isTimelineRecording = timelines && timelines->HasConsumer(docShell);
-
-      // The 'timeStamp' recordings do not need an argument; use empty string
-      // if no arguments passed in.
-      if (isTimelineRecording && aMethodName == MethodTimeStamp) {
-        JS::Rooted<JS::Value> value(aCx, aData.Length() == 0
-          ? JS_GetEmptyStringValue(aCx)
-          : aData[0]);
-        JS::Rooted<JSString*> jsString(aCx, JS::ToString(aCx, value));
-        if (!jsString) {
-          return;
-        }
-
-        nsAutoJSString key;
-        if (!key.init(aCx, jsString)) {
-          return;
-        }
-
-        timelines->AddMarkerForDocShell(docShell, Move(
-          MakeUnique<TimestampTimelineMarker>(key)));
-      }
-      // For `console.time(foo)` and `console.timeEnd(foo)`.
-      else if (isTimelineRecording && aData.Length() == 1) {
-        JS::Rooted<JS::Value> value(aCx, aData[0]);
-        JS::Rooted<JSString*> jsString(aCx, JS::ToString(aCx, value));
-        if (!jsString) {
-          return;
-        }
-
-        nsAutoJSString key;
-        if (!key.init(aCx, jsString)) {
-          return;
-        }
-
-        timelines->AddMarkerForDocShell(docShell, Move(
-          MakeUnique<ConsoleTimelineMarker>(
-            key, aMethodName == MethodTime ? MarkerTracingType::START
-                                           : MarkerTracingType::END)));
-      }
-    } else {
-      WorkerPrivate* workerPrivate = GetCurrentThreadWorkerPrivate();
-      MOZ_ASSERT(workerPrivate);
-
-      monotonicTimer = workerPrivate->TimeStampToDOMHighRes(TimeStamp::Now());
-    }
+  if ((aMethodName == MethodTime ||
+       aMethodName == MethodTimeEnd ||
+       aMethodName == MethodTimeStamp) &&
+      !MonotonicTimer(aCx, aMethodName, aData, &monotonicTimer)) {
+    return;
   }
 
   if (aMethodName == MethodTime && !aData.IsEmpty()) {
     callData->mStartTimerStatus = StartTimer(aCx, aData[0],
                                              monotonicTimer,
                                              callData->mStartTimerLabel,
                                              &callData->mStartTimerValue);
   }
@@ -1370,17 +1317,27 @@ Console::MethodInternal(JSContext* aCx, 
   else if (aMethodName == MethodCount) {
     callData->mCountValue = IncreaseCounter(aCx, aData, callData->mCountLabel);
     if (!callData->mCountValue) {
       return;
     }
   }
 
   if (NS_IsMainThread()) {
-    callData->SetIDs(mOuterID, mInnerID);
+    if (mWindow) {
+      callData->SetIDs(mOuterID, mInnerID);
+    } else {
+      nsAutoString filename;
+      if (callData->mTopStackFrame.isSome()) {
+        filename = callData->mTopStackFrame->mFilename;
+      }
+
+      callData->SetIDs(NS_LITERAL_STRING("jsm"), filename);
+    }
+
     ProcessCallData(aCx, callData, aData);
 
     // Just because we don't want to expose
     // retrieveConsoleEvents/setConsoleEventHandler to main-thread, we can
     // cleanup the mCallDataStorage:
     UnstoreCallData(callData);
     return;
   }
@@ -2431,34 +2388,42 @@ Console::GetConsole(const GlobalObject& 
 
   if (console->IsShuttingDown()) {
     return nullptr;
   }
 
   return console.forget();
 }
 
-/* static */ Console*
+/* static */ already_AddRefed<Console>
 Console::GetConsoleInternal(const GlobalObject& aGlobal, ErrorResult& aRv)
 {
   // Worklet
   if (NS_IsMainThread()) {
     nsCOMPtr<WorkletGlobalScope> workletScope =
       do_QueryInterface(aGlobal.GetAsSupports());
     if (workletScope) {
       return workletScope->GetConsole(aRv);
     }
   }
 
   // Window
   if (NS_IsMainThread()) {
     nsCOMPtr<nsPIDOMWindowInner> innerWindow =
       do_QueryInterface(aGlobal.GetAsSupports());
-    if (NS_WARN_IF(!innerWindow)) {
-      return nullptr;
+
+    // we are probably running a chrome script.
+    if (!innerWindow) {
+      RefPtr<Console> console = new Console(nullptr);
+      console->Initialize(aRv);
+      if (NS_WARN_IF(aRv.Failed())) {
+        return nullptr;
+      }
+
+      return console.forget();
     }
 
     nsGlobalWindowInner* window = nsGlobalWindowInner::Cast(innerWindow);
     return window->GetConsole(aRv);
   }
 
   // Workers
   MOZ_ASSERT(!NS_IsMainThread());
@@ -2487,10 +2452,90 @@ Console::GetConsoleInternal(const Global
       workerPrivate->DebuggerGlobalScope();
     MOZ_ASSERT(debuggerScope);
     MOZ_ASSERT(debuggerScope == global, "Which kind of global do we have?");
 
     return debuggerScope->GetConsole(aRv);
   }
 }
 
+bool
+Console::MonotonicTimer(JSContext* aCx, MethodName aMethodName,
+                        const Sequence<JS::Value>& aData,
+                        DOMHighResTimeStamp* aTimeStamp)
+{
+  if (mWindow) {
+    nsGlobalWindowInner *win = nsGlobalWindowInner::Cast(mWindow);
+    MOZ_ASSERT(win);
+
+    RefPtr<Performance> performance = win->GetPerformance();
+    if (!performance) {
+      return false;
+    }
+
+    *aTimeStamp = performance->Now();
+
+    nsDocShell* docShell = static_cast<nsDocShell*>(mWindow->GetDocShell());
+    RefPtr<TimelineConsumers> timelines = TimelineConsumers::Get();
+    bool isTimelineRecording = timelines && timelines->HasConsumer(docShell);
+
+    // The 'timeStamp' recordings do not need an argument; use empty string
+    // if no arguments passed in.
+    if (isTimelineRecording && aMethodName == MethodTimeStamp) {
+      JS::Rooted<JS::Value> value(aCx, aData.Length() == 0
+        ? JS_GetEmptyStringValue(aCx)
+        : aData[0]);
+      JS::Rooted<JSString*> jsString(aCx, JS::ToString(aCx, value));
+      if (!jsString) {
+        return false;
+      }
+
+      nsAutoJSString key;
+      if (!key.init(aCx, jsString)) {
+        return false;
+      }
+
+      timelines->AddMarkerForDocShell(docShell, Move(
+        MakeUnique<TimestampTimelineMarker>(key)));
+    }
+    // For `console.time(foo)` and `console.timeEnd(foo)`.
+    else if (isTimelineRecording && aData.Length() == 1) {
+      JS::Rooted<JS::Value> value(aCx, aData[0]);
+      JS::Rooted<JSString*> jsString(aCx, JS::ToString(aCx, value));
+      if (!jsString) {
+        return false;
+      }
+
+      nsAutoJSString key;
+      if (!key.init(aCx, jsString)) {
+        return false;
+      }
+
+      timelines->AddMarkerForDocShell(docShell, Move(
+        MakeUnique<ConsoleTimelineMarker>(
+          key, aMethodName == MethodTime ? MarkerTracingType::START
+                                         : MarkerTracingType::END)));
+    }
+
+    return true;
+  }
+
+  if (NS_IsMainThread()) {
+    double duration = (TimeStamp::Now() - mCreationTimeStamp).ToMilliseconds();
+
+    // Round down to the nearest 5us, because if the timer is too accurate
+    // people can do nasty timing attacks with it.  See similar code in the
+    // worker Performance implementation.
+    const double maxResolutionMs = 0.005;
+    return nsRFPService::ReduceTimePrecisionAsMSecs(
+      floor(duration / maxResolutionMs) * maxResolutionMs);
+    return true;
+  }
+
+  WorkerPrivate* workerPrivate = GetCurrentThreadWorkerPrivate();
+  MOZ_ASSERT(workerPrivate);
+
+  *aTimeStamp = workerPrivate->TimeStampToDOMHighRes(TimeStamp::Now());
+  return true;
+}
+
 } // namespace dom
 } // namespace mozilla
--- a/dom/console/Console.h
+++ b/dom/console/Console.h
@@ -5,16 +5,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #ifndef mozilla_dom_Console_h
 #define mozilla_dom_Console_h
 
 #include "mozilla/dom/BindingDeclarations.h"
 #include "mozilla/ErrorResult.h"
 #include "mozilla/JSObjectHolder.h"
+#include "mozilla/TimeStamp.h"
 #include "nsCycleCollectionParticipant.h"
 #include "nsDataHashtable.h"
 #include "nsHashKeys.h"
 #include "nsIObserver.h"
 #include "nsWeakReference.h"
 #include "nsDOMNavigationTiming.h"
 #include "nsPIDOMWindow.h"
 
@@ -154,17 +155,17 @@ private:
     MethodAssert,
     MethodCount,
     MethodClear
   };
 
   static already_AddRefed<Console>
   GetConsole(const GlobalObject& aGlobal);
 
-  static Console*
+  static already_AddRefed<Console>
   GetConsoleInternal(const GlobalObject& aGlobal, ErrorResult &aRv);
 
   static void
   ProfileMethod(const GlobalObject& aGlobal, const nsAString& aAction,
                 const Sequence<JS::Value>& aData);
 
   void
   ProfileMethodInternal(JSContext* aCx, const nsAString& aAction,
@@ -365,16 +366,21 @@ private:
   GetOrCreateSandbox(JSContext* aCx, nsIPrincipal* aPrincipal);
 
   void
   AssertIsOnOwningThread() const;
 
   bool
   IsShuttingDown() const;
 
+  bool
+  MonotonicTimer(JSContext* aCx, MethodName aMethodName,
+                 const Sequence<JS::Value>& aData,
+                 DOMHighResTimeStamp* aTimeStamp);
+
   // All these nsCOMPtr are touched on main thread only.
   nsCOMPtr<nsPIDOMWindowInner> mWindow;
   nsCOMPtr<nsIConsoleAPIStorage> mStorage;
   RefPtr<JSObjectHolder> mSandbox;
 
   // Touched on the owner thread.
   nsDataHashtable<nsStringHashKey, DOMHighResTimeStamp> mTimerRegistry;
   nsDataHashtable<nsStringHashKey, uint32_t> mCounterRegistry;
@@ -401,16 +407,20 @@ private:
   uint64_t mInnerID;
 
   enum {
     eUnknown,
     eInitialized,
     eShuttingDown
   } mStatus;
 
+  // This is used when Console is created and it's used only for JSM custom
+  // console instance.
+  mozilla::TimeStamp mCreationTimeStamp;
+
   friend class ConsoleCallData;
   friend class ConsoleRunnable;
   friend class ConsoleCallDataRunnable;
   friend class ConsoleProfileRunnable;
 };
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/console/moz.build
+++ b/dom/console/moz.build
@@ -39,10 +39,11 @@ LOCAL_INCLUDES += [
     '/docshell/base',
     '/dom/base',
     '/dom/workers',
     '/js/xpconnect/src',
 ]
 
 MOCHITEST_MANIFESTS += [ 'tests/mochitest.ini' ]
 MOCHITEST_CHROME_MANIFESTS += [ 'tests/chrome.ini' ]
+XPCSHELL_TESTS_MANIFESTS += ['tests/xpcshell/xpcshell.ini']
 
 FINAL_LIBRARY = 'xul'
--- a/dom/console/tests/chrome.ini
+++ b/dom/console/tests/chrome.ini
@@ -1,6 +1,8 @@
 [DEFAULT]
 skip-if = os == 'android'
 support-files =
   file_empty.html
+  console.jsm
 
 [test_console.xul]
+[test_jsm.xul]
new file mode 100644
--- /dev/null
+++ b/dom/console/tests/console.jsm
@@ -0,0 +1,11 @@
+/**
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+this.EXPORTED_SYMBOLS = [ "ConsoleTest" ];
+
+this.ConsoleTest = {
+  go: function() {
+    console.log("Hello world!");
+  }
+};
new file mode 100644
--- /dev/null
+++ b/dom/console/tests/test_jsm.xul
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<!--
+  Any copyright is dedicated to the Public Domain.
+  http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<window title="Console + JSM"
+        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+        onload="test();">
+
+  <script type="application/javascript"
+          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
+  <script type="application/javascript"
+          src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>
+
+  <script type="application/javascript">
+  <![CDATA[
+
+const JSM = "chrome://mochitests/content/chrome/dom/console/tests/console.jsm";
+
+function consoleListener() {
+  SpecialPowers.addObserver(this, "console-api-log-event");
+}
+
+consoleListener.prototype  = {
+  observe: function(aSubject, aTopic, aData) {
+    if (aTopic == "console-api-log-event") {
+      var obj = aSubject.wrappedJSObject;
+      if (obj.innerID == JSM) {
+        is(obj.ID, "jsm", "ID and InnerID are correctly set.");
+        is (obj.arguments[0], "Hello world!", "Message matches");
+
+        SpecialPowers.removeObserver(this, "console-api-log-event");
+        SimpleTest.finish();
+      }
+    }
+  }
+}
+function test() {
+  SimpleTest.waitForExplicitFinish();
+
+  var cl = new consoleListener();
+  Components.utils.import(JSM);
+  ConsoleTest.go();
+}
+
+  ]]>
+  </script>
+
+  <body xmlns="http://www.w3.org/1999/xhtml">
+  </body>
+</window>
new file mode 100644
--- /dev/null
+++ b/dom/console/tests/xpcshell/test_basic.js
@@ -0,0 +1,31 @@
+/* Any copyright is dedicated to the Public Domain.
+   http://creativecommons.org/publicdomain/zero/1.0/ */
+
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+add_task(async function() {
+  do_check_true("console" in this);
+
+  let p = new Promise(resolve => {
+    function consoleListener() {
+      Services.obs.addObserver(this, "console-api-log-event");
+    }
+
+    consoleListener.prototype  = {
+      observe: function(aSubject, aTopic, aData) {
+        let obj = aSubject.wrappedJSObject;
+        do_check_true(obj.arguments[0] === 42, "Message received!");
+        do_check_true(obj.ID === "jsm", "The ID is JSM");
+        do_check_true(obj.innerID.endsWith("test_basic.js"), "The innerID matches");
+
+        Services.obs.removeObserver(this, "console-api-log-event");
+        resolve();
+      }
+    };
+
+    new consoleListener();
+  });
+
+  console.log(42);
+  await p;
+});
new file mode 100644
--- /dev/null
+++ b/dom/console/tests/xpcshell/xpcshell.ini
@@ -0,0 +1,5 @@
+[DEFAULT]
+head =
+support-files =
+
+[test_basic.js]
--- a/dom/events/EventStateManager.cpp
+++ b/dom/events/EventStateManager.cpp
@@ -285,16 +285,18 @@ TimeStamp EventStateManager::sLatestUser
 TimeStamp EventStateManager::sHandlingInputStart;
 
 EventStateManager::WheelPrefs*
   EventStateManager::WheelPrefs::sInstance = nullptr;
 bool EventStateManager::WheelPrefs::sWheelEventsEnabledOnPlugins = true;
 EventStateManager::DeltaAccumulator*
   EventStateManager::DeltaAccumulator::sInstance = nullptr;
 
+bool EventStateManager::sIsInputEventsSuppressed = false;
+
 EventStateManager::EventStateManager()
   : mLockCursor(0)
   , mLastFrameConsumedSetCursor(false)
   , mCurrentTarget(nullptr)
     // init d&d gesture state machine variables
   , mGestureDownPoint(0,0)
   , mPresContext(nullptr)
   , mLClickCount(0)
--- a/dom/events/EventStateManager.h
+++ b/dom/events/EventStateManager.h
@@ -310,16 +310,32 @@ public:
   static void GetUserPrefsForWheelEvent(const WidgetWheelEvent* aEvent,
                                         double* aOutMultiplierX,
                                         double* aOutMultiplierY);
 
   // Returns whether or not a frame can be vertically scrolled with a mouse
   // wheel (as opposed to, say, a selection or touch scroll).
   static bool CanVerticallyScrollFrameWithWheel(nsIFrame* aFrame);
 
+  static void SuppressInputEvents()
+  {
+    MOZ_ASSERT(!sIsInputEventsSuppressed);
+    sIsInputEventsSuppressed = true;
+  }
+
+  static void UnsuppressInputEvents()
+  {
+    sIsInputEventsSuppressed = false;
+  }
+
+  static bool IsInputEventsSuppressed()
+  {
+    return sIsInputEventsSuppressed;
+  }
+
   // Holds the point in screen coords that a mouse event was dispatched to,
   // before we went into pointer lock mode. This is constantly updated while
   // the pointer is not locked, but we don't update it while the pointer is
   // locked. This is used by dom::Event::GetScreenCoords() to make mouse
   // events' screen coord appear frozen at the last mouse position while
   // the pointer is locked.
   static CSSIntPoint sLastScreenPoint;
 
@@ -1083,16 +1099,18 @@ private:
   // Time at which we began handling user input. Reset to the epoch
   // once we have finished handling user input.
   static TimeStamp sHandlingInputStart;
 
   // Time at which we began handling the latest user input. Not reset
   // at the end of the input.
   static TimeStamp sLatestUserInputStart;
 
+  static bool sIsInputEventsSuppressed;
+
   RefPtr<OverOutElementsWrapper> mMouseEnterLeaveHelper;
   nsRefPtrHashtable<nsUint32HashKey, OverOutElementsWrapper> mPointersEnterLeaveHelper;
 
 public:
   static nsresult UpdateUserActivityTimer(void);
   // Array for accesskey support
   nsCOMArray<nsIContent> mAccessKeys;
 
--- a/dom/plugins/base/nsPluginInstanceOwner.cpp
+++ b/dom/plugins/base/nsPluginInstanceOwner.cpp
@@ -2295,17 +2295,17 @@ nsEventStatus nsPluginInstanceOwner::Pro
                                presContext->AppUnitsToDevPixels(appPoint.y));
         const WidgetMouseEvent& mouseEvent = *anEvent.AsMouseEvent();
         // Get reference point relative to screen:
         LayoutDeviceIntPoint rootPoint(-1, -1);
         if (widget) {
           rootPoint = anEvent.mRefPoint + widget->WidgetToScreenOffset();
         }
 #ifdef MOZ_WIDGET_GTK
-        Window root = GDK_ROOT_WINDOW();
+        Window root = gfxPlatform::IsHeadless() ? X11None : GDK_ROOT_WINDOW();
 #else
         Window root = X11None; // Could XQueryTree, but this is not important.
 #endif
 
         switch (anEvent.mMessage) {
           case eMouseOver:
           case eMouseOut:
             {
@@ -2382,17 +2382,17 @@ nsEventStatus nsPluginInstanceOwner::Pro
 
    //XXX case eMouseScrollEventClass: not received.
 
    case eKeyboardEventClass:
       if (anEvent.mPluginEvent)
         {
           XKeyEvent &event = pluginEvent.xkey;
 #ifdef MOZ_WIDGET_GTK
-          event.root = GDK_ROOT_WINDOW();
+          event.root = gfxPlatform::IsHeadless() ? X11None : GDK_ROOT_WINDOW();
           event.time = anEvent.mTime;
           const GdkEventKey* gdkEvent =
             static_cast<const GdkEventKey*>(anEvent.mPluginEvent);
           event.keycode = gdkEvent->hardware_keycode;
           event.state = gdkEvent->state;
           switch (anEvent.mMessage)
             {
             case eKeyDown:
--- a/dom/webidl/Console.webidl
+++ b/dom/webidl/Console.webidl
@@ -3,17 +3,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
  *
  * For more information on this interface, please see
  * https://console.spec.whatwg.org/#console-namespace
  */
 
-[Exposed=(Window,Worker,WorkerDebugger,Worklet),
+[Exposed=(Window,Worker,WorkerDebugger,Worklet,System),
  ClassString="Console",
  ProtoObjectHack]
 namespace console {
   // Logging
   void assert(optional boolean condition = false, any... data);
   void clear();
   void count(optional DOMString label = "default");
   void debug(any... data);
--- a/dom/workers/ServiceWorkerManager.cpp
+++ b/dom/workers/ServiceWorkerManager.cpp
@@ -2367,25 +2367,22 @@ ServiceWorkerManager::StartControllingAD
   aRegistration->StartControllingADocument();
   mControlledDocuments.Put(aDoc, aRegistration);
 
   // Mark the document's ClientSource as controlled using the ClientHandle
   // interface.  While we could get at the ClientSource directly from the
   // document here, our goal is to move ServiceWorkerManager to a separate
   // process.  Using the ClientHandle supports this remote operation.
   ServiceWorkerInfo* activeWorker = aRegistration->GetActive();
-  nsPIDOMWindowInner* innerWindow = aDoc->GetInnerWindow();
-  if (activeWorker && innerWindow) {
-    Maybe<ClientInfo> clientInfo = innerWindow->GetClientInfo();
-    if (clientInfo.isSome()) {
-      RefPtr<ClientHandle> clientHandle =
-        ClientManager::CreateHandle(clientInfo.ref(),
-                                    SystemGroup::EventTargetFor(TaskCategory::Other));
-      ref = Move(clientHandle->Control(activeWorker->Descriptor()));
-    }
+  Maybe<ClientInfo> clientInfo = aDoc->GetClientInfo();
+  if (activeWorker && clientInfo.isSome()) {
+    RefPtr<ClientHandle> clientHandle =
+      ClientManager::CreateHandle(clientInfo.ref(),
+                                  SystemGroup::EventTargetFor(TaskCategory::Other));
+    ref = Move(clientHandle->Control(activeWorker->Descriptor()));
   }
 
   Telemetry::Accumulate(Telemetry::SERVICE_WORKER_CONTROLLED_DOCUMENTS, 1);
   return Move(ref);
 }
 
 void
 ServiceWorkerManager::StopControllingADocument(ServiceWorkerRegistrationInfo* aRegistration)
@@ -2782,38 +2779,16 @@ ServiceWorkerManager::IsAvailable(nsIPri
   MOZ_ASSERT(aPrincipal);
   MOZ_ASSERT(aURI);
 
   RefPtr<ServiceWorkerRegistrationInfo> registration =
     GetServiceWorkerRegistrationInfo(aPrincipal, aURI);
   return registration && registration->GetActive();
 }
 
-bool
-ServiceWorkerManager::IsControlled(nsIDocument* aDoc, ErrorResult& aRv)
-{
-  MOZ_ASSERT(aDoc);
-
-  if (nsContentUtils::IsInPrivateBrowsing(aDoc)) {
-    // Handle the case where a service worker was previously registered in
-    // a non-private window (bug 1255621).
-    return false;
-  }
-
-  RefPtr<ServiceWorkerRegistrationInfo> registration;
-  nsresult rv = GetDocumentRegistration(aDoc, getter_AddRefs(registration));
-  if (NS_WARN_IF(NS_FAILED(rv) && rv != NS_ERROR_NOT_AVAILABLE)) {
-    // It's OK to ignore the case where we don't have a registration.
-    aRv.Throw(rv);
-    return false;
-  }
-
-  return !!registration;
-}
-
 nsresult
 ServiceWorkerManager::GetDocumentRegistration(nsIDocument* aDoc,
                                               ServiceWorkerRegistrationInfo** aRegistrationInfo)
 {
   RefPtr<ServiceWorkerRegistrationInfo> registration;
   if (!mControlledDocuments.Get(aDoc, getter_AddRefs(registration))) {
     return NS_ERROR_NOT_AVAILABLE;
   }
@@ -3268,45 +3243,41 @@ ServiceWorkerManager::SetSkipWaitingFlag
 void
 ServiceWorkerManager::UpdateClientControllers(ServiceWorkerRegistrationInfo* aRegistration)
 {
   AssertIsOnMainThread();
 
   RefPtr<ServiceWorkerInfo> activeWorker = aRegistration->GetActive();
   MOZ_DIAGNOSTIC_ASSERT(activeWorker);
 
-  AutoTArray<nsCOMPtr<nsPIDOMWindowInner>, 16> innerWindows;
+  AutoTArray<nsCOMPtr<nsIDocument>, 16> docList;
   for (auto iter = mControlledDocuments.Iter(); !iter.Done(); iter.Next()) {
     if (iter.UserData() != aRegistration) {
       continue;
     }
 
     nsCOMPtr<nsIDocument> doc = do_QueryInterface(iter.Key());
     if (NS_WARN_IF(!doc)) {
       continue;
     }
 
-    nsPIDOMWindowInner* innerWindow = doc->GetInnerWindow();
-    if (NS_WARN_IF(!innerWindow)) {
-      continue;
-    }
-
-    innerWindows.AppendElement(innerWindow);
+    docList.AppendElement(doc.forget());
   }
 
   // Fire event after iterating mControlledDocuments is done to prevent
   // modification by reentering from the event handlers during iteration.
-  for (auto& innerWindow : innerWindows) {
-    Maybe<ClientInfo> clientInfo = innerWindow->GetClientInfo();
-    if (clientInfo.isSome()) {
-      RefPtr<ClientHandle> clientHandle =
-        ClientManager::CreateHandle(clientInfo.ref(),
-                                    innerWindow->EventTargetFor(TaskCategory::Other));
-      clientHandle->Control(activeWorker->Descriptor());
+  for (auto& doc : docList) {
+    Maybe<ClientInfo> clientInfo = doc->GetClientInfo();
+    if (clientInfo.isNothing()) {
+      continue;
     }
+    RefPtr<ClientHandle> clientHandle =
+      ClientManager::CreateHandle(clientInfo.ref(),
+                                  SystemGroup::EventTargetFor(TaskCategory::Other));
+    clientHandle->Control(activeWorker->Descriptor());
   }
 }
 
 already_AddRefed<ServiceWorkerRegistrationInfo>
 ServiceWorkerManager::GetRegistration(nsIPrincipal* aPrincipal,
                                       const nsACString& aScope) const
 {
   MOZ_ASSERT(aPrincipal);
--- a/dom/workers/ServiceWorkerManager.h
+++ b/dom/workers/ServiceWorkerManager.h
@@ -120,19 +120,16 @@ public:
   //       are guaranteed the callback will fire before and remove the ref
   //       from this list before the channel is destroyed.
   typedef nsTArray<nsIInterceptedChannel*> InterceptionList;
   nsClassHashtable<nsCStringHashKey, InterceptionList> mNavigationInterceptions;
 
   bool
   IsAvailable(nsIPrincipal* aPrincipal, nsIURI* aURI);
 
-  bool
-  IsControlled(nsIDocument* aDocument, ErrorResult& aRv);
-
   // Return true if the given content process could potentially be executing
   // service worker code with the given principal.  At the current time, this
   // just means that we have any registration for the origin, regardless of
   // scope.  This is a very weak guarantee but is the best we can do when push
   // notifications can currently spin up a service worker in content processes
   // without our involvement in the parent process.
   //
   // In the future when there is only a single ServiceWorkerManager in the
--- a/dom/workers/WorkerScope.cpp
+++ b/dom/workers/WorkerScope.cpp
@@ -131,29 +131,30 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(
 NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
 
 JSObject*
 WorkerGlobalScope::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
 {
   MOZ_CRASH("We should never get here!");
 }
 
-Console*
+already_AddRefed<Console>
 WorkerGlobalScope::GetConsole(ErrorResult& aRv)
 {
   mWorkerPrivate->AssertIsOnWorkerThread();
 
   if (!mConsole) {
     mConsole = Console::Create(nullptr, aRv);
     if (NS_WARN_IF(aRv.Failed())) {
       return nullptr;
     }
   }
 
-  return mConsole;
+  RefPtr<Console> console = mConsole;
+  return console.forget();
 }
 
 Crypto*
 WorkerGlobalScope::GetCrypto(ErrorResult& aError)
 {
   mWorkerPrivate->AssertIsOnWorkerThread();
 
   if (!mCrypto) {
@@ -1040,30 +1041,31 @@ WorkerDebuggerGlobalScope::SetConsoleEve
   RefPtr<Console> console = scope->GetConsole(aRv);
   if (NS_WARN_IF(aRv.Failed())) {
     return;
   }
 
   console->SetConsoleEventHandler(aHandler);
 }
 
-Console*
+already_AddRefed<Console>
 WorkerDebuggerGlobalScope::GetConsole(ErrorResult& aRv)
 {
   mWorkerPrivate->AssertIsOnWorkerThread();
 
   // Debugger console has its own console object.
   if (!mConsole) {
     mConsole = Console::Create(nullptr, aRv);
     if (NS_WARN_IF(aRv.Failed())) {
       return nullptr;
     }
   }
 
-  return mConsole;
+  RefPtr<Console> console = mConsole;
+  return console.forget();
 }
 
 void
 WorkerDebuggerGlobalScope::Dump(JSContext* aCx,
                                 const Optional<nsAString>& aString) const
 {
   WorkerGlobalScope* scope = mWorkerPrivate->GetOrCreateGlobalScope(aCx);
   if (scope) {
--- a/dom/workers/WorkerScope.h
+++ b/dom/workers/WorkerScope.h
@@ -87,17 +87,17 @@ public:
                                                          DOMEventTargetHelper)
 
   WorkerGlobalScope*
   Self()
   {
     return this;
   }
 
-  Console*
+  already_AddRefed<Console>
   GetConsole(ErrorResult& aRv);
 
   Console*
   GetConsoleIfExists() const
   {
     return mConsole;
   }
 
@@ -405,17 +405,17 @@ public:
   void
   RetrieveConsoleEvents(JSContext* aCx, nsTArray<JS::Value>& aEvents,
                         ErrorResult& aRv);
 
   void
   SetConsoleEventHandler(JSContext* aCx, AnyCallback* aHandler,
                          ErrorResult& aRv);
 
-  Console*
+  already_AddRefed<Console>
   GetConsole(ErrorResult& aRv);
 
   Console*
   GetConsoleIfExists() const
   {
     return mConsole;
   }
 
--- a/dom/worklet/WorkletGlobalScope.cpp
+++ b/dom/worklet/WorkletGlobalScope.cpp
@@ -49,27 +49,28 @@ WorkletGlobalScope::~WorkletGlobalScope(
 
 JSObject*
 WorkletGlobalScope::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
 {
   MOZ_CRASH("We should never get here!");
   return nullptr;
 }
 
-Console*
+already_AddRefed<Console>
 WorkletGlobalScope::GetConsole(ErrorResult& aRv)
 {
   if (!mConsole) {
     mConsole = Console::Create(mWindow, aRv);
     if (NS_WARN_IF(aRv.Failed())) {
       return nullptr;
     }
   }
 
-  return mConsole;
+  RefPtr<Console> console = mConsole;
+  return console.forget();
 }
 
 void
 WorkletGlobalScope::Dump(const Optional<nsAString>& aString) const
 {
   if (!nsContentUtils::DOMWindowDumpEnabled()) {
     return;
   }
--- a/dom/worklet/WorkletGlobalScope.h
+++ b/dom/worklet/WorkletGlobalScope.h
@@ -49,17 +49,17 @@ public:
                    JS::MutableHandle<JSObject*> aReflector) = 0;
 
   virtual JSObject*
   GetGlobalJSObject() override
   {
     return GetWrapper();
   }
 
-  Console*
+  already_AddRefed<Console>
   GetConsole(ErrorResult& aRv);
 
   void
   Dump(const Optional<nsAString>& aString) const;
 
 protected:
   ~WorkletGlobalScope();
 
--- a/image/ImageCacheKey.cpp
+++ b/image/ImageCacheKey.cpp
@@ -163,17 +163,17 @@ ImageCacheKey::GetControlledDocumentToke
   // For non-controlled documents, we just return null.  For controlled
   // documents, we cast the pointer into a void* to avoid dereferencing
   // it (since we only use it for comparisons), and return it.
   void* pointer = nullptr;
   using dom::workers::ServiceWorkerManager;
   RefPtr<ServiceWorkerManager> swm = ServiceWorkerManager::GetInstance();
   if (aDocument && swm) {
     ErrorResult rv;
-    if (swm->IsControlled(aDocument, rv)) {
+    if (aDocument->GetController().isSome()) {
       pointer = aDocument;
     }
   }
   return pointer;
 }
 
 } // namespace image
 } // namespace mozilla
--- a/image/decoders/nsICODecoder.cpp
+++ b/image/decoders/nsICODecoder.cpp
@@ -8,16 +8,18 @@
 
 #include "nsICODecoder.h"
 
 #include <stdlib.h>
 
 #include "mozilla/EndianUtils.h"
 #include "mozilla/Move.h"
 
+#include "mozilla/gfx/Swizzle.h"
+
 #include "RasterImage.h"
 
 using namespace mozilla::gfx;
 
 namespace mozilla {
 namespace image {
 
 // Constants.
@@ -613,16 +615,23 @@ nsICODecoder::FinishMask()
     }
 
     // Iterate through the alpha values, copying from mask to image.
     MOZ_ASSERT(mMaskBuffer);
     MOZ_ASSERT(bmpDecoder->GetImageDataLength() > 0);
     for (size_t i = 3 ; i < bmpDecoder->GetImageDataLength() ; i += 4) {
       imageData[i] = mMaskBuffer[i];
     }
+    int32_t stride = mDownscaler->TargetSize().width * sizeof(uint32_t);
+    DebugOnly<bool> ret =
+    // We know the format is B8G8R8A8 because we always assume bmp's inside
+    // ico's are transparent. 
+      PremultiplyData(imageData, stride, SurfaceFormat::B8G8R8A8,
+        imageData, stride, SurfaceFormat::B8G8R8A8, mDownscaler->TargetSize());
+    MOZ_ASSERT(ret);
   }
 
   return Transition::To(ICOState::FINISHED_RESOURCE, 0);
 }
 
 LexerTransition<ICOState>
 nsICODecoder::FinishResource()
 {
new file mode 100644
--- /dev/null
+++ b/image/test/reftest/downscaling/1404366-1.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<body>
+<!--
+	1404366-1.ico is an ico file that contains a 32x32 0RGB (0 for all alpha values) bmp
+	where the color values are all white. It also contains a mask. The mask alternates
+	one pixel fully transparent, one pixel fully opaque. The result of drawing this on
+	a white background should be white. This is testing that we premultiply the color
+	values by the alpha derived from the mark when downscaling. If we do not skia will
+	get confused and likely draw non white pixels.
+-->
+<img src="1404366-1.ico" style="width: 12px; height: 12px;">
+</body>
+</html>
\ No newline at end of file
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..51c020b069a541988d83d4f0d99d10222cc87ecf
GIT binary patch
literal 4287
zc%1FXu?@f=5JS<Q4XCIo8G~^VOI{99r$&mtt>?n<WLsk|vp@xU%8SAIzY-CWBuSDa
I>F3t%ypgp`IRF3v
--- a/image/test/reftest/downscaling/reftest.list
+++ b/image/test/reftest/downscaling/reftest.list
@@ -205,10 +205,11 @@ fuzzy(18,128) == downscale-32px.html?-pn
 == huge-1.html?100x32768.gif,100,32768 huge-1.html?100x100.gif,100,32768
 == huge-1.html?32768x100.gif,100,100 huge-1.html?100x100.gif,100,100
 == huge-1.html?32768x100.gif,32768,100 huge-1.html?100x100.gif,32768,100
 == huge-1.html?100x32768.jpg,100,100 huge-1.html?100x100.jpg,100,100
 == huge-1.html?100x32768.jpg,100,32768 huge-1.html?100x100.jpg,100,32768
 == huge-1.html?32768x100.jpg,100,100 huge-1.html?100x100.jpg,100,100
 == huge-1.html?32768x100.jpg,32768,100 huge-1.html?100x100.jpg,32768,100
 
-# Only need to run this with downscaling on
+# Only need to run these with downscaling on
 != 1421191-1.html about:blank
+== 1404366-1.html about:blank
--- a/js/src/devtools/automation/README
+++ b/js/src/devtools/automation/README
@@ -18,20 +18,22 @@ In automation, the test jobs will run wi
 catches crashes and generates minidumps, so that autospider.py can produce a
 readable stack trace at the end of the run. Currently this library is only
 available on linux64, and is built via the following procedure:
 
     % git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
     % export PATH=$PATH:$(pwd)/depot_tools
     % mkdir breakpad
     % cd breakpad
+    # python must be python2.7
     % fetch breakpad
     % cd src
     % git fetch https://github.com/hotsphink/breakpad injector
-    % git checkout injector
+    % git checkout FETCH_HEAD
     % cd ..
     % mkdir obj
     % cd obj
-    % ../src/configure
+    # Possibly set $PATH to include a recent gcc
+    % ../src/configure --enable-static
     % mkdir ../root
     % make install DESTDIR=$(pwd)/../root
 
 The shared library will now be in root/usr/local/lib64/libbreakpadinjector.so
--- a/js/src/devtools/automation/autospider.py
+++ b/js/src/devtools/automation/autospider.py
@@ -362,24 +362,27 @@ if not args.nobuild:
         run_command(['sh', '-c', posixpath.join(PDIR.js_src, 'configure') + ' ' + CONFIGURE_ARGS], check=True)
 
     # Run make
     run_command('%s -w %s' % (MAKE, MAKEFLAGS), shell=True, check=True)
 
     if use_minidump:
         # Convert symbols to breakpad format.
         hostdir = os.path.join(OBJDIR, "dist", "host", "bin")
-        os.makedirs(hostdir)
+        if not os.path.isdir(hostdir):
+            os.makedirs(hostdir)
         shutil.copy(os.path.join(DIR.tooltool, "breakpad-tools", "dump_syms"),
                     os.path.join(hostdir, 'dump_syms'))
         run_command([
             'make',
             'recurse_syms',
             'MOZ_SOURCE_REPO=file://' + DIR.source,
-            'RUST_TARGET=0', 'RUSTC_COMMIT=0'
+            'RUST_TARGET=0', 'RUSTC_COMMIT=0',
+            'MOZ_CRASHREPORTER=1',
+            'MOZ_AUTOMATION_BUILD_SYMBOLS=1',
         ], check=True)
 
 COMMAND_PREFIX = []
 # On Linux, disable ASLR to make shell builds a bit more reproducible.
 if subprocess.call("type setarch >/dev/null 2>&1", shell=True) == 0:
     COMMAND_PREFIX.extend(['setarch', platform.machine(), '-R'])
 
 
--- a/js/src/old-configure.in
+++ b/js/src/old-configure.in
@@ -201,22 +201,28 @@ case "$target" in
         CXXFLAGS="$CXXFLAGS -wd5027"
 
         # -Zc:sizedDealloc- disables C++14 global sized deallocation (see bug 1160146)
         CXXFLAGS="$CXXFLAGS -Zc:sizedDealloc-"
 
         AC_SUBST(MSVC_C_RUNTIME_DLL)
         AC_SUBST(MSVC_CXX_RUNTIME_DLL)
 
-        # Check linker version
-        _LD_FULL_VERSION=`"${LINK}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
-        _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
-        if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
-            AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
-        fi
+        # Check linker version, except in lld builds
+        case "$LINKER" in
+        *lld*)
+            ;;
+        *)
+            _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
+            _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
+            if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
+                AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
+            fi
+            ;;
+        esac
 
         INCREMENTAL_LINKER=1
 
         unset _MSVC_VER_FILTER
 
         CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
         CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
     else
@@ -670,18 +676,18 @@ case "$target" in
             AS="$(basename "$AS_BIN")"
         fi
         AR='lib'
         AR_FLAGS='-NOLOGO -OUT:$@'
         AR_EXTRACT=
         RANLIB='echo not_ranlib'
         STRIP='echo not_strip'
         PKG_SKIP_STRIP=1
-        MKSHLIB='$(LINK) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
-        MKCSHLIB='$(LINK) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
+        MKSHLIB='$(LINKER) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
+        MKCSHLIB='$(LINKER) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
         WIN32_SUBSYSTEM_VERSION=6.01
         WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
         WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
         DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
         _USE_CPP_INCLUDE_FLAG=1
         _DEFINES_CFLAGS="-FI $jsconfdefs -DMOZILLA_CLIENT"
         _DEFINES_CXXFLAGS="-FI $jsconfdefs -DMOZILLA_CLIENT"
         CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
--- a/js/src/tests/lib/tasks_unix.py
+++ b/js/src/tests/lib/tasks_unix.py
@@ -1,13 +1,13 @@
 # A unix-oriented process dispatcher.  Uses a single thread with select and
 # waitpid to dispatch tasks.  This avoids several deadlocks that are possible
 # with fork/exec + threads + Python.
 
-import errno, os, select, sys
+import errno, os, select, signal, sys
 from datetime import datetime, timedelta
 from progressbar import ProgressBar
 from results import NullTestOutput, TestOutput, escape_cmdline
 
 class Task(object):
     def __init__(self, test, prefix, pid, stdout, stderr):
         self.test = test
         self.cmd = test.get_command(prefix)
@@ -126,24 +126,26 @@ def remove_task(tasks, pid):
         raise KeyError("No such pid: {}".format(pid))
 
     out = tasks[index]
     tasks.pop(index)
     return out
 
 def timed_out(task, timeout):
     """
-    Return True if the given task has been running for longer than |timeout|.
-    |timeout| may be falsy, indicating an infinite timeout (in which case
-    timed_out always returns False).
+    Return a timedelta with the amount we are overdue, or False if the timeout
+    has not yet been reached (or timeout is falsy, indicating there is no
+    timeout.)
     """
-    if timeout:
-        now = datetime.now()
-        return (now - task.start) > timedelta(seconds=timeout)
-    return False
+    if not timeout:
+        return False
+
+    elapsed = datetime.now() - task.start
+    over = elapsed - timedelta(seconds=timeout)
+    return over if over.total_seconds() > 0 else False
 
 def reap_zombies(tasks, timeout):
     """
     Search for children of this process that have finished. If they are tasks,
     then this routine will clean up the child. This method returns a new task
     list that has had the ended tasks removed, followed by the list of finished
     tasks.
     """
@@ -176,21 +178,27 @@ def reap_zombies(tasks, timeout):
                 ''.join(ended.err),
                 returncode,
                 (datetime.now() - ended.start).total_seconds(),
                 timed_out(ended, timeout)))
     return tasks, finished
 
 def kill_undead(tasks, timeout):
     """
-    Signal all children that are over the given timeout.
+    Signal all children that are over the given timeout. Use SIGABRT first to
+    generate a stack dump. If it still doesn't die for another 30 seconds, kill
+    with SIGKILL.
     """
     for task in tasks:
-        if timed_out(task, timeout):
-            os.kill(task.pid, 9)
+        over = timed_out(task, timeout)
+        if over:
+            if over.total_seconds() < 30:
+                os.kill(task.pid, signal.SIGABRT)
+            else:
+                os.kill(task.pid, signal.SIGKILL)
 
 def run_all_tests(tests, prefix, pb, options):
     # Copy and reverse for fast pop off end.
     tests = list(tests)
     tests = tests[:]
     tests.reverse()
 
     # The set of currently running tests.
--- a/layout/base/PresShell.cpp
+++ b/layout/base/PresShell.cpp
@@ -6926,16 +6926,26 @@ PresShell::HandleEvent(nsIFrame* aFrame,
   }
 
   if (mIsDestroying ||
       (sDisableNonTestMouseEvents && !aEvent->mFlags.mIsSynthesizedForTests &&
        aEvent->HasMouseEventMessage())) {
     return NS_OK;
   }
 
+  if (EventStateManager::IsInputEventsSuppressed() &&
+      (aEvent->mClass == eMouseEventClass ||
+       aEvent->mClass == eWheelEventClass ||
+       aEvent->mClass == ePointerEventClass ||
+       aEvent->mClass == eTouchEventClass ||
+       aEvent->mClass == eKeyboardEventClass ||
+       aEvent->mClass == eCompositionEventClass)) {
+    return NS_OK;
+  }
+
   RecordMouseLocation(aEvent);
 
   if (AccessibleCaretEnabled(mDocument->GetDocShell())) {
     // We have to target the focus window because regardless of where the
     // touch goes, we want to access the copy paste manager.
     nsCOMPtr<nsPIDOMWindowOuter> window = GetFocusedDOMWindowInOurWindow();
     nsCOMPtr<nsIDocument> retargetEventDoc =
       window ? window->GetExtantDoc() : nullptr;
--- a/layout/generic/test/test_bug470212.html
+++ b/layout/generic/test/test_bug470212.html
@@ -22,17 +22,17 @@ function doShiftDrag(){
     var wu = SpecialPowers.DOMWindowUtils;
     var canvas = document.getElementById("dragSource");
     var canvasRect = canvas.getBoundingClientRect();
 
     // Drag canvas element starts with a mouse down event, combine with shift
     // key, follows by two mouse move events.
 
     // Press on left-top corner of the canvas element.
-    wu.sendMouseEvent('mousedown',  canvasRect.left, canvasRect.top, 0, 1, 4);
+    wu.sendMouseEvent('mousedown',  canvasRect.left + 1, canvasRect.top + 1, 0, 1, 4);
     // Move to the center of this cavas element.
     wu.sendMouseEvent('mousemove',  canvasRect.left + (canvasRect.width / 2),
                       canvasRect.top + (canvasRect.height / 2), 0, 0, 4);
     // move out of cavas's region.
     wu.sendMouseEvent('mousemove',  canvasRect.left + (canvasRect.width / 2),
                       canvasRect.bottom + 10, 0, 0, 4);
 
     is(window.getSelection().rangeCount, 0, "rangeCount should be 0");
--- a/mobile/android/components/extensions/test/mochitest/test_ext_activeTab_permission.html
+++ b/mobile/android/components/extensions/test/mochitest/test_ext_activeTab_permission.html
@@ -310,17 +310,17 @@ add_task(async function test_activeTab_p
 
   const chromeWin = Services.wm.getMostRecentWindow("navigator:browser");
   const BrowserApp = chromeWin.BrowserApp;
 
   const popupTab = BrowserApp.selectedTab;
   const popupTabId = popupTab.id;
 
   let onceTabClosed = new Promise(resolve => {
-    BrowserApp.deck.addEventListener("TabClose", resolve, {once: true});
+    BrowserApp.deck.addEventListener("TabClose", () => setTimeout(resolve, 0), {once: true});
   });
 
   // Switch to the parent tab of the popup tab.
   // (which should make the extension popup tab to be closed automatically)
   BrowserApp.selectTab(BrowserApp.getTabForId(popupTab.parentId));
 
   info("Wait for the extension popup tab to be closed once the parent tab has been selected");
 
@@ -439,17 +439,17 @@ add_task(async function test_activeTab_b
 
   const chromeWin = Services.wm.getMostRecentWindow("navigator:browser");
   const BrowserApp = chromeWin.BrowserApp;
 
   const popupTab = BrowserApp.selectedTab;
   const popupTabId = popupTab.id;
 
   let onceTabClosed = new Promise(resolve => {
-    BrowserApp.deck.addEventListener("TabClose", resolve, {once: true});
+    BrowserApp.deck.addEventListener("TabClose", () => setTimeout(resolve, 0), {once: true});
   });
 
   // Switch to the parent tab of the popup tab.
   // (which should make the extension popup tab to be closed automatically)
   BrowserApp.selectTab(BrowserApp.getTabForId(popupTab.parentId));
 
   info("Wait for the extension popup tab to be closed once the parent tab has been selected");
 
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/GeckoDisplay.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/gfx/GeckoDisplay.java
@@ -40,19 +40,17 @@ public class GeckoDisplay {
      * valid while pausing drawing.
      */
     public void surfaceDestroyed() {
         mSession.onSurfaceDestroyed();
     }
 
     /**
      * Optional callback. The display's coordinates on the screen has changed. Must be
-     * called on the application main thread. Together with the transformation matrix, the
-     * screen origin determines how a point on the display maps to a point on the screen.
+     * called on the application main thread.
      *
      * @param left The X coordinate of the display on the screen, in screen pixels.
      * @param top The Y coordinate of the display on the screen, in screen pixels.
-     * @see #transformationMatrixChanged(Matrix)
      */
     public void screenOriginChanged(final int left, final int top) {
         mSession.onScreenOriginChanged(left, top);
     }
 }
--- a/netwerk/base/LoadInfo.cpp
+++ b/netwerk/base/LoadInfo.cpp
@@ -112,21 +112,17 @@ LoadInfo::LoadInfo(nsIPrincipal* aLoadin
       (mSecurityFlags & nsILoadInfo::SEC_FORCE_INHERIT_PRINCIPAL);
     mSecurityFlags &= ~nsILoadInfo::SEC_FORCE_INHERIT_PRINCIPAL;
   }
 
   if (aLoadingContext) {
     // Ensure that all network requests for a window client have the ClientInfo
     // properly set.
     // TODO: The ClientInfo is not set properly for worker initiated requests yet.
-    nsCOMPtr<nsPIDOMWindowInner> contextInner =
-      aLoadingContext->OwnerDoc()->GetInnerWindow();
-    if (contextInner) {
-      mClientInfo = contextInner->GetClientInfo();
-    }
+    mClientInfo = aLoadingContext->OwnerDoc()->GetClientInfo();
 
     nsCOMPtr<nsPIDOMWindowOuter> contextOuter = aLoadingContext->OwnerDoc()->GetWindow();
     if (contextOuter) {
       ComputeIsThirdPartyContext(contextOuter);
       mOuterWindowID = contextOuter->WindowID();
       nsCOMPtr<nsPIDOMWindowOuter> parent = contextOuter->GetScriptableParent();
       mParentOuterWindowID = parent ? parent->WindowID() : mOuterWindowID;
       mTopOuterWindowID = FindTopOuterWindowID(contextOuter);
--- a/netwerk/base/TCPFastOpenLayer.cpp
+++ b/netwerk/base/TCPFastOpenLayer.cpp
@@ -390,16 +390,17 @@ TCPFastOpenFinish(PRFileDesc *fd, PRErro
     } else {
       result = PR_GetError();
     }
     if (tfoFd->lower->methods->sendto == (PRSendtoFN)tfoFd->lower->methods->reserved_fn_0) {
         // sendto is not implemented, it is equal to _PR_InvalidInt!
         // We will disable Fast Open.
         SOCKET_LOG(("TCPFastOpenFinish - sendto not implemented.\n"));
         fastOpenNotSupported = true;
+        tfoStatus = TFO_DISABLED;
     }
   } else {
     // We have some data ready in the buffer we will send it with the syn
     // packet.
     PRInt32 rv = (tfoFd->lower->methods->sendto)(tfoFd->lower,
                                                  secret->mFirstPacketBuf,
                                                  secret->mFirstPacketBufLen,
                                                  0, //flags
@@ -427,16 +428,17 @@ TCPFastOpenFinish(PRFileDesc *fd, PRErro
         rv = (tfoFd->lower->methods->connect)(tfoFd->lower, &secret->mAddr,
                                               PR_INTERVAL_NO_WAIT);
 
         if (rv == PR_SUCCESS) {
           result = PR_IS_CONNECTED_ERROR;
         } else {
           result = PR_GetError();
         }
+        tfoStatus = TFO_DISABLED;
       } else {
         tfoStatus = TFO_TRIED;
       }
     }
   }
 
   if (result == PR_IN_PROGRESS_ERROR) {
     secret->mState = TCPFastOpenSecret::WAITING_FOR_CONNECTCONTINUE;
--- a/netwerk/base/TCPFastOpenLayer.h
+++ b/netwerk/base/TCPFastOpenLayer.h
@@ -15,27 +15,61 @@ namespace net {
 /**
  * This layer must be placed just above PR-tcp socket, i.e. it must be under
  * nss layer.
  * At the beginning of TCPFastOpenLayer.cpp there is explanation what this
  * layer do.
  **/
 
 typedef enum {
-  TFO_NOT_TRIED,
-  TFO_TRIED,
-  TFO_DATA_SENT,
+  TFO_NOT_SET, // This is only as a control.
+               // A connection not using TFO will have the TFO state set upon
+               // connection creation (in nsHalfOpenSocket::SetupConn).
+               // A connection using TFO will have the TFO state set after
+               // the connection is established or canceled.
+  TFO_UNKNOWN, // This is before the primary socket is built, i.e. before
+               // TCPFastOpenFinish is called.
+  TFO_DISABLED, // tfo is disabled because of a tfo error on a previous
+                // connection to the host (i.e. !mEnt->mUseFastOpen).
+                // If TFO is not supported by the OS, it is disabled by
+                // the pref or too many consecutive errors occurred, this value
+                // is not reported. This is set before StartFastOpen is called.
+  TFO_DISABLED_CONNECT, // Connection is using CONNECT. This is set before
+                        // StartFastOpen is called.
+  // The following 3 are set just after TCPFastOpenFinish.
+  TFO_NOT_TRIED, // For some reason TCPFastOpenLayer does not have any data to
+                 // send with the syn packet. This should never happen.
+  TFO_TRIED, // TCP has sent a TFO cookie request.
+  TFO_DATA_SENT, // On Linux, TCP has send data as well. (On Linux we do not
+                 // know whether data has been accepted).
+                 // On Windows, TCP has send data or only a TFO cookie request
+                 // and the data or TFO cookie has been accepted by the server.
+  // The following value is only used on windows and is set after
+  // PR_ConnectContinue. That is the point when we know if TFO data was been
+  // accepted.
+  TFO_DATA_COOKIE_NOT_ACCEPTED, // This is only on Windows. TFO data or TFO
+                                // cookie request has not been accepted.
+  // The following 3 are set during socket error recover
+  // (nsSocketTransport::RecoverFromError).
   TFO_FAILED_CONNECTION_REFUSED,
   TFO_FAILED_NET_TIMEOUT,
   TFO_FAILED_UNKNOW_ERROR,
-  TFO_FAILED_BACKUP_CONNECTION,
+  // The following 4 are set when backup connection finishes before the primary
+  // connection.
+  TFO_FAILED_BACKUP_CONNECTION_TFO_NOT_TRIED,
+  TFO_FAILED_BACKUP_CONNECTION_TFO_TRIED,
+  TFO_FAILED_BACKUP_CONNECTION_TFO_DATA_SENT,
+  TFO_FAILED_BACKUP_CONNECTION_TFO_DATA_COOKIE_NOT_ACCEPTED,
+  // The following 4 are set when the recovery connection fails as well.
   TFO_FAILED_CONNECTION_REFUSED_NO_TFO_FAILED_TOO,
-  TFO_FAILED_NET_TIMEOUT__NO_TFO_FAILED_TOO,
+  TFO_FAILED_NET_TIMEOUT_NO_TFO_FAILED_TOO,
   TFO_FAILED_UNKNOW_ERROR_NO_TFO_FAILED_TOO,
   TFO_FAILED_BACKUP_CONNECTION_NO_TFO_FAILED_TOO,
+  TFO_BACKUP_CONN, // This is a backup conn, for a halfOpenSock that was used
+                   // TFO.
   TFO_FAILED,
   TFO_HTTP // TFO is disabled for non-secure connections.
 } TFOResult;
 
 nsresult AttachTCPFastOpenIOLayer(PRFileDesc *fd);
 
 // Get the result of TCP Fast Open.
 void TCPFastOpenFinish(PRFileDesc *fd, PRErrorCode &err,
--- a/netwerk/base/nsSocketTransport2.cpp
+++ b/netwerk/base/nsSocketTransport2.cpp
@@ -794,17 +794,17 @@ nsSocketTransport::nsSocketTransport()
     , mOutput(this)
     , mQoSBits(0x00)
     , mKeepaliveEnabled(false)
     , mKeepaliveIdleTimeS(-1)
     , mKeepaliveRetryIntervalS(-1)
     , mKeepaliveProbeCount(-1)
     , mFastOpenCallback(nullptr)
     , mFastOpenLayerHasBufferedData(false)
-    , mFastOpenStatus(TFO_NOT_TRIED)
+    , mFastOpenStatus(TFO_NOT_SET)
     , mFirstRetryError(NS_OK)
     , mDoNotRetryToConnect(false)
 {
     SOCKET_LOG(("creating nsSocketTransport @%p\n", this));
 
     mTimeouts[TIMEOUT_CONNECT]    = UINT16_MAX; // no timeout
     mTimeouts[TIMEOUT_READ_WRITE] = UINT16_MAX; // no timeout
 }
@@ -2209,19 +2209,19 @@ nsSocketTransport::OnSocketReady(PRFileD
 #endif
 
         if (mFDFastOpenInProgress && mFastOpenCallback &&
             (mFastOpenStatus == TFO_DATA_SENT)) {
             PROsfd osfd = PR_FileDesc2NativeHandle(fd);
             BOOL option = 0;
             int len = sizeof(option);
             PRInt32 rv = getsockopt((SOCKET)osfd, IPPROTO_TCP, TCP_FASTOPEN, (char*)&option, &len);
-            if ((rv != 0) && !option) {
+            if (!rv && !option) {
                 // On error, I will let the normal necko paths pickup the error.
-                mFastOpenCallback->SetFastOpenStatus(TFO_NOT_TRIED);
+                mFastOpenCallback->SetFastOpenStatus(TFO_DATA_COOKIE_NOT_ACCEPTED);
             }
         }
 #endif
 
         if (gSocketTransportService->IsTelemetryEnabledAndNotSleepPhase() &&
             connectStarted) {
             SendPRBlockingTelemetry(connectStarted,
                 Telemetry::PRCONNECTCONTINUE_BLOCKING_TIME_NORMAL,
--- a/netwerk/protocol/http/HttpChannelChild.cpp
+++ b/netwerk/protocol/http/HttpChannelChild.cpp
@@ -1095,16 +1095,29 @@ HttpChannelChild::OnStopRequest(const ns
     // (although we really shouldn't receive any msgs after OnStop),
     // so make sure this goes out of scope before then.
     AutoEventEnqueuer ensureSerialDispatch(mEventQ);
 
     DoOnStopRequest(this, channelStatus, mListenerContext);
     // DoOnStopRequest() calls ReleaseListeners()
   }
 
+  // If unknownDecoder is involved and the received content is short we will
+  // know whether we need to divert to parent only after OnStopRequest of the
+  // listeners chain is called in DoOnStopRequest. At that moment
+  // unknownDecoder will call OnStartRequest of the real listeners of the
+  // channel including the OnStopRequest of UrlLoader which decides whether we
+  // need to divert to parent.
+  // If we are diverting to parent we should not do a cleanup.
+  if (mDivertingToParent) {
+    LOG(("HttpChannelChild::OnStopRequest  - We are diverting to parent, "
+         "postpone cleaning up."));
+    return;
+  }
+
   CleanupBackgroundChannel();
 
   // If there is a possibility we might want to write alt data to the cache
   // entry, we keep the channel alive. We still send the DocumentChannelCleanup
   // message but request the cache entry to be kept by the parent.
   // If the channel has failed, the cache entry is in a non-writtable state and
   // we want to release it to not block following consumers.
   if (NS_SUCCEEDED(channelStatus) && !mPreferredCachedAltDataType.IsEmpty()) {
--- a/netwerk/protocol/http/nsHttpConnection.cpp
+++ b/netwerk/protocol/http/nsHttpConnection.cpp
@@ -82,17 +82,17 @@ nsHttpConnection::nsHttpConnection()
     , mTCPKeepaliveConfig(kTCPKeepaliveDisabled)
     , mForceSendPending(false)
     , m0RTTChecked(false)
     , mWaitingFor0RTTResponse(false)
     , mContentBytesWritten0RTT(0)
     , mEarlyDataNegotiated(false)
     , mDid0RTTSpdy(false)
     , mFastOpen(false)
-    , mFastOpenStatus(TFO_NOT_TRIED)
+    , mFastOpenStatus(TFO_NOT_SET)
     , mForceSendDuringFastOpenPending(false)
     , mReceivedSocketWouldBlockDuringFastOpen(false)
 {
     LOG(("Creating nsHttpConnection @%p\n", this));
 
     // the default timeout is for when this connection has not yet processed a
     // transaction
     static const PRIntervalTime k5Sec = PR_SecondsToInterval(5);
@@ -122,22 +122,22 @@ nsHttpConnection::~nsHttpConnection()
     }
     if (mForceSendTimer) {
         mForceSendTimer->Cancel();
         mForceSendTimer = nullptr;
     }
 
     if ((mFastOpenStatus != TFO_FAILED) &&
         (mFastOpenStatus != TFO_HTTP) &&
-        ((mFastOpenStatus != TFO_NOT_TRIED) ||
+        ((mFastOpenStatus != TFO_DISABLED) ||
          gHttpHandler->UseFastOpen())) {
         // TFO_FAILED will be reported in the replacement connection with more
         // details.
         // Otherwise report only if TFO is enabled and supported.
-        Telemetry::Accumulate(Telemetry::TCP_FAST_OPEN_2, mFastOpenStatus);
+        Telemetry::Accumulate(Telemetry::TCP_FAST_OPEN_3, mFastOpenStatus);
     }
 }
 
 nsresult
 nsHttpConnection::Init(nsHttpConnectionInfo *info,
                        uint16_t maxHangTime,
                        nsISocketTransport *transport,
                        nsIAsyncInputStream *instream,
@@ -2441,21 +2441,30 @@ nsHttpConnection::SetFastOpen(bool aFast
         mExperienced = true;
     }
 }
 
 void
 nsHttpConnection::SetFastOpenStatus(uint8_t tfoStatus) {
     mFastOpenStatus = tfoStatus;
     if ((mFastOpenStatus >= TFO_FAILED_CONNECTION_REFUSED) &&
+        (mFastOpenStatus <= TFO_FAILED_BACKUP_CONNECTION_TFO_DATA_COOKIE_NOT_ACCEPTED) &&
         mSocketTransport) {
         nsresult firstRetryError;
         if (NS_SUCCEEDED(mSocketTransport->GetFirstRetryError(&firstRetryError)) &&
             (NS_FAILED(firstRetryError))) {
-            mFastOpenStatus = tfoStatus + 4; 
+            if ((mFastOpenStatus >= TFO_FAILED_BACKUP_CONNECTION_TFO_NOT_TRIED) &&
+                (mFastOpenStatus <= TFO_FAILED_BACKUP_CONNECTION_TFO_DATA_COOKIE_NOT_ACCEPTED)) {
+                mFastOpenStatus = TFO_FAILED_BACKUP_CONNECTION_NO_TFO_FAILED_TOO;
+            } else {
+                // We add +7 to tranform TFO_FAILED_CONNECTION_REFUSED into
+                // TFO_FAILED_CONNECTION_REFUSED_NO_TFO_FAILED_TOO, etc.
+                // If the list in TCPFastOpenLayer.h changes please addapt +7.
+                mFastOpenStatus = tfoStatus + 7;
+            }
         }
     }
 }
 
 void
 nsHttpConnection::BootstrapTimings(TimingStruct times)
 {
     mBootstrappedTimings = times;
--- a/netwerk/protocol/http/nsHttpConnectionMgr.cpp
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.cpp
@@ -3850,16 +3850,17 @@ nsHalfOpenSocket::nsHalfOpenSocket(nsCon
     , mDispatchedMTransaction(false)
     , mCaps(caps)
     , mSpeculative(speculative)
     , mIsFromPredictor(isFromPredictor)
     , mAllow1918(true)
     , mHasConnected(false)
     , mPrimaryConnectedOK(false)
     , mBackupConnectedOK(false)
+    , mBackupConnStatsSet(false)
     , mFreeToUse(true)
     , mPrimaryStreamStatus(NS_OK)
     , mFastOpenInProgress(false)
     , mEnt(ent)
 {
     MOZ_ASSERT(ent && trans, "constructor with null arguments");
     LOG(("Creating nsHalfOpenSocket [this=%p trans=%p ent=%s key=%s]\n",
          this, trans, ent->mConnInfo->Origin(), ent->mConnInfo->HashKey().get()));
@@ -3870,17 +3871,17 @@ nsHalfOpenSocket::nsHalfOpenSocket(nsCon
 
         if (isFromPredictor) {
           Telemetry::AutoCounter<Telemetry::PREDICTOR_TOTAL_PRECONNECTS_CREATED> totalPreconnectsCreated;
           ++totalPreconnectsCreated;
         }
     }
 
     if (mEnt->mConnInfo->FirstHopSSL()) {
-      mFastOpenStatus = TFO_NOT_TRIED;
+      mFastOpenStatus = TFO_UNKNOWN;
     } else {
       mFastOpenStatus = TFO_HTTP;
     }
     MOZ_ASSERT(mEnt);
 }
 
 nsHttpConnectionMgr::nsHalfOpenSocket::~nsHalfOpenSocket()
 {
@@ -3980,18 +3981,22 @@ nsHalfOpenSocket::SetupStreams(nsISocket
              (isBackup && gHttpHandler->FastFallbackToIPv4())) {
         tmpFlags |= nsISocketTransport::DISABLE_IPV6;
     }
 
     if (!Allow1918()) {
         tmpFlags |= nsISocketTransport::DISABLE_RFC1918;
     }
 
-    if (!isBackup && mEnt->mUseFastOpen) {
-        socketTransport->SetFastOpenCallback(this);
+    if (!isBackup) {
+        if (mEnt->mUseFastOpen) {
+            socketTransport->SetFastOpenCallback(this);
+        } else {
+            mFastOpenStatus = TFO_DISABLED;
+        }
     }
 
     socketTransport->SetConnectionFlags(tmpFlags);
     socketTransport->SetTlsFlags(ci->GetTlsFlags());
 
     const OriginAttributes& originAttributes = mEnt->mConnInfo->GetOriginAttributes();
     if (originAttributes != OriginAttributes()) {
         socketTransport->SetOriginAttributes(originAttributes);
@@ -4305,19 +4310,40 @@ nsHalfOpenSocket::OnOutputStreamReady(ns
         }
         if (mEnt->mUseFastOpen) {
             gHttpHandler->IncrementFastOpenConsecutiveFailureCounter();
             mEnt->mUseFastOpen = false;
         }
 
         mFastOpenInProgress = false;
         mConnectionNegotiatingFastOpen = nullptr;
-        mFastOpenStatus = TFO_FAILED_BACKUP_CONNECTION;
-    }
-
+        if (mFastOpenStatus == TFO_NOT_TRIED) {
+            mFastOpenStatus = TFO_FAILED_BACKUP_CONNECTION_TFO_NOT_TRIED;
+        } else if (mFastOpenStatus == TFO_TRIED) {
+            mFastOpenStatus = TFO_FAILED_BACKUP_CONNECTION_TFO_TRIED;
+        } else if (mFastOpenStatus == TFO_DATA_SENT) {
+            mFastOpenStatus = TFO_FAILED_BACKUP_CONNECTION_TFO_DATA_SENT;
+        } else {
+            // This is TFO_DATA_COOKIE_NOT_ACCEPTED (I think this cannot
+            // happened, because the primary connection will be already
+            // connected or in recovery and mFastOpenInProgress==false).
+            mFastOpenStatus = TFO_FAILED_BACKUP_CONNECTION_TFO_DATA_COOKIE_NOT_ACCEPTED;
+        }
+    }
+
+    if (((mFastOpenStatus == TFO_DISABLED) ||
+        (mFastOpenStatus == TFO_HTTP)) && !mBackupConnStatsSet) {
+        // Collect telemetry for backup connection being faster than primary
+        // connection. We want to collect this telemetry only for cases where
+        // TFO is not used.
+        mBackupConnStatsSet = true;
+        Telemetry::ScalarSet(Telemetry::ScalarID::NETWORK_HTTP_BACKUP_CONN_WON,
+                             (out == mBackupStreamOut));
+    }
+        
     nsresult rv =  SetupConn(out, false);
     if (mEnt) {
         mEnt->mDoNotDestroy = false;
     }
     return rv;
 }
 
 bool
@@ -4327,53 +4353,42 @@ nsHalfOpenSocket::FastOpenEnabled()
     LOG(("nsHalfOpenSocket::FastOpenEnabled [this=%p]\n", this));
 
     MOZ_ASSERT(mEnt);
 
     if (!mEnt) {
         return false;
     }
 
+    MOZ_ASSERT(mEnt->mConnInfo->FirstHopSSL());
+
     // If mEnt is present this HalfOpen must be in the mHalfOpens,
     // but we want to be sure!!!
     if (!mEnt->mHalfOpens.Contains(this)) {
         return false;
     }
 
     if (!gHttpHandler->UseFastOpen()) {
         // fast open was turned off.
         LOG(("nsHalfOpenSocket::FastEnabled - fast open was turned off.\n"));
         mEnt->mUseFastOpen = false;
+        mFastOpenStatus = TFO_DISABLED;
         return false;
     }
     // We can use FastOpen if we have a transaction or if it is ssl
     // connection. For ssl we will use a null transaction to drive the SSL
     // handshake to completion if there is not a pending transaction. Afterwards
     // the connection will be 100% ready for the next transaction to use it.
     // Make an exception for SSL tunneled HTTP proxy as the NullHttpTransaction
     // does not know how to drive Connect.
-    RefPtr<PendingTransactionInfo> info = FindTransactionHelper(false);
-
-    if ((!info) &&
-        (!mEnt->mConnInfo->FirstHopSSL() || mEnt->mConnInfo->UsingConnect())) {
-        LOG(("nsHalfOpenSocket::FastOpenEnabled - It is a connection without "
-             "transaction and first hop is not ssl.\n"));
+    if (mEnt->mConnInfo->UsingConnect()) {
+        LOG(("nsHalfOpenSocket::FastOpenEnabled - It is using Connect."));
+        mFastOpenStatus = TFO_DISABLED_CONNECT;
         return false;
     }
-
-    if ((info) && !mEnt->mConnInfo->FirstHopSSL()) {
-        // The following function call will check whether is possible to send
-        // data during fast open
-        if (!info->mTransaction->CanDo0RTT()) {
-            LOG(("nsHalfOpenSocket::FastOpenEnabled - it is not safe to restart "
-                 "transaction.\n"));
-            return false;
-        }
-    }
-
     return true;
 }
 
 nsresult
 nsHttpConnectionMgr::
 nsHalfOpenSocket::StartFastOpen()
 {
     MOZ_ASSERT(mStreamOut);
@@ -4551,17 +4566,23 @@ nsHalfOpenSocket::SetFastOpenConnected(n
                 mEnt->RecordIPFamilyPreference(peeraddr.raw.family);
             }
             gHttpHandler->ResetFastOpenConsecutiveFailureCounter();
         }
         mSocketTransport = nullptr;
         mStreamOut = nullptr;
         mStreamIn = nullptr;
 
-        Abandon();
+        // If backup transport has already started put this HalfOpen back to
+        // mEnt list.
+        if (mBackupTransport) {
+            mFastOpenStatus = TFO_BACKUP_CONN;
+            mEnt->mHalfOpens.AppendElement(this);
+            gHttpHandler->ConnMgr()->mNumHalfOpenConns++;
+        }
     }
 
     mFastOpenInProgress = false;
     mConnectionNegotiatingFastOpen = nullptr;
     if (mEnt) {
         mEnt->mDoNotDestroy = false;
         MOZ_ASSERT(mEnt->mHalfOpens.Contains(this));
     } else {
@@ -4571,16 +4592,17 @@ nsHalfOpenSocket::SetFastOpenConnected(n
     }
 }
 
 void
 nsHttpConnectionMgr::
 nsHalfOpenSocket::SetFastOpenStatus(uint8_t tfoStatus)
 {
     MOZ_ASSERT(mFastOpenInProgress);
+    mFastOpenStatus = tfoStatus;
     mConnectionNegotiatingFastOpen->SetFastOpenStatus(tfoStatus);
     mConnectionNegotiatingFastOpen->Transaction()->SetFastOpenStatus(tfoStatus);
 }
 
 void
 nsHttpConnectionMgr::
 nsHalfOpenSocket::CancelFastOpenConnection()
 {
@@ -4799,16 +4821,20 @@ nsHalfOpenSocket::SetupConn(nsIAsyncOutp
         int32_t idx = mEnt->mActiveConns.IndexOf(conn);
         if (NS_SUCCEEDED(rv) && (idx != -1)) {
             mConnectionNegotiatingFastOpen = conn;
         } else {
             conn->SetFastOpen(false);
         }
     } else {
         conn->SetFastOpenStatus(mFastOpenStatus);
+        mFastOpenStatus = TFO_BACKUP_CONN; // Set this to TFO_BACKUP_CONN so
+                                           // that if a backup connection is
+                                           // established we do not report
+                                           // values twice.
     }
 
     // If this halfOpenConn was speculative, but at the ende the conn got a
     // non-null transaction than this halfOpen is not speculative anymore!
     if (conn->Transaction() && !conn->Transaction()->IsNullTransaction()) {
         Claim();
     }
 
--- a/netwerk/protocol/http/nsHttpConnectionMgr.h
+++ b/netwerk/protocol/http/nsHttpConnectionMgr.h
@@ -471,16 +471,17 @@ private:
         TimeStamp             mBackupSynStarted;
 
         // mHasConnected tracks whether one of the sockets has completed the
         // connection process. It may have completed unsuccessfully.
         bool                           mHasConnected;
 
         bool                           mPrimaryConnectedOK;
         bool                           mBackupConnectedOK;
+        bool                           mBackupConnStatsSet;
 
         // A nsHalfOpenSocket can be made for a concrete non-null transaction,
         // but the transaction can be dispatch to another connection. In that
         // case we can free this transaction to be claimed by other
         // transactions.
         bool                           mFreeToUse;
         nsresult                       mPrimaryStreamStatus;
 
--- a/netwerk/protocol/http/nsHttpHandler.cpp
+++ b/netwerk/protocol/http/nsHttpHandler.cpp
@@ -73,16 +73,17 @@
 #include "nsNSSComponent.h"
 
 #if defined(XP_UNIX)
 #include <sys/utsname.h>
 #endif
 
 #if defined(XP_WIN)
 #include <windows.h>
+#include "mozilla/WindowsVersion.h"
 #endif
 
 #if defined(XP_MACOSX)
 #include <CoreServices/CoreServices.h>
 #include "nsCocoaFeatures.h"
 #endif
 
 #ifdef MOZ_TASK_TRACER
@@ -303,16 +304,18 @@ nsHttpHandler::nsHttpHandler()
 }
 
 void
 nsHttpHandler::SetFastOpenOSSupport()
 {
     mFastOpenSupported = false;
 #if !defined(XP_WIN) && !defined(XP_LINUX) && !defined(ANDROID) && !defined(HAS_CONNECTX)
     return;
+#elif defined(XP_WIN)
+    mFastOpenSupported = IsWindows10BuildOrLater(16299);
 #else
 
     nsAutoCString version;
     nsresult rv;
 #ifdef ANDROID
     nsCOMPtr<nsIPropertyBag2> infoService =
         do_GetService("@mozilla.org/system-info;1");
     MOZ_ASSERT(infoService, "Could not find a system info service");
@@ -327,19 +330,17 @@ nsHttpHandler::SetFastOpenOSSupport()
         rv = NS_ERROR_FAILURE;
     }
 #endif
 
     LOG(("nsHttpHandler::SetFastOpenOSSupport version %s", version.get()));
 
     if (NS_SUCCEEDED(rv)) {
         // set min version minus 1.
-#ifdef XP_WIN
-        int min_version[] = {10, 0};
-#elif XP_MACOSX
+#if XP_MACOSX
         int min_version[] = {15, 0};
 #elif ANDROID
         int min_version[] = {4, 4};
 #elif XP_LINUX
         int min_version[] = {3, 6};
 #endif
         int inx = 0;
         nsCCharSeparatedTokenizer tokenizer(version, '.');
@@ -361,26 +362,16 @@ nsHttpHandler::SetFastOpenOSSupport()
                 mFastOpenSupported = true;
             } else if (ver < min_version[inx]) {
                 break;
             }
             inx++;
         }
     }
 #endif
-
-#ifdef XP_WIN
-  if (mFastOpenSupported) {
-    // We have some problems with lavasoft software and tcp fast open.
-    if (GetModuleHandleW(L"pmls64.dll") || GetModuleHandleW(L"rlls64.dll")) {
-      mFastOpenSupported = false;
-    }
-  }
-#endif
-
     LOG(("nsHttpHandler::SetFastOpenOSSupport %s supported.\n",
          mFastOpenSupported ? "" : "not"));
 }
 
 void
 nsHttpHandler::EnsureUAOverridesInit()
 {
     MOZ_ASSERT(XRE_IsParentProcess());
--- a/netwerk/test/unit/test_bug1355539_http1.js
+++ b/netwerk/test/unit/test_bug1355539_http1.js
@@ -22,16 +22,18 @@ Cu.import("resource://gre/modules/NetUti
 
 var Cc = Components.classes;
 var Ci = Components.interfaces;
 var server = new HttpServer();
 server.start(-1);
 var baseURL = "http://localhost:" + server.identity.primaryPort + "/";
 var maxConnections = 0;
 var debug = false;
+var dummyResponseQueue = new Array();
+var responseQueue = new Array();
 
 function log(msg) {
   if (!debug) {
     return;
   }
 
   if (msg) {
     dump("TEST INFO | " + msg + "\n");
@@ -43,35 +45,35 @@ function make_channel(url) {
   request.QueryInterface(Ci.nsIHttpChannel);
   return request;
 }
 
 function serverStopListener() {
   server.stop();
 }
 
-function createHttpRequest(requestId, priority, isBlocking) {
+function createHttpRequest(requestId, priority, isBlocking, callback) {
   let uri = baseURL;
   var chan = make_channel(uri);
-  var listner = new HttpResponseListener(requestId);
+  var listner = new HttpResponseListener(requestId, callback);
   chan.setRequestHeader("X-ID", requestId, false);
   chan.setRequestHeader("Cache-control", "no-store", false);
   chan.QueryInterface(Ci.nsISupportsPriority).priority = priority;
   if (isBlocking) {
     var cos = chan.QueryInterface(Ci.nsIClassOfService);
     cos.addClassFlags(Ci.nsIClassOfService.Leader);
   }
   chan.asyncOpen2(listner);
   log("Create http request id=" + requestId);
 }
 
-function setup_dummyHttpRequests() {
+function setup_dummyHttpRequests(callback) {
   log("setup_dummyHttpRequests");
   for (var i = 0; i < maxConnections ; i++) {
-    createHttpRequest(i, i, false);
+    createHttpRequest(i, i, false, callback);
     do_test_pending();
   }
 }
 
 var transactionQueue = [
   {requestId: 101, priority: Ci.nsISupportsPriority.PRIORITY_HIGH, isBlocking: true},
   {requestId: 102, priority: Ci.nsISupportsPriority.PRIORITY_NORMAL, isBlocking: true},
   {requestId: 103, priority: Ci.nsISupportsPriority.PRIORITY_LOW, isBlocking: true},
@@ -94,75 +96,91 @@ function setup_HttpRequests() {
 function check_response_id(responses)
 {
   for (var i = 0; i < responses.length; i++) {
     var id = responses[i].getHeader("X-ID");
     do_check_eq(id, transactionQueue[i].requestId);
   }
 }
 
-function HttpResponseListener(id)
+function HttpResponseListener(id, onStopCallback)
 {
   this.id = id
+  this.stopCallback = onStopCallback;
 };
 
 HttpResponseListener.prototype =
 {
   onStartRequest: function (request, ctx) {
   },
 
   onDataAvailable: function (request, ctx, stream, off, cnt) {
   },
 
   onStopRequest: function (request, ctx, status) {
     log("STOP id=" + this.id);
     do_test_finished();
+    if (this.stopCallback) {
+      this.stopCallback();
+    }
   }
 };
 
-var responseQueue = new Array();
 function setup_http_server()
 {
   log("setup_http_server");
   var prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
   maxConnections = prefs.getIntPref("network.http.max-persistent-connections-per-server");
 
   var allDummyHttpRequestReceived = false;
   // Start server; will be stopped at test cleanup time.
   server.registerPathHandler('/', function(metadata, response)
   {
     var id = metadata.getHeader("X-ID");
     log("Server recived the response id=" + id);
 
     response.processAsync();
     response.setHeader("X-ID", id);
-    responseQueue.push(response);
 
-    if (responseQueue.length == maxConnections && !allDummyHttpRequestReceived) {
+    if (!allDummyHttpRequestReceived) {
+      dummyResponseQueue.push(response);
+    } else {
+      responseQueue.push(response);
+    }
+
+    if (dummyResponseQueue.length == maxConnections) {
       log("received all dummy http requets");
       allDummyHttpRequestReceived = true;
       setup_HttpRequests();
-      processResponses();
+      processDummyResponse();
     } else if (responseQueue.length == maxConnections) {
       log("received all http requets");
       check_response_id(responseQueue);
       processResponses();
     }
 
   });
 
   do_register_cleanup(function() {
     server.stop(serverStopListener);
   });
 
 }
 
+function processDummyResponse() {
+  if (!dummyResponseQueue.length) {
+    return;
+  }
+  var resposne = dummyResponseQueue.pop();
+  resposne.finish();
+}
+
 function processResponses() {
   while (responseQueue.length) {
     var resposne = responseQueue.pop();
     resposne.finish();
   }
 }
 
 function run_test() {
   setup_http_server();
-  setup_dummyHttpRequests();
+  setup_dummyHttpRequests(processDummyResponse);
 }
--- a/old-configure.in
+++ b/old-configure.in
@@ -237,22 +237,28 @@ case "$target" in
 
         if test -n "$WIN32_REDIST_DIR"; then
           if test ! -d "$WIN32_REDIST_DIR"; then
             AC_MSG_ERROR([Invalid Win32 Redist directory: ${WIN32_REDIST_DIR}])
           fi
           WIN32_REDIST_DIR=`cd "$WIN32_REDIST_DIR" && pwd -W`
         fi
 
-        # Check linker version
-        _LD_FULL_VERSION=`"${LINK}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
-        _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
-        if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
-            AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
-        fi
+        # Check linker version, except in lld builds
+        case "$LINKER" in
+        *lld*)
+            ;;
+        *)
+            _LD_FULL_VERSION=`"${LINKER}" -v 2>&1 | sed -nre "$_MSVC_VER_FILTER"`
+            _LD_MAJOR_VERSION=`echo ${_LD_FULL_VERSION} | $AWK -F\. '{ print $1 }'`
+            if test "$_LD_MAJOR_VERSION" != "$_CC_SUITE"; then
+                AC_MSG_ERROR([The linker major version, $_LD_FULL_VERSION,  does not match the compiler suite version, $_CC_SUITE.])
+            fi
+            ;;
+        esac
 
         INCREMENTAL_LINKER=1
 
         # Set midl environment
         case "$target" in
         i*86-*)
             MIDL_FLAGS="${MIDL_FLAGS} -env win32"
             ;;
@@ -896,18 +902,18 @@ case "$target" in
             AS="$(basename "$AS_BIN")"
         fi
         AR='lib'
         AR_FLAGS='-NOLOGO -OUT:$@'
         AR_EXTRACT=
         RANLIB='echo not_ranlib'
         STRIP='echo not_strip'
         PKG_SKIP_STRIP=1
-        MKSHLIB='$(LINK) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
-        MKCSHLIB='$(LINK) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
+        MKSHLIB='$(LINKER) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
+        MKCSHLIB='$(LINKER) -NOLOGO -DLL -OUT:$@ -PDB:$(LINK_PDBFILE) $(DSO_LDOPTS)'
         WIN32_SUBSYSTEM_VERSION=6.01
         WIN32_CONSOLE_EXE_LDFLAGS=-SUBSYSTEM:CONSOLE,$WIN32_SUBSYSTEM_VERSION
         WIN32_GUI_EXE_LDFLAGS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
         DSO_LDOPTS=-SUBSYSTEM:WINDOWS,$WIN32_SUBSYSTEM_VERSION
         _USE_CPP_INCLUDE_FLAG=1
         _DEFINES_CFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
         _DEFINES_CXXFLAGS="-FI $_objdir/mozilla-config.h -DMOZILLA_CLIENT"
         CFLAGS="$CFLAGS -W3 -Gy -Zc:inline"
--- a/security/manager/ssl/StaticHPKPins.h
+++ b/security/manager/ssl/StaticHPKPins.h
@@ -1154,9 +1154,9 @@ static const TransportSecurityPreload kP
   { "za.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
   { "zh.search.yahoo.com", false, true, false, -1, &kPinset_yahoo },
 };
 
 // Pinning Preload List Length = 481;
 
 static const int32_t kUnknownId = -1;
 
-static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1522175596241000);
+static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1522262045635000);
--- a/security/manager/ssl/nsSTSPreloadList.errors
+++ b/security/manager/ssl/nsSTSPreloadList.errors
@@ -34,38 +34,38 @@ 9ss6.com: could not connect to host
 aaronmcguire.me: could not connect to host
 abloop.com: could not connect to host
 abolition.co: could not connect to host
 accwing.com: could not connect to host
 achterhoekseveiligheidsbeurs.nl: could not connect to host
 acrossgw.com: could not connect to host
 ad-disruptio.fr: could not connect to host
 adamdixon.co.uk: could not connect to host
+adventureally.com: could not connect to host
 aevpn.org: could not connect to host
 affily.io: could not connect to host
 aim-consultants.com: could not connect to host
 ajdiaz.me: could not connect to host
+ajetaci.cz: could not connect to host
 akiba-server.info: could not connect to host
 akita-stream.com: could not connect to host
 akoww.de: could not connect to host
 akul.co.in: could not connect to host
 al-f.net: could not connect to host
 alasta.info: could not connect to host
 alauda-home.de: could not connect to host
 alcatraz.online: could not connect to host
 alcnutrition.com: could not connect to host
 alexei.su: could not connect to host
 alexey-shamara.ru: could not connect to host
 alexhaydock.co.uk: could not connect to host
 alexmol.tk: could not connect to host
 alexperry.io: could not connect to host
-algebraaec.com: could not connect to host
 alilialili.ga: could not connect to host
 alldm.ru: could not connect to host
-alltubedownload.net: could not connect to host
 altahrim.net: could not connect to host
 amdouglas.uk: could not connect to host
 ameho.me: could not connect to host
 americandistribuidora.com: could not connect to host
 americkykongres.cz: could not connect to host
 amua.fr: could not connect to host
 amunoz.org: could not connect to host
 anastasia-shamara.ru: could not connect to host
@@ -105,16 +105,17 @@ aufmerksamkeitsstudie.com: could not con
 ausec.ch: could not connect to host
 austinsutphin.com: could not connect to host
 australiancattle.dog: could not connect to host
 authint.com: could not connect to host
 authland.com: could not connect to host
 authsrv.nl.eu.org: could not connect to host
 autostop-occasions.be: could not connect to host
 avdelivers.com: could not connect to host
+avi9526.pp.ua: could not connect to host
 avonlearningcampus.com: could not connect to host
 awan.tech: could not connect to host
 awf0.xyz: could not connect to host
 axel-fischer.science: could not connect to host
 b8a.me: could not connect to host
 babelfisch.eu: could not connect to host
 bad.pet: could not connect to host
 baiyangliu.com: could not connect to host
@@ -122,47 +123,48 @@ baka.network: could not connect to host
 balonmano.co: could not connect to host
 bandally.net: could not connect to host
 bandarifamily.com: could not connect to host
 bannisbierblog.de: could not connect to host
 baobeiglass.com: could not connect to host
 barbate.fr: could not connect to host
 barracuda.blog: could not connect to host
 barreaudenice.com: could not connect to host
-bbb1991.me: could not connect to host
 bbdos.ru: could not connect to host
+bcradio.org: could not connect to host
 bdvg.org: could not connect to host
 bearden.io: could not connect to host
 beasel.biz: could not connect to host
 bellavistaoutdoor.com: could not connect to host
 benjamin-horvath.com: could not connect to host
 benjamin-suess.de: could not connect to host
 benzou-space.com: could not connect to host
 berduri.com: could not connect to host
 berna.fr: could not connect to host
 berthelier.me: could not connect to host
 besthotsales.com: could not connect to host
 bey.io: could not connect to host
 bfrailwayclub.cf: could not connect to host
 bie.edu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 119"  data: no]
 bigerbio.com: could not connect to host
+bilimoe.com: could not connect to host
 binam.center: could not connect to host
+binaryabstraction.com: could not connect to host
 bingcheung.com: could not connect to host
 binimo.com: could not connect to host
 bip.gov.sa: could not connect to host
 bitmaincare.com.ua: could not connect to host
 bitmaincare.ru: could not connect to host
 bitmessage.ch: could not connect to host
 bityes.org: could not connect to host
 bizeau.ch: could not connect to host
 bjgongyi.com: could not connect to host
 bjtxl.cn: could not connect to host
 blackdiam.net: could not connect to host
 blackscytheconsulting.com: could not connect to host
-blameomar.com: could not connect to host
 blinkenlight.co.uk: could not connect to host
 blinkenlight.com.au: could not connect to host
 blog.gparent.org: could not connect to host
 bluefuzz.nl: could not connect to host
 blumen-garage.de: could not connect to host
 bm-i.ch: could not connect to host
 bodrumfarm.com: could not connect to host
 bolwerk.com.br: could not connect to host
@@ -189,65 +191,75 @@ buka.jp: could not connect to host
 bulbcompare.com: could not connect to host
 bumshow.ru: could not connect to host
 burlesquemakeup.com: could not connect to host
 businessfurs.info: could not connect to host
 businessmodeler.se: could not connect to host
 buyshoe.org: could not connect to host
 bvexplained.co.uk: could not connect to host
 by1898.com: could not connect to host
+bynet.cz: could not connect to host
 bypass.kr: could not connect to host
 caipai.fm: could not connect to host
 calculatoaresecondhand.xyz: could not connect to host
 callabs.net: could not connect to host
 callsigns.ca: could not connect to host
 campingcarlovers.com: could not connect to host
 cancelmyprofile.com: could not connect to host
 cardloan-manual.net: could not connect to host
 carloshmm.stream: could not connect to host
 casinoreal.com: could not connect to host
 caughtredhanded.co.nz: could not connect to host
+cbdev.de: could not connect to host
 cctld.com: could not connect to host
 cee.io: could not connect to host
 cegfw.com: could not connect to host
+ceml.ch: could not connect to host
 cencalvia.org: could not connect to host
 centos.pub: could not connect to host
+cfneia.org: could not connect to host
 cgtx.us: could not connect to host
 challengeskins.com: could not connect to host
 championnat-romand-cuisiniers-amateurs.ch: could not connect to host
 chaouby.com: could not connect to host
+charlenevondell.com: could not connect to host
 charonsecurity.com: could not connect to host
 cheatturnitin.com: could not connect to host
 cheesefusion.com: could not connect to host
+cheltik.ru: could not connect to host
 childrendeservebetter.org: could not connect to host
 china-line.org: could not connect to host
 chinternet.xyz: could not connect to host
 chloe.re: could not connect to host
 christianhoffmann.info: could not connect to host
 christophersole.com: could not connect to host
 chromaryu.net: could not connect to host
 chziyue.com: could not connect to host
+cienbeaute-lidl.fr: could not connect to host
 cinemysticism.com: could not connect to host
 cipher.land: could not connect to host
+cirrohost.com: could not connect to host
 cjtkfan.club: could not connect to host
 clearchatsandbox.com: could not connect to host
 clearviewwealthprojector.com.au: could not connect to host
-cloudbleed.info: could not connect to host
 cloudimproved.com: could not connect to host
 cloudimprovedtest.com: could not connect to host
 clownish.co.il: could not connect to host
 clycat.ru: could not connect to host
+cmlignon.ch: could not connect to host
 cnlic.com: could not connect to host
 cnwage.com: could not connect to host
 co-yutaka.com: could not connect to host
 coccolebenessere.it: could not connect to host
 coco-cool.fr: could not connect to host
 codenlife.xyz: could not connect to host
 codercross.com: could not connect to host
 codercy.com: could not connect to host
+codetripping.net: could not connect to host
+cogumelosmagicos.org: could not connect to host
 coldfff.com: could not connect to host
 colleencornez.com: could not connect to host
 complt.xyz: could not connect to host
 comprehensiveihc.com: could not connect to host
 comssa.org.au: could not connect to host
 conception.sk: could not connect to host
 conniesacademy.com: could not connect to host
 controltickets.com.br: could not connect to host
@@ -258,16 +270,17 @@ corsa-b.uk: could not connect to host
 cosmeticosdelivery.com.br: could not connect to host
 cosplayer.com: could not connect to host
 coughlan.de: could not connect to host
 cousincouples.com: could not connect to host
 cpaneltips.com: could not connect to host
 crackpfer.de: could not connect to host
 creative-wave.fr: could not connect to host
 creativecommonscatpictures.com: could not connect to host
+creep.im: could not connect to host
 cristianhares.com: could not connect to host
 criticalaim.com: could not connect to host
 crox.co: could not connect to host
 cryptopartynewcastle.org: could not connect to host
 crystalmachine.net: could not connect to host
 csgo77.com: could not connect to host
 cspeti.hu: could not connect to host
 customfilmworks.com: could not connect to host
@@ -277,26 +290,27 @@ cyberpeace.nl: could not connect to host
 cypherpunk.ws: could not connect to host
 czlx.co: could not connect to host
 d-bood.site: could not connect to host
 d8studio.net: could not connect to host
 dahlberg.cologne: could not connect to host
 daltonedwards.me: could not connect to host
 dam74.com.ar: could not connect to host
 daniel-stahl.net: could not connect to host
+darinkotter.com: could not connect to host
 darkdestiny.ch: could not connect to host
 darlo.co.uk: could not connect to host
-dart-tanke.com: could not connect to host
 data-detox.com: could not connect to host
 datascience.cafe: could not connect to host
 datorb.com: could not connect to host
 davidscherzer.at: could not connect to host
 davidstuff.net: could not connect to host
 davros.eu: could not connect to host
 davros.ru: could not connect to host
+dawnson.is: could not connect to host
 day.vip: could not connect to host
 days.one: could not connect to host
 dbcom.ru: could not connect to host
 dbox.ga: could not connect to host
 dden.website: could not connect to host
 dden.xyz: could not connect to host
 de-servers.de: could not connect to host
 decoyrouting.com: could not connect to host
@@ -309,31 +323,34 @@ derivativeshub.pro: could not connect to
 dermacarecomplex.com: could not connect to host
 detecte-fuite.ch: could not connect to host
 detecte.ch: could not connect to host
 detectefuite.ch: could not connect to host
 dev-talk.eu: could not connect to host
 devafterdark.com: could not connect to host
 devkid.net: could not connect to host
 devops.moe: could not connect to host
-dgportals.co.uk: could not connect to host
 dhl-smart.ch: could not connect to host
 dhub.xyz: could not connect to host
 diceduels.com: could not connect to host
 dicgaming.net: could not connect to host
 dick.red: could not connect to host
+die-borts.ch: could not connect to host
+diemogebhardt.com: could not connect to host
+dieser.me: could not connect to host
 digioccumss.ddns.net: could not connect to host
 diguass.us: could not connect to host
 dijks.com: could not connect to host
 dirtycat.ru: could not connect to host
 disability.gov: could not connect to host
 disadattamentolavorativo.it: could not connect to host
 disco-crazy-world.de: could not connect to host
 distinctivephotography.com.au: could not connect to host
 ditch.ch: could not connect to host
+dkn.go.id: could not connect to host
 dlyl888.com: could not connect to host
 dnsbird.org: could not connect to host
 dojifish.space: could not connect to host
 dolphin-hosting.com: could not connect to host
 domengrad.ru: could not connect to host
 dostavkakurierom.ru: could not connect to host
 doyoulyft.com: could not connect to host
 dranek.com: could not connect to host
@@ -347,47 +364,47 @@ drogoz.moe: could not connect to host
 dronexpertos.com: could not connect to host
 droomhuis-in-zuid-holland-kopen.nl: could not connect to host
 drunkscifi.com: could not connect to host
 duch.cloud: could not connect to host
 duelsow.eu: could not connect to host
 duks.com.br: could not connect to host
 duo.money: could not connect to host
 durangoenergyllc.com: could not connect to host
-dworzak.ch: could not connect to host
+dyn.im: could not connect to host
 e-mak.eu: could not connect to host
 e-wishlist.net: could not connect to host
+ead-italia.it: could not connect to host
 eatfitoutlet.com.br: could not connect to host
 eatry.io: could not connect to host
 ectora.com: could not connect to host
-edp-collaborative.com: could not connect to host
 eductf.org: could not connect to host
 eeb98.com: could not connect to host
 ehuber.info: could not connect to host
 einsatzstiefel.info: could not connect to host
-element-43.com: could not connect to host
+ejgconsultancy.co.uk: could not connect to host
+eldisagjapi.com: could not connect to host
 elementarywave.com: could not connect to host
 elenorsmadness.org: could not connect to host
-elia.cloud: could not connect to host
+elguadia.faith: could not connect to host
 elisabeth-strunz.de: could not connect to host
 elonbase.com: could not connect to host
 elsword.moe: could not connect to host
 er-music.com: could not connect to host
 erethon.com: could not connect to host
 erkaelderbarenaaben.dk: could not connect to host
 erspro.net: could not connect to host
 estoic.net: could not connect to host
 ethiobaba.com: could not connect to host
-etincelle.ml: could not connect to host
 euexia.fr: could not connect to host
 eurostrategy.vn.ua: could not connect to host
 ev-zertifikate.de: could not connect to host
 eveshaiwu.com: could not connect to host
 expxkcd.com: could not connect to host
-extreme-players.com: could not connect to host
+extensiblewebreportcard.org: could not connect to host
 eytosh.net: could not connect to host
 f00.fr: could not connect to host
 f8842.com: could not connect to host
 faber.org.ru: could not connect to host
 fabian-kluge.de: could not connect to host
 facebook.ax: could not connect to host
 facilitrak.com: could not connect to host
 factureenlinea.com: could not connect to host
@@ -425,19 +442,21 @@ fortuna-loessnitz.de: could not connect 
 foshanshequ.com: could not connect to host
 fossewayflowers.co.uk: could not connect to host
 fossewayflowers.com: could not connect to host
 foudufafa.de: could not connect to host
 fragnic.com: could not connect to host
 franckyz.com: could not connect to host
 fransallen.com: could not connect to host
 franzt.ovh: could not connect to host
+freddythechick.uk: could not connect to host
 fredliang.cn: could not connect to host
 fredtec.ru: could not connect to host
 freelansir.com: could not connect to host
+freesounding.com: could not connect to host
 freshcode.nl: could not connect to host
 frickenate.com: could not connect to host
 frodriguez.xyz: could not connect to host
 frolov.net: could not connect to host
 fromlemaytoz.com: could not connect to host
 frosty-gaming.xyz: could not connect to host
 frp-roleplay.de: could not connect to host
 frusky.net: could not connect to host
@@ -486,39 +505,41 @@ getgeek.es: could not connect to host
 getgeek.fi: could not connect to host
 getgeek.fr: could not connect to host
 getgeek.io: could not connect to host
 getgeek.no: could not connect to host
 getgeek.nu: could not connect to host
 getgeek.pl: could not connect to host
 getwarden.net: could not connect to host
 gevaulug.fr: could not connect to host
+gfhgiro.nl: could not connect to host
 gfoss.gr: could not connect to host
 gfournier.ca: could not connect to host
 gglks.com: could not connect to host
 ggrks-asano.com: could not connect to host
 ggss.cf: could not connect to host
 gifzilla.net: could not connect to host
-gilroywestwood.org: could not connect to host
 gina-architektur.design: could not connect to host
+git.co: could not connect to host
 glasner.photo: could not connect to host
 glutenfreelife.co.nz: could not connect to host
 gmantra.org: could not connect to host
 gmind.ovh: could not connect to host
 gnom.me: could not connect to host
 godrealms.com: could not connect to host
 godrive.ga: could not connect to host
 goiaspropaganda.com.br: could not connect to host
 google: could not connect to host
 google.ax: could not connect to host
 goranrango.ch: could not connect to host
 gottfridsberg.org: could not connect to host
 goukon.ru: could not connect to host
 gozadentro.com: could not connect to host
 gozel.com.tr: could not connect to host
+gpfclan.de: could not connect to host
 gradsm-ci.net: could not connect to host
 granth.io: could not connect to host
 gratisonlinesex.com: could not connect to host
 gregmartyn.com: could not connect to host
 greuel.online: could not connect to host
 greve.xyz: could not connect to host
 gritte.net: could not connect to host
 gugaltika-ipb.org: could not connect to host
@@ -527,28 +548,28 @@ gvt2.com: could not connect to host
 gvt3.com: could not connect to host
 h2cdn.cloud: could not connect to host
 h3artbl33d.nl: could not connect to host
 hackbarth.guru: could not connect to host
 haktec.de: could not connect to host
 halcyonsbastion.com: could not connect to host
 hang333.pw: could not connect to host
 hapijs.cn: could not connect to host
-happyagain.se: could not connect to host
+hardfalcon.net: could not connect to host
+harmfarm.nl: could not connect to host
 harrypottereditor.net: could not connect to host
 hasabig.wang: could not connect to host
 hasalittle.wang: could not connect to host
 hashplex.com: could not connect to host
-haucke.xyz: could not connect to host
 haze.network: could not connect to host
 hbbet.com: could not connect to host
 hbvip.com: could not connect to host
 hdy.nz: could not connect to host
-heap.zone: could not connect to host
 hearty.ink: could not connect to host
+hebergeurssd.com: could not connect to host
 heisenberg.co: could not connect to host
 hejsupport.se: could not connect to host
 hellofilters.com: could not connect to host
 hellomouse.tk: could not connect to host
 helpantiaging.com: could not connect to host
 helpekwendenihospital.com: could not connect to host
 helsingfors.guide: could not connect to host
 henriknoerr.com: could not connect to host
@@ -571,20 +592,20 @@ holidayincotswolds.co.uk: could not conn
 hoodoo.io: could not connect to host
 hoodoo.tech: could not connect to host
 hopglass.eu: could not connect to host
 hopglass.net: could not connect to host
 horvathd.eu: could not connect to host
 hostworkz.com: could not connect to host
 hozinga.de: could not connect to host
 hr98.tk: could not connect to host
+hserver.top: could not connect to host
 huchet.me: could not connect to host
 hudingyuan.cn: could not connect to host
 huiser.nl: could not connect to host
-hundter.com: could not connect to host
 huwjones.me: could not connect to host
 hydrante.ch: could not connect to host
 hypotheques24.ch: could not connect to host
 hzh.pub: could not connect to host
 iadttaveras.com: could not connect to host
 icebound.cc: could not connect to host
 iceloch.com: could not connect to host
 ictpro.info: could not connect to host
@@ -613,79 +634,77 @@ inscript.pl: could not connect to host
 insouciant.org: could not connect to host
 installgentoo.net: could not connect to host
 instasex.ch: could not connect to host
 intelldynamics.com: could not connect to host
 interviewpipeline.co.uk: could not connect to host
 investorloanshub.com: could not connect to host
 ip.or.at: could not connect to host
 iphonechina.net: could not connect to host
-irenekauer.com: could not connect to host
 irinkeby.nu: could not connect to host
 isamiok.com: could not connect to host
 itad.top: could not connect to host
 itpro-mg.de: could not connect to host
 its-schindler.de: could not connect to host
 itsatrap.nl: could not connect to host
 ivanpolchenko.com: could not connect to host
 ivfausland.de: could not connect to host
 j0ng.xyz: could not connect to host
 jaaxypro.com: could not connect to host
 jakincode.army: could not connect to host
-jan-cermak.cz: could not connect to host
+janssen.fm: could not connect to host
 japan4you.org: could not connect to host
 jaredfraser.com: could not connect to host
 javascriptlab.fr: could not connect to host
 jccrew.org: could not connect to host
 jean-remy.ch: could not connect to host
 jecho.cn: could not connect to host
 jeffersonregan.org: could not connect to host
 jens.hk: could not connect to host
 jhburton.co.uk: could not connect to host
 jiaqiang.vip: could not connect to host
-jichi.io: could not connect to host
 jie.dance: could not connect to host
 jjvanoorschot.nl: could not connect to host
 jkirsche.com: could not connect to host
-jmk.hu: could not connect to host
 jmoreau.ddns.net: could not connect to host
 jobmedic.com: could not connect to host
 joecod.es: could not connect to host
 joetyson.io: could not connect to host
 johngo.tk: could not connect to host
 jonathansanchez.pro: could not connect to host
 jonpads.com: could not connect to host
 jons.org: could not connect to host
-js88.sg: could not connect to host
 jsc7776.com: could not connect to host
 jsjyhzy.cc: could not connect to host
 juliaoantiguidades.com.br: could not connect to host
 juliawebber.co.za: could not connect to host
 jumbopan.com: could not connect to host
 jumbopan.net: could not connect to host
 just-pools.co.za: could not connect to host
 justice4assange.com: could not connect to host
 justmy.website: could not connect to host
 justzz.xyz: could not connect to host
 juventusmania1897.com: could not connect to host
 juzgalo.com: could not connect to host
-kabus.org: could not connect to host
+kaibol.com: could not connect to host
 kaika-facilitymanagement.de: could not connect to host
 kamitech.ch: could not connect to host
+kanaanonline.org: could not connect to host
 kapo.info: could not connect to host
 karamna.com: could not connect to host
 karanlyons.com: could not connect to host
 karuneshjohri.com: could not connect to host
-kashmirobserver.net: could not connect to host
 katzen.me: could not connect to host
 kawaiiku.com: could not connect to host
 kawaiiku.de: could not connect to host
+kelm.me: could not connect to host
 kenvix.com: could not connect to host
 kerp.se: could not connect to host
 kevindekoninck.com: could not connect to host
+kgb.us: could not connect to host
 kidbacker.com: could not connect to host
 kiedys.net: could not connect to host
 kieranweightman.me: could not connect to host
 kinepolis-studio.ga: could not connect to host
 kingclass.cn: could not connect to host
 kj1396.net: could not connect to host
 kjchernov.info: could not connect to host
 kjoglum.me: could not connect to host
@@ -711,17 +730,16 @@ kuechenplan.online: could not connect to
 kyle.place: could not connect to host
 kylebaldw.in: could not connect to host
 kylling.io: could not connect to host
 l18.io: could not connect to host
 laboutiquemarocaineduconvoyeur.com: could not connect to host
 laboutiquemarocaineduconvoyeur.ma: could not connect to host
 lacasa.fr: could not connect to host
 lacasseroy.com: could not connect to host
-lacigf.org: could not connect to host
 ladylikeit.com: could not connect to host
 lafr4nc3.xyz: could not connect to host
 lanonfire.com: could not connect to host
 lathamlabs.com: could not connect to host
 lathamlabs.net: could not connect to host
 lathamlabs.org: could not connect to host
 lavapot.com: could not connect to host
 lazulu.com: could not connect to host
@@ -746,53 +764,52 @@ leveredge.net: could not connect to host
 lezdomsm.com: could not connect to host
 lfaz.org: could not connect to host
 lheinrich.org: could not connect to host
 lhsj28.com: could not connect to host
 lhsj68.com: could not connect to host
 lhsj78.com: could not connect to host
 libertas-tech.com: could not connect to host
 likenosis.com: could not connect to host
+lingerielovers.com.br: could not connect to host
 linkages.org: could not connect to host
 linksanitizer.com: could not connect to host
 linksextremist.at: could not connect to host
 linux-admin-california.com: could not connect to host
 linux.sb: could not connect to host
 linuxcode.net: could not connect to host
 linvx.org: could not connect to host
 lissabon.guide: could not connect to host
 littlelundgrenladies.com: could not connect to host
 littleservice.cn: could not connect to host
 liukang.tech: could not connect to host
 lobosdomain.no-ip.info: could not connect to host
 locker3.com: could not connect to host
 logcat.info: could not connect to host
 logic8.ml: could not connect to host
-logicchen.com: could not connect to host
 logimagine.com: could not connect to host
 lolhax.org: could not connect to host
-lolicon.eu: could not connect to host
 loothole.com: could not connect to host
 losebellyfat.pro: could not connect to host
 loveandloyalty.se: could not connect to host
 lowt.us: could not connect to host
 loyaltech.ch: could not connect to host
 ltransferts.com: could not connect to host
 lubot.net: could not connect to host
 lukasunger.cz: could not connect to host
 lukasunger.net: could not connect to host
-lunasqu.ee: could not connect to host
 luom.net: could not connect to host
 luxonetwork.com: could not connect to host
 m4g.ru: could not connect to host
 maartenterpstra.xyz: could not connect to host
 magnacumlaude.co: could not connect to host
 mailon.ga: could not connect to host
 malesbdsm.com: could not connect to host
 malgraph.net: could not connect to host
+maosi.xin: could not connect to host
 marcelmarnitz.com: could not connect to host
 mare92.cz: could not connect to host
 mariehane.com: could not connect to host
 marketingdesignu.cz: could not connect to host
 marxist.party: could not connect to host
 mastodon.expert: could not connect to host
 mastodon.my: could not connect to host
 mathijskingma.nl: could not connect to host
@@ -809,40 +826,39 @@ mcdanieldevelopmentservices.com: could n
 mcsa-usa.org: could not connect to host
 mcsnovatamabayan.com: could not connect to host
 me-dc.com: could not connect to host
 meanevo.com: could not connect to host
 meathealth.com: could not connect to host
 mecanicadom.com: could not connect to host
 mediadandy.com: could not connect to host
 medy-me.com: could not connect to host
+melaniebilodeau.com: could not connect to host
 melhorproduto.com.br: could not connect to host
 melonstudios.net: could not connect to host
-meltzow.net: could not connect to host
 melvinlow.com: could not connect to host
-menaraannonces.com: could not connect to host
 menchez.me: could not connect to host
 mentax.net: could not connect to host
 menzaijia.com: could not connect to host
 metachris.com: could not connect to host
 metrix-money-ptc.com: could not connect to host
 mhjuma.com: could not connect to host
 michaelsulzer.com: could not connect to host
 michaelsulzer.eu: could not connect to host
 mikek.work: could not connect to host
 mikes.tk: could not connect to host
 mimeit.de: could not connect to host
 mingy.ddns.net: could not connect to host
 minitruckin.net: could not connect to host
 miyugirls.com: could not connect to host
 mkfs.fr: could not connect to host
 modded-minecraft-server-list.com: could not connect to host
+moderntld.net: could not connect to host
 moe-max.jp: could not connect to host
 monitori.ng: could not connect to host
-moobo.xyz: could not connect to host
 mooselook.de: could not connect to host
 moparcraft.com: could not connect to host
 moparcraft.org: could not connect to host
 morfitronik.pl: could not connect to host
 mosaique-lachenaie.fr: could not connect to host
 moskva.guide: could not connect to host
 motomorgen.com: could not connect to host
 motorbiketourhanoi.com: could not connect to host
@@ -854,81 +870,83 @@ mpserver12.org: could not connect to hos
 mrizzio.com: could not connect to host
 mrliu.me: could not connect to host
 mtn.cc: could not connect to host
 muga.space: could not connect to host
 munduch.cz: could not connect to host
 muslimbanter.co.za: could not connect to host
 mybeautyjobs.de: could not connect to host
 mycustomwriting.com: could not connect to host
+myeffect.today: could not connect to host
 myfappening.org: could not connect to host
 mygreatjobs.de: could not connect to host
 mynewleaf.co: could not connect to host
 mytravelblog.de: could not connect to host
 mzlog.win: could not connect to host
 naano.org: could not connect to host
+nanogi.ga: could not connect to host
 naphex.rocks: could not connect to host
 narodsovety.ru: could not connect to host
 nassi.me: could not connect to host
 nba2k.cn: could not connect to host
 nba2k.com.cn: could not connect to host
 nbalive.cn: could not connect to host
 ncdesigns-studio.com: could not connect to host
 neartothesky.com: could not connect to host
 nedcf.org.uk: could not connect to host
 neer.io: could not connect to host
-neio.uk: could not connect to host
+negativecurvature.net: could not connect to host
 nekoku.io: could not connect to host
 nephy.jp: could not connect to host
-netmeister.org: could not connect to host
 nevadafiber.net: could not connect to host
 newcityinfo.info: could not connect to host
 nexgeneration-solutions.com: could not connect to host
 nexusbyte.de: could not connect to host
 nexuscorporation.in: could not connect to host
 nfluence.org: could not connect to host
+ngtoys.com.br: could not connect to host
 nico.st: could not connect to host
 nienfun.com: could not connect to host
 nikksno.io: could not connect to host
 nikolasbradshaw.com: could not connect to host
 niouininon.eu: could not connect to host
 nirada.info: could not connect to host
 nishikino-maki.com: could not connect to host
 niva.synology.me: could not connect to host
 nkadvertising.online: could not connect to host
+nodelab-it.de: could not connect to host
 nonemu.ninja: could not connect to host
 norad.sytes.net: could not connect to host
 note7forever.com: could not connect to host
 notesforpebble.com: could not connect to host
 novascan.net: could not connect to host
 nowremindme.com: could not connect to host
 nsbfalconacademy.org: could not connect to host
-nst-maroc.com: could not connect to host
 nudel.ninja: could not connect to host
 nulltime.net: could not connect to host
 nup.pw: could not connect to host
-nupef.org.br: could not connect to host
 nyanpasu.tv: could not connect to host
 obdolbacca.ru: could not connect to host
 oberhof.co: could not connect to host
 oec-music.com: could not connect to host
 ofer.site: could not connect to host
 off-the-clock.us: could not connect to host
 offgames.pro: could not connect to host
 office-ruru.com: could not connect to host
-ohreally.de: could not connect to host
 oliverspringer.eu: could not connect to host
 onewebdev.info: could not connect to host
 onstud.com: could not connect to host
 onwie.fr: could not connect to host
 openspace.xxx: could not connect to host
 opium.io: could not connect to host
 oreka.online: could not connect to host
 orovillelaw.com: could not connect to host
 oscsdp.cz: could not connect to host
+osereso.tn: could not connect to host
+osmanlitorunu.com: could not connect to host
 otinane.eu: could not connect to host
 ourchoice2016.com: could not connect to host
 outetc.com: could not connect to host
 ownspec.com: could not connect to host
 oxymc.com: could not connect to host
 paichai.space: could not connect to host
 pajowu.de: could not connect to host
 panasca.is: could not connect to host
@@ -957,17 +975,16 @@ paypod.org: could not connect to host
 pcvirusclear.com: could not connect to host
 pear2pear.de: could not connect to host
 pengisatelier.net: could not connect to host
 persjrp.ca: could not connect to host
 persoform.ch: could not connect to host
 petlife.od.ua: could not connect to host
 peuf.shop: could not connect to host
 peykezamin.ir: could not connect to host
-phcimages.com: could not connect to host
 phdwuda.com: could not connect to host
 philippa.cool: could not connect to host
 phoxmeh.com: could not connect to host
 picallo.es: could not connect to host
 picone.com.au: could not connect to host
 pierrejeansuau.fr: could not connect to host
 pimspage.nl: could not connect to host
 pinebaylibrary.org: could not connect to host
@@ -1004,16 +1021,17 @@ proxydesk.eu: could not connect to host
 prpsss.com: could not connect to host
 pruikshop.nl: could not connect to host
 psncardplus.be: could not connect to host
 psncardplus.com: could not connect to host
 psncardplus.dk: could not connect to host
 psncardplus.nl: could not connect to host
 psncardplus.se: could not connect to host
 psychintervention.com: could not connect to host
+ptrujillo.com: could not connect to host
 publimepa.it: could not connect to host
 pugilares.com.pl: could not connect to host
 puhe.se: could not connect to host
 pypa.io: could not connect to host
 pythia.nz: could not connect to host
 qforum.org: could not connect to host
 qldformulaford.org: could not connect to host
 qoqo.us: could not connect to host
@@ -1022,45 +1040,44 @@ qscloud.de: could not connect to host
 qto.net: could not connect to host
 quay.net: could not connect to host
 r0t.co: could not connect to host
 rackblue.com: could not connect to host
 radical.org: could not connect to host
 rainbin.com: could not connect to host
 ranos.org: could not connect to host
 rapdogg.com: could not connect to host
-raspberry.us: could not connect to host
 ravse.dk: could not connect to host
 rcoliveira.com: could not connect to host
 rdfz.tech: could not connect to host
 readify.com.au: could not connect to host
 readityourself.net: could not connect to host
 real-compare.com: could not connect to host
 realcli.com: could not connect to host
+realestateradioshow.com: could not connect to host
 realraghavgupta.com: could not connect to host
 realwoo.com: could not connect to host
-rechtsanwaeltin-vollmer.de: could not connect to host
 redstickfestival.org: could not connect to host
 reevu.net: could not connect to host
 regendevices.eu: could not connect to host
 regio-salland.nl: could not connect to host
 reignsphere.net: could not connect to host
 reismil.ch: could not connect to host
 repaik.com: could not connect to host
 reqognize.com: could not connect to host
 research.md: could not connect to host
 ressl.ch: could not connect to host
 retcor.net: could not connect to host
 reth.ch: could not connect to host
-rets.org.br: could not connect to host
 retube.ga: could not connect to host
 reykjavik.guide: could not connect to host
 ribopierre.fr: could not connect to host
 richeza.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 119"  data: no]
 rishikeshyoga.in: could not connect to host
+rngmeme.com: could not connect to host
 rob.uk.com: could not connect to host
 robomonkey.org: could not connect to host
 robust.ga: could not connect to host
 rocketgnomes.com: could not connect to host
 rodehutskors.net: could not connect to host
 roguetechhub.org: could not connect to host
 rohanbassett.com: could not connect to host
 romanticvillas.com.au: could not connect to host
@@ -1069,26 +1086,25 @@ roolevoi.ru: could not connect to host
 rosabellas.co.uk: could not connect to host
 routeragency.com: could not connect to host
 royzez.com: could not connect to host
 rpasafrica.com: could not connect to host
 rs-devdemo.host: could not connect to host
 rsldb.com: could not connect to host
 rtc.fun: could not connect to host
 rubendv.be: could not connect to host
-rudd-o.com: could not connect to host
+rugk.dedyn.io: could not connect to host
 ruhr3.de: could not connect to host
 ruht.ro: could not connect to host
 runcarina.com: could not connect to host
 rundumcolumn.xyz: could not connect to host
 runementors.com: could not connect to host
 ruudkoot.nl: could not connect to host
 s0923.com: could not connect to host
 sa.net: could not connect to host
-safe.moe: could not connect to host
 saferedirectlink.com: could not connect to host
 sallysubs.com: could not connect to host
 salzamt.tk: could not connect to host
 samaritan.tech: could not connect to host
 sanatrans.com: could not connect to host
 sarndipity.com: could not connect to host
 sbiewald.de: could not connect to host
 schatmeester.be: could not connect to host
@@ -1102,26 +1118,26 @@ sectest.ml: could not connect to host
 secure-automotive-cloud.com: could not connect to host
 secure-automotive-cloud.org: could not connect to host
 secureindia.co: could not connect to host
 secureobscure.com: could not connect to host
 security.xn--q9jyb4c: could not connect to host
 securitysoapbox.com: could not connect to host
 securon.io: could not connect to host
 securoswiss.ch: could not connect to host
+seefirm.com: could not connect to host
 seleondar.ru: could not connect to host
 sellmoretires.com: could not connect to host
 seoscribe.net: could not connect to host
 server-essentials.com: could not connect to host
 serverlauget.no: could not connect to host
 servfefe.com: could not connect to host
 servpanel.de: could not connect to host
 seryovpn.com: could not connect to host
 sesha.co.za: could not connect to host
-sexgarage.de: could not connect to host
 shadex.net: could not connect to host
 shadiku.com: could not connect to host
 shadowplus.net: could not connect to host
 shadowrocket.net: could not connect to host
 shanxiapark.com: could not connect to host
 sharevari.com: could not connect to host
 shavingks.com: could not connect to host
 shemsconseils.ma: could not connect to host
@@ -1136,68 +1152,70 @@ shredoptics.ch: could not connect to hos
 shuzicai.cn: could not connect to host
 shymeck.pw: could not connect to host
 siebens.net: could not connect to host
 sikatehtaat.fi: could not connect to host
 siku.pro: could not connect to host
 silvistefi.com: could not connect to host
 simbolo.co.uk: could not connect to host
 simplerses.com: could not connect to host
+sinsojb.me: could not connect to host
 siqi.wang: could not connect to host
 skarox.com: could not connect to host
 skarox.net: could not connect to host
 skarox.ru: could not connect to host
 sky-aroma.com: could not connect to host
 skylocker.net: could not connect to host
 skylocker.nl: could not connect to host
 skyvault.io: could not connect to host
 sl1pkn07.wtf: could not connect to host
 slovoice.org: could not connect to host
+sluimann.de: could not connect to host
 slytech.ch: could not connect to host
 smileawei.com: could not connect to host
 smith.is: could not connect to host
 sml.lc: could not connect to host
-snight.co: could not connect to host
 socialworkout.com: could not connect to host
 socialworkout.net: could not connect to host
 socialworkout.org: could not connect to host
 socialworkout.tv: could not connect to host
 socketize.com: could not connect to host
 sojingle.net: could not connect to host
 solidtuesday.com: could not connect to host
+somali-derp.com: could not connect to host
 sonafe.info: could not connect to host
 sortaweird.net: could not connect to host
 soundhunter.xyz: could not connect to host
 sowingseasons.com: could not connect to host
 sowncloud.de: could not connect to host
 spanien.guide: could not connect to host
 spicywombat.com: could not connect to host
 split.is: could not connect to host
 sportsmanadvisor.com: could not connect to host
 squids.space: could not connect to host
 sqzryang.com: could not connect to host
 srvonfire.com: could not connect to host
-sstewartgallus.com: could not connect to host
 stadionmanager.com: could not connect to host
 stadtgartenla.com: could not connect to host
 stamonicatourandtravel.com: could not connect to host
+startuppeople.co.uk: could not connect to host
 statgram.me: could not connect to host
 static-assets.io: could not connect to host
 static.hosting: could not connect to host
 steffi-in-australien.com: could not connect to host
 steven-bennett.com: could not connect to host
 stevenwooding.com: could not connect to host
 stickswag.cf: could not connect to host
 stijnbelmans.be: could not connect to host
 stilettomoda.com.br: could not connect to host
 stonemanbrasil.com.br: could not connect to host
 stpip.com: could not connect to host
 streams.dyndns.org: could not connect to host
 stressfreehousehold.com: could not connect to host
-studienportal.eu: could not connect to host
+student.andover.edu: could not connect to host
 stupendous.net: could not connect to host
 stylle.me: could not connect to host
 sudo.im: could not connect to host
 sudosu.fr: could not connect to host
 sulek.eu: could not connect to host
 suneilpatel.com: could not connect to host
 sunfireshop.com.br: could not connect to host
 sunxchina.com: could not connect to host
@@ -1225,26 +1243,27 @@ tebieer.com: could not connect to host
 techask.it: could not connect to host
 techpit.us: could not connect to host
 telekollektiv.org: could not connect to host
 telugu4u.net: could not connect to host
 tenispopular.com: could not connect to host
 terra-x.net: could not connect to host
 terrax.net: could not connect to host
 testbawks.com: could not connect to host
+testovaci.ml: could not connect to host
 tetsai.com: could not connect to host
 thagki9.com: could not connect to host
 the-digitale.com: could not connect to host
+the-finance-blog.com: could not connect to host
 the-gist.io: could not connect to host
 thedarkartsandcrafts.com: could not connect to host
 thefox.co: could not connect to host
 thefox.com.fr: could not connect to host
 thefrk.xyz: could not connect to host
 thenrdhrd.nl: could not connect to host
-theojones.name: could not connect to host
 theprivacysolution.com: could not connect to host
 thermique.ch: could not connect to host
 thesehighsandlows.com: could not connect to host
 thewebdexter.com: could not connect to host
 thierryhayoz.ch: could not connect to host
 thinkcash.nl: could not connect to host
 thomspooren.nl: could not connect to host
 tianxicaipiao.win: could not connect to host
@@ -1289,17 +1308,16 @@ uggedal.com: could not connect to host
 uicchy.com: could not connect to host
 umsapi.com: could not connect to host
 unefuite.ch: could not connect to host
 unhu.fr: could not connect to host
 uni2share.com: could not connect to host
 unicorn.li: could not connect to host
 unirenter.ru: could not connect to host
 uploadbro.com: could not connect to host
-upr.com.ua: could not connect to host
 urcentral.org: could not connect to host
 uscp8.com: could not connect to host
 usportsgo.com: could not connect to host
 uwesander.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 119"  data: no]
 vaaddress.co: could not connect to host
 vacationfund.co: could not connect to host
 vadik.me: could not connect to host
 valecnatechnika.cz: could not connect to host
@@ -1311,20 +1329,22 @@ velen.io: could not connect to host
 venmos.com: could not connect to host
 venturavwparts.com: could not connect to host
 verdeandco.co.uk: could not connect to host
 vers.one: could not connect to host
 versfin.net: could not connect to host
 veryyounglesbians.com: could not connect to host
 vgatest.nl: could not connect to host
 videorullen.se: could not connect to host
+viewmyrecords.com: could not connect to host
 vimeosucks.nyc: could not connect to host
 vinetalk.net: could not connect to host
 visionthroughknowledge.com: could not connect to host
 visiontree.eu: could not connect to host
+vistaalmar.es: could not connect to host
 vitoye.com: could not connect to host
 vkino.com: could not connect to host
 vlogge.com: could not connect to host
 voeux.io: could not connect to host
 volcain.io: could not connect to host
 votresiteweb.ch: could not connect to host
 vrtouring.org: could not connect to host
 vsx.ch: could not connect to host
@@ -1346,17 +1366,16 @@ warp-radio.tv: could not connect to host
 watchweasel.com: could not connect to host
 waxdramatic.com: could not connect to host
 we.serveftp.net: could not connect to host
 weareincognito.org: could not connect to host
 webart-factory.de: could not connect to host
 webbson.net: could not connect to host
 webcatechism.com: could not connect to host
 webhackspro.com: could not connect to host
-webkeks.org: could not connect to host
 webproject.rocks: could not connect to host
 webslake.com: could not connect to host
 webspotter.nl: could not connect to host
 webtar.info: could not connect to host
 webtech.com.br: could not connect to host
 webthings.com.br: could not connect to host
 wecanvisit.com: could not connect to host
 weiler.xyz: could not connect to host
@@ -1367,55 +1386,59 @@ wereldplanner.nl: could not connect to h
 werhatunsverraten.eu: could not connect to host
 wespeakgeek.co.za: could not connect to host
 wessner.org: could not connect to host
 wetthost.com: could not connect to host
 weyland.tech: could not connect to host
 whereisjason.com: could not connect to host
 whereismyorigin.cf: could not connect to host
 whilsttraveling.com: could not connect to host
+whitworth.nyc: could not connect to host
 wibuw.com: could not connect to host
 wilhelm-nathan.de: could not connect to host
 willkommen-fuerstenberg.de: could not connect to host
+wimbo.nl: could not connect to host
 winnersports.co: could not connect to host
 winsufi.biz: could not connect to host
 wipply.com: could not connect to host
 wireframesoftware.com: could not connect to host
 wisak.eu: could not connect to host
 wishesbee.com: could not connect to host
 wissl.org: could not connect to host
 wizznab.tk: could not connect to host
 wmawri.com: could not connect to host
 wolfemg.com: could not connect to host
 wolfenland.net: could not connect to host
 wollongongbaptist.hopto.org: could not connect to host
 wonderbooks.club: could not connect to host
 woomu.me: could not connect to host
-wooplagaming.com: could not connect to host
 workemy.com: could not connect to host
 worldfree4.org: could not connect to host
 wp-fastsearch.de: could not connect to host
 wp-stack.pro: could not connect to host
 wp6.pw: could not connect to host
 wuchipc.com: could not connect to host
 www-68277.com: could not connect to host
 www-8887999.com: could not connect to host
 www.re: could not connect to host
 www.sb: could not connect to host
 www.simbolo.co.uk: could not connect to host
+x-iweb.ru: could not connect to host
 xbc.nz: could not connect to host
 xeonlab.com: could not connect to host
 xeonlab.de: could not connect to host
 xia100.xyz: could not connect to host
 xianguocy.com: could not connect to host
 xing.ml: could not connect to host
 xn--8mr166hf6s.xn--fiqs8s: could not connect to host
 xn--erklderbarenben-slbh.dk: could not connect to host
 xn--srenpind-54a.dk: could not connect to host
+xn--uist1idrju3i.jp: could not connect to host
 xn--yj8h0m.ws: could not connect to host
+xpressprint.com.br: could not connect to host
 xpwn.cz: could not connect to host
 xuntaosms.com: could not connect to host
 xwaretech.info: could not connect to host
 y3451.com: could not connect to host
 yabrt.cn: could not connect to host
 yahoo.ax: could not connect to host
 yarchives.jp: could not connect to host
 yaucy.win: could not connect to host
@@ -1425,17 +1448,16 @@ yesfone.com.br: could not connect to hos
 yffengshi.ml: could not connect to host
 yggdar.ga: could not connect to host
 yhori.xyz: could not connect to host
 yibin0831.com: could not connect to host
 ying299.com: could not connect to host
 ying299.net: could not connect to host
 yobst.tk: could not connect to host
 yoga.is-an-engineer.com: could not connect to host
-yogananda-roma.org: could not connect to host
 yoramvandevelde.net: could not connect to host
 yotilabs.com: could not connect to host
 yourznc.com: could not connect to host
 yousite.by: could not connect to host
 yude.ml: could not connect to host
 yum.beer: could not connect to host
 yuna.love: could not connect to host
 yuna.tg: could not connect to host
@@ -1462,17 +1484,17 @@ zypr.pw: could not connect to host
 zyx.im: could not connect to host
 zzw.ca: could not connect to host
 00001.am: did not receive HSTS header
 00002.am: did not receive HSTS header
 0005.com: could not connect to host
 0005aa.com: could not connect to host
 007sascha.de: did not receive HSTS header
 020wifi.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 119"  data: no]
-0222aa.com: did not receive HSTS header
+0222aa.com: could not connect to host
 048.ag: could not connect to host
 050508.com: could not connect to host
 0f.io: could not connect to host
 0fl.com: did not receive HSTS header
 0g.org.uk: could not connect to host
 0o0.ooo: could not connect to host
 0p.no: did not receive HSTS header
 0w0.vc: could not connect to host
@@ -1541,17 +1563,17 @@ 25daysof.io: could not connect to host
 2859cc.com: could not connect to host
 2acbi-asso.fr: did not receive HSTS header
 2bizi.ru: could not connect to host
 2brokegirls.org: could not connect to host
 2carpros.com: did not receive HSTS header
 2intermediate.co.uk: did not receive HSTS header
 2or3.tk: could not connect to host
 2smart4food.com: did not receive HSTS header
-2ss.jp: could not connect to host
+2ss.jp: did not receive HSTS header
 300651.ru: did not receive HSTS header
 300mbmovie24.com: did not receive HSTS header
 300mbmovies4u.cc: could not connect to host
 301.website: could not connect to host
 302.nyc: could not connect to host
 314166.com: could not connect to host
 32ph.com: could not connect to host
 33836.com: did not receive HSTS header
@@ -1582,17 +1604,17 @@ 4455software.com: did not receive HSTS h
 44957.com: could not connect to host
 4679.space: could not connect to host
 4azino777.ru: did not receive HSTS header
 4cclothing.com: could not connect to host
 4elements.com: did not receive HSTS header
 4eyes.ch: did not receive HSTS header
 4miners.net: could not connect to host
 4mybaby.ch: did not receive HSTS header
-4ourty2.org: did not receive HSTS header
+4ourty2.org: could not connect to host
 4sqsu.eu: could not connect to host
 4w-performers.link: could not connect to host
 50millionablaze.org: could not connect to host
 513vpn.net: did not receive HSTS header
 517vpn.cn: could not connect to host
 518maicai.com: did not receive HSTS header
 540.co: did not receive HSTS header
 54bf.com: could not connect to host
@@ -1744,17 +1766,17 @@ af-fotografie.net: did not receive HSTS 
 afdkompakt.de: max-age too low: 86400
 aficotroceni.ro: did not receive HSTS header
 afiru.net: could not connect to host
 afmchandler.com: did not receive HSTS header
 afp548.tk: could not connect to host
 after.im: did not receive HSTS header
 afvallendoeje.nu: could not connect to host
 afyou.co.kr: could not connect to host
-afzco.asia: could not connect to host
+afzco.asia: did not receive HSTS header
 agalaxyfarfaraway.co.uk: could not connect to host
 agatheetraphael.fr: could not connect to host
 agbremen.de: did not receive HSTS header
 agentseeker.ca: could not connect to host
 agevio.com: could not connect to host
 agonswim.com: could not connect to host
 agrias.com.br: did not receive HSTS header
 agrimap.com: did not receive HSTS header
@@ -1909,24 +1931,22 @@ androled.fr: max-age too low: 5184000
 androoz.se: could not connect to host
 andyclark.io: could not connect to host
 andymartin.cc: could not connect to host
 andyuk.org: did not receive HSTS header
 anfsanchezo.co: could not connect to host
 anfsanchezo.me: could not connect to host
 angeloroberto.ch: did not receive HSTS header
 anghami.com: did not receive HSTS header
-anglesya.win: did not receive HSTS header
 anglictinatabor.cz: could not connect to host
 angryroute.com: could not connect to host
 animal-nature-human.com: did not receive HSTS header
 anime1video.tk: could not connect to host
 animeday.ml: could not connect to host
 animesfusion.com.br: could not connect to host
-animesharp.com: could not connect to host
 animurecs.com: did not receive HSTS header
 aniplus.cf: could not connect to host
 aniplus.gq: could not connect to host
 aniplus.ml: could not connect to host
 anisekai.com: max-age too low: 2592000
 anitklib.ml: could not connect to host
 ankakaak.com: could not connect to host
 ankaraprofesyonelnakliyat.com: did not receive HSTS header
@@ -2082,17 +2102,16 @@ au-pair24.de: did not receive HSTS heade
 au.search.yahoo.com: max-age too low: 172800
 aubiosales.com: could not connect to host
 aucubin.moe: could not connect to host
 audiovisualdevices.com.au: did not receive HSTS header
 auditmatrix.com: did not receive HSTS header
 augias.org: could not connect to host
 augrandinquisiteur.com: did not receive HSTS header
 aujapan.ru: could not connect to host
-aulo.in: did not receive HSTS header
 aurainfosec.com: did not receive HSTS header
 aurainfosec.com.au: did not receive HSTS header
 auraredeye.com: could not connect to host
 auraredshield.com: could not connect to host
 aurora-terraria.org: did not receive HSTS header
 auroratownshipfd.org: could not connect to host
 aurugs.com: did not receive HSTS header
 ausnah.me: could not connect to host
@@ -2404,17 +2423,16 @@ blendlecdn.com: could not connect to hos
 blenheimchalcot.com: did not receive HSTS header
 blessnet.jp: did not receive HSTS header
 blha303.com.au: could not connect to host
 blikund.swedbank.se: did not receive HSTS header
 blindsexdate.nl: did not receive HSTS header
 blitzprog.org: did not receive HSTS header
 blmiller.com: could not connect to host
 blocksatz-medien.de: could not connect to host
-blog-grupom2.es: did not receive HSTS header
 blog-ritaline.com: could not connect to host
 blog.coffee: could not connect to host
 blog.cyveillance.com: did not receive HSTS header
 blog.torproject.org: max-age too low: 1000
 bloglife-bb.com: did not receive HSTS header
 bloglikepro.com: could not connect to host
 blognone.com: did not receive HSTS header
 blogonblogspot.com: did not receive HSTS header
@@ -2504,17 +2522,16 @@ bravehearts.org.au: did not receive HSTS
 bravz.de: could not connect to host
 brenden.net.au: could not connect to host
 bress.cloud: could not connect to host
 brettabel.com: did not receive HSTS header
 brettpemberton.xyz: did not receive HSTS header
 brickoo.com: could not connect to host
 brickyardbuffalo.com: did not receive HSTS header
 bridholm.se: could not connect to host
-brightstarkids.com.au: did not receive HSTS header
 brilliantbuilders.co.uk: did not receive HSTS header
 britzer-toner.de: did not receive HSTS header
 brix.ninja: did not receive HSTS header
 brks.xyz: could not connect to host
 broken-oak.com: could not connect to host
 brookechase.com: did not receive HSTS header
 browserid.org: could not connect to host
 brrd.io: did not receive HSTS header
@@ -2580,17 +2597,16 @@ bustimes.org: did not receive HSTS heade
 butchersworkshop.com: did not receive HSTS header
 butian518.com: did not receive HSTS header
 buttercoin.com: could not connect to host
 butterfieldstraining.com: did not receive HSTS header
 buvinghausen.com: max-age too low: 86400
 buybaby.eu: did not receive HSTS header
 buyfox.de: did not receive HSTS header
 buynowdepot.com: did not receive HSTS header
-buzz.tools: did not receive HSTS header
 buzzconcert.com: could not connect to host
 buzztelco.com.au: did not receive HSTS header
 bw81.xyz: could not connect to host
 bwear4all.de: could not connect to host
 by4cqb.cn: could not connect to host
 bydisk.com: could not connect to host
 bynumlaw.net: did not receive HSTS header
 bypassed.bid: could not connect to host
@@ -2826,16 +2842,17 @@ christina-quast.de: did not receive HSTS
 christophercolumbusfoundation.gov: could not connect to host
 christophheich.me: could not connect to host
 chrisupjohn.com: could not connect to host
 chrisvicmall.com: did not receive HSTS header
 chrome: could not connect to host
 chrome-devtools-frontend.appspot.com: did not receive HSTS header (error ignored - included regardless)
 chrome.google.com: did not receive HSTS header (error ignored - included regardless)
 chrst.ph: could not connect to host
+chs.us: did not receive HSTS header
 chua.cf: could not connect to host
 chuckame.fr: did not receive HSTS header
 chulado.com: did not receive HSTS header
 churchux.co: did not receive HSTS header
 churrasqueirafacil.com.br: could not connect to host
 cidr.ml: could not connect to host
 cigarblogs.net: could not connect to host
 cigi.site: could not connect to host
@@ -2920,16 +2937,17 @@ coach-sportif.paris: did not receive HST
 cobrax.net: could not connect to host
 cocktailfuture.fr: could not connect to host
 cocolovesdaddy.com: could not connect to host
 codabix.com: did not receive HSTS header
 codabix.de: could not connect to host
 codabix.net: could not connect to host
 code-35.com: could not connect to host
 code-digsite.com: could not connect to host
+code-judge.tk: did not receive HSTS header
 code.google.com: did not receive HSTS header (error ignored - included regardless)
 codealkemy.co: max-age too low: 43200
 codeco.pw: could not connect to host
 codecontrollers.de: could not connect to host
 codeforce.io: could not connect to host
 codeforhakodate.org: did not receive HSTS header
 codejunkie.de: did not receive HSTS header
 codelayer.ca: could not connect to host
@@ -3100,17 +3118,17 @@ crowdjuris.com: could not connect to hos
 crownruler.com: did not receive HSTS header
 crows.io: max-age too low: 60
 crrev.com: did not receive HSTS header (error ignored - included regardless)
 crtvmgmt.com: could not connect to host
 crudysql.com: could not connect to host
 crufad.org: did not receive HSTS header
 cruikshank.com.au: could not connect to host
 cruzr.xyz: could not connect to host
-crypt.guru: could not connect to host
+crypt.guru: did not receive HSTS header
 crypticshell.co.uk: could not connect to host
 cryptify.eu: could not connect to host
 cryptobin.org: could not connect to host
 cryptodash.net: could not connect to host
 cryptojar.io: did not receive HSTS header
 cryptolab.pro: could not connect to host
 cryptolab.tk: could not connect to host
 cryptopartyatx.org: could not connect to host
@@ -3197,17 +3215,16 @@ daisuki.pw: did not receive HSTS header
 dakerealestate.com: did not receive HSTS header
 dakrib.net: could not connect to host
 daku.gdn: could not connect to host
 dalingk.co: could not connect to host
 damianuv-blog.cz: did not receive HSTS header
 danbarrett.com.au: did not receive HSTS header
 dancerdates.net: could not connect to host
 dane-bre.net: did not receive HSTS header
-daniel-du.com: could not connect to host
 daniel-mosquera.com: could not connect to host
 daniel-steuer.de: could not connect to host
 danielcowie.me: could not connect to host
 danieldk.eu: did not receive HSTS header
 danielheal.net: could not connect to host
 danieliancu.com: could not connect to host
 danielworthy.com: did not receive HSTS header
 danijobs.com: could not connect to host
@@ -3215,17 +3232,17 @@ danishenanigans.com: could not connect t
 dankeblog.com: could not connect to host
 danmark.guide: could not connect to host
 dannycrichton.com: did not receive HSTS header
 danrl.de: could not connect to host
 danwillenberg.com: did not receive HSTS header
 daolerp.xyz: could not connect to host
 dargasia.is: could not connect to host
 dario.im: could not connect to host
-dariosirangelo.me: did not receive HSTS header
+dariosirangelo.me: could not connect to host
 dark-x.cf: could not connect to host
 darkanzali.pl: max-age too low: 0
 darkfriday.ddns.net: could not connect to host
 darkhole.cn: did not receive HSTS header
 darkkeepers.dk: max-age too low: 172800
 darknebula.space: could not connect to host
 darkpony.ru: could not connect to host
 darksideof.it: could not connect to host
@@ -3363,20 +3380,22 @@ dfrance.com.br: could not connect to hos
 dfviana.com.br: max-age too low: 2592000
 dhaynes.xyz: could not connect to host
 dhpcs.com: did not receive HSTS header
 dhpiggott.net: did not receive HSTS header
 diablotine.rocks: could not connect to host
 diagnosia.com: did not receive HSTS header
 diamondcare.com.br: could not connect to host
 dianlujitao.com: did not receive HSTS header
+diannaobos.com: did not receive HSTS header
 dicando.com: max-age too low: 2592000
 dicelab.co.uk: could not connect to host
 dicionariofinanceiro.com: did not receive HSTS header
 dicionariopopular.com: did not receive HSTS header
+dicoding.com: did not receive HSTS header
 dieb.photo: could not connect to host
 diejanssens.net: did not receive HSTS header
 dierenkruiden.nl: could not connect to host
 diewebstube.de: could not connect to host
 diezel.com: could not connect to host
 diferenca.com: did not receive HSTS header
 digired.xyz: could not connect to host
 digitalbank.kz: could not connect to host
@@ -3393,17 +3412,16 @@ dimitrisotiropoulosbooks.com: max-age to
 din-tools.com: did not receive HSTS header
 dinamoelektrik.com: could not connect to host
 dingcc.com: did not receive HSTS header
 dingcc.me: could not connect to host
 dingcc.org: could not connect to host
 dingcc.xyz: could not connect to host
 dinkum.online: could not connect to host
 dipconsultants.com: could not connect to host
-direct2uk.com: did not receive HSTS header
 directhskincream.com: could not connect to host
 directorinegocis.cat: could not connect to host
 direnv.net: did not receive HSTS header
 dirk-weise.de: did not receive HSTS header
 disclosure.io: did not receive HSTS header
 discovery.lookout.com: did not receive HSTS header
 discoveryottawa.ca: could not connect to host
 discoveryrom.org: did not receive HSTS header
@@ -3500,17 +3518,17 @@ dotspaperie.com: could not connect to ho
 doublethink.online: could not connect to host
 doubleyummy.uk: did not receive HSTS header
 doujin.nagoya: could not connect to host
 dovecotadmin.org: could not connect to host
 doveholesband.co.uk: did not receive HSTS header
 dovetailnow.com: could not connect to host
 download.jitsi.org: did not receive HSTS header
 downsouthweddings.com.au: could not connect to host
-doxcelerate.com: max-age too low: 69
+doxcelerate.com: could not connect to host
 dr-becarelli-philippe.chirurgiens-dentistes.fr: did not receive HSTS header
 drach.xyz: did not receive HSTS header
 dragonisles.net: could not connect to host
 dragons-of-highlands.cz: did not receive HSTS header
 dragonsmoke.cloud: could not connect to host
 dragonstower.net: could not connect to host
 dragonteam.ninja: could not connect to host
 drainagebuizen.nl: did not receive HSTS header
@@ -3564,16 +3582,17 @@ duelysthub.com: could not connect to hos
 duerls.de: did not receive HSTS header
 dukec.me: did not receive HSTS header
 dullsir.com: did not receive HSTS header
 dune.io: did not receive HSTS header
 dungi.org: could not connect to host
 duole30.com: did not receive HSTS header
 duongpho.com: did not receive HSTS header
 duskopy.top: could not connect to host
+dutchessuganda.com: did not receive HSTS header
 dutchrank.com: did not receive HSTS header
 duuu.ch: could not connect to host
 dycem-ns.com: did not receive HSTS header
 dycontrol.de: could not connect to host
 dylanscott.com.au: did not receive HSTS header
 dynamic-innovations.net: could not connect to host
 dynamize.solutions: could not connect to host
 dyrkar.com: did not receive HSTS header
@@ -3880,16 +3899,17 @@ ewallet-optimizer.com: did not receive H
 ewex.org: could not connect to host
 excelgum.ca: did not receive HSTS header
 exeintel.com: did not receive HSTS header
 exfiles.cz: did not receive HSTS header
 exgravitus.com: could not connect to host
 exno.co: could not connect to host
 exousiakaidunamis.xyz: could not connect to host
 expertmile.com: did not receive HSTS header
+exploravacations.in: did not receive HSTS header
 expo-designers.com: did not receive HSTS header
 expressfinance.co.za: did not receive HSTS header
 extrathemeshowcase.net: could not connect to host
 extratorrentlive.xyz: could not connect to host
 extratorrents.tech: could not connect to host
 extreemhost.nl: did not receive HSTS header
 extremenetworking.net: could not connect to host
 exy.pw: could not connect to host
@@ -3926,17 +3946,16 @@ fairlyoddtreasures.com: did not receive 
 faizan.xyz: did not receive HSTS header
 fakeletters.org: did not receive HSTS header
 faktura.pl: did not receive HSTS header
 falconfrag.com: could not connect to host
 falconwiz.com: did not receive HSTS header
 falkhusemann.de: did not receive HSTS header
 falkp.no: did not receive HSTS header
 fallenangelspirits.uk: could not connect to host
-fallofthecitadel.com: did not receive HSTS header
 faluninfo.ba: did not receive HSTS header
 fam-weyer.de: could not connect to host
 fame-agency.net: could not connect to host
 famep.gov: could not connect to host
 familie-sprink.de: could not connect to host
 familie-zimmermann.at: could not connect to host
 famio.cn: could not connect to host
 fanflow.com: did not receive HSTS header
@@ -4257,16 +4276,17 @@ gameparade.de: could not connect to host
 gamepiece.com: could not connect to host
 gamers-life.fr: could not connect to host
 gamerslair.org: did not receive HSTS header
 gamerz-point.de: could not connect to host
 gamesdepartment.co.uk: did not receive HSTS header
 gameserver-sponsor.de: did not receive HSTS header
 gamesurferapp.com: could not connect to host
 gamingmedia.eu: did not receive HSTS header
+gamoice.com: did not receive HSTS header
 gampenhof.de: did not receive HSTS header
 garageon.net: did not receive HSTS header
 garciamartin.me: could not connect to host
 garcinia--cambogia.com: could not connect to host
 garden.trade: could not connect to host
 gardencarezone.com: did not receive HSTS header
 gatapro.net: could not connect to host
 gatorsa.es: did not receive HSTS header
@@ -4349,16 +4369,17 @@ giftgofers.com: did not receive HSTS hea
 giftservices.nl: could not connect to host
 gigacloud.org: max-age too low: 0
 gigacog.com: could not connect to host
 gigin.me: did not receive HSTS header
 gilcloud.com: could not connect to host
 gilgaz.com: did not receive HSTS header
 gillet-cros.fr: could not connect to host
 gilly.berlin: did not receive HSTS header
+gilroywestwood.org: did not receive HSTS header
 gincher.net: did not receive HSTS header
 gingali.de: did not receive HSTS header
 ginijony.com: did not receive HSTS header
 gintenreiter-photography.com: could not connect to host
 giogadesign.com: did not receive HSTS header
 gipsamsfashion.com: could not connect to host
 gipsic.com: did not receive HSTS header
 gis3m.org: did not receive HSTS header
@@ -4910,17 +4931,17 @@ ievgenialehner.com: did not receive HSTS
 ifad.org: did not receive HSTS header
 ifastuniversity.com: did not receive HSTS header
 ifleurs.com: could not connect to host
 ifx.ee: could not connect to host
 igforums.com: could not connect to host
 igiftcards.nl: did not receive HSTS header
 ignatisd.gr: did not receive HSTS header
 igule.net: could not connect to host
-ihotel.io: could not connect to host
+ihotel.io: did not receive HSTS header
 ihrlotto.de: could not connect to host
 ihrnationalrat.ch: could not connect to host
 ihsbsd.me: could not connect to host
 ihsbsd.tk: could not connect to host
 iispeed.com: did not receive HSTS header
 ijn-dd.nl: did not receive HSTS header
 ijoda.com: could not connect to host
 ikon.name: did not receive HSTS header
@@ -5183,16 +5204,17 @@ jamescostian.com: did not receive HSTS h
 jamesdoell.com: could not connect to host
 jamesdoylephoto.com: did not receive HSTS header
 jamesf.xyz: could not connect to host
 jamesforman.co.nz: did not receive HSTS header
 jameshale.me: did not receive HSTS header
 jamesmaurer.com: did not receive HSTS header
 jami.am: did not receive HSTS header
 jamourtney.com: could not connect to host
+jan-cermak.cz: did not receive HSTS header
 jan-daniels.de: did not receive HSTS header
 jan-roenspies.de: could not connect to host
 jan27.org: did not receive HSTS header
 janario.me: could not connect to host
 janbrodda.de: max-age too low: 2592000
 jangho.me: could not connect to host
 janking.de: did not receive HSTS header
 jannyrijneveld.nl: did not receive HSTS header
@@ -5344,18 +5366,18 @@ jsbentertainment.nl: did not receive HST
 jsg-technologies.de: did not receive HSTS header
 jualautoclave.com: did not receive HSTS header
 jualssh.com: could not connect to host
 juandesouza.com: did not receive HSTS header
 juka.pp.ua: did not receive HSTS header
 juliamweber.de: could not connect to host
 julian-kipka.de: did not receive HSTS header
 julian-witusch.de: could not connect to host
-julianvmodesto.com: did not receive HSTS header
 julido.de: did not receive HSTS header
+juliemaurel.fr: did not receive HSTS header
 jumbox.xyz: could not connect to host
 jumbster.com: max-age too low: 2592000
 jumping-duck.com: could not connect to host
 junaos.com: did not receive HSTS header
 junaos.xyz: did not receive HSTS header
 jundimax.com.br: could not connect to host
 junge-selbsthilfe.info: could not connect to host
 junglegoat.xyz: did not receive HSTS header
@@ -5463,16 +5485,17 @@ kimana.pe: could not connect to host
 kimberg.co.uk: could not connect to host
 kimpost.org: could not connect to host
 kina.guide: could not connect to host
 kinderly.co.uk: did not receive HSTS header
 kinderwagen-test24.de: could not connect to host
 kindlyfire.com: could not connect to host
 kindof.ninja: could not connect to host
 kingmanhall.org: could not connect to host
+kingopen.cn: max-age too low: 0
 kinkdr.com: could not connect to host
 kinniyaonlus.com: did not receive HSTS header
 kinnon.enterprises: could not connect to host
 kintoandar.com: max-age too low: 0
 kintrip.com: did not receive HSTS header
 kionetworks.com: did not receive HSTS header
 kipin.fr: did not receive HSTS header
 kipira.com: could not connect to host
@@ -5652,17 +5675,17 @@ landscapingmedic.com: did not receive HS
 langenbach.rocks: could not connect to host
 langendries.eu: could not connect to host
 langhun.me: did not receive HSTS header
 laniakean.com: could not connect to host
 lanseyujie.com: max-age too low: 2592000
 lansinoh.co.uk: did not receive HSTS header
 lanzainc.xyz: did not receive HSTS header
 laobox.fr: could not connect to host
-laospage.com: could not connect to host
+laospage.com: did not receive HSTS header
 laplaceduvillage.net: could not connect to host
 laquack.com: could not connect to host
 laredsemanario.com: could not connect to host
 lasepiataca.com: did not receive HSTS header
 lasercloud.ml: could not connect to host
 laserfuchs.de: did not receive HSTS header
 lashstuff.com: did not receive HSTS header
 latelierdekathy.com: could not connect to host
@@ -5799,16 +5822,17 @@ linorman1997.me: could not connect to ho
 linux-mint.cz: could not connect to host
 linuxandstuff.de: could not connect to host
 linuxeyecandy.com: could not connect to host
 linuxfixed.it: could not connect to host
 linuxforyou.com: could not connect to host
 linuxgeek.ro: could not connect to host
 linuxmint.cz: could not connect to host
 linuxmonitoring.net: did not receive HSTS header
+lipo.lol: did not receive HSTS header
 liquid.solutions: did not receive HSTS header
 liquorsanthe.in: could not connect to host
 lisaco.de: could not connect to host
 lisbongold.com: did not receive HSTS header
 lisgade.dk: could not connect to host
 listafirmelor.com: could not connect to host
 listage.ovh: did not receive HSTS header
 litespeed.io: could not connect to host
@@ -5866,16 +5890,17 @@ lookout.com: did not receive HSTS header
 looktothestars.org: did not receive HSTS header
 lookupclose.com: did not receive HSTS header
 lookzook.com: did not receive HSTS header
 loongsg.xyz: could not connect to host
 loopstart.org: could not connect to host
 loqyu.co: max-age too low: 2592000
 lordjevington.co.uk: could not connect to host
 lost.host: did not receive HSTS header
+lostandcash.com: did not receive HSTS header
 lostg.com: did not receive HSTS header
 lostinsecurity.com: could not connect to host
 lostinweb.eu: could not connect to host
 lothai.re: did not receive HSTS header
 lothuytinhsi.com: could not connect to host
 lotos-ag.ch: did not receive HSTS header
 lotsencafe.de: did not receive HSTS header
 lotuscloud.org: could not connect to host
@@ -5910,16 +5935,17 @@ lukeng.me: could not connect to host
 lukonet.com: did not receive HSTS header
 luludapomerania.com: could not connect to host
 lumd.me: could not connect to host
 lumi.do: did not receive HSTS header
 lumi.pw: could not connect to host
 lunarift.com: could not connect to host
 lunarlog.com: could not connect to host
 lunarrift.net: could not connect to host
+lunasqu.ee: did not receive HSTS header
 luneta.nearbuysystems.com: could not connect to host
 luno.io: could not connect to host
 luody.info: could not connect to host
 luoe.ml: could not connect to host
 luoxiao.im: could not connect to host
 luripump.se: could not connect to host
 lusis.fr: did not receive HSTS header
 lusis.net: did not receive HSTS header
@@ -5952,17 +5978,17 @@ macchedil.com: did not receive HSTS head
 macdj.tk: could not connect to host
 macedopesca.com.br: did not receive HSTS header
 macgeneral.de: did not receive HSTS header
 macsandcheesedreams.com: could not connect to host
 madars.org: did not receive HSTS header
 maddin.ga: could not connect to host
 madebyfalcon.co.uk: did not receive HSTS header
 madebymagnitude.com: did not receive HSTS header
-madeinorder.com: did not receive HSTS header
+madeinorder.com: could not connect to host
 mademoiselle-emma.be: did not receive HSTS header
 mademoiselle-emma.fr: did not receive HSTS header
 maderwin.com: did not receive HSTS header
 madesoftware.com.br: did not receive HSTS header
 mafamane.com: could not connect to host
 mafiareturns.com: max-age too low: 2592000
 magenx.com: did not receive HSTS header
 magia360.com: did not receive HSTS header
@@ -6022,17 +6048,17 @@ manitasicily.com: did not receive HSTS h
 manningbrothers.com: did not receive HSTS header
 manns-solutions.com: did not receive HSTS header
 mansfieldplacevt.com: did not receive HSTS header
 manshop24.com: could not connect to host
 mansion-note.com: did not receive HSTS header
 manududu.com.br: did not receive HSTS header
 maomaofuli.vip: could not connect to host
 maple5.com: did not receive HSTS header
-mapresidentielle.fr: could not connect to host
+mapresidentielle.fr: did not receive HSTS header
 marcelparra.com: could not connect to host
 marchagen.nl: did not receive HSTS header
 marco01809.net: could not connect to host
 marcoececilia.it: did not receive HSTS header
 marcofinke.de: could not connect to host
 marcontrol.com: did not receive HSTS header
 marcosteixeira.tk: could not connect to host
 marcschlagenhauf.de: could not connect to host
@@ -6064,16 +6090,17 @@ marshut.net: could not connect to host
 martensson.io: did not receive HSTS header
 martialc.be: could not connect to host
 martiert.com: could not connect to host
 martijnvhoof.nl: could not connect to host
 martinec.co.uk: could not connect to host
 martinestyle.com: could not connect to host
 martineve.com: did not receive HSTS header
 martinp.no: could not connect to host
+martinreed.net: did not receive HSTS header
 martinrogalla.com: did not receive HSTS header
 marumagic.com: did not receive HSTS header
 marykshoup.com: did not receive HSTS header
 masa-yoga.com: did not receive HSTS header
 masa.li: could not connect to host
 mashnew.com: could not connect to host
 masjidtawheed.net: did not receive HSTS header
 maskt.pw: could not connect to host
@@ -6133,32 +6160,30 @@ mcdonalds.ru: did not receive HSTS heade
 mcga.media: could not connect to host
 mclab.su: could not connect to host
 mclist.it: could not connect to host
 mclyr.com: did not receive HSTS header
 mcmillansedationdentistry.com: did not receive HSTS header
 mcooperlaw.com: did not receive HSTS header
 mcuexchange.com: did not receive HSTS header
 mdfnet.se: did not receive HSTS header
-mdkr.nl: did not receive HSTS header
 mdscomp.net: did not receive HSTS header
 meadowfen.farm: could not connect to host
 meadowfenfarm.com: could not connect to host
 meamod.com: max-age too low: 0
 meat-education.com: could not connect to host
 mebio.us: could not connect to host
 mecenat-cassous.com: did not receive HSTS header
 mechmk1.me: did not receive HSTS header
 medallia.io: could not connect to host
 mediacru.sh: could not connect to host
 mediafinancelab.org: did not receive HSTS header
 mediamag.am: max-age too low: 0
 mediastorm.us: could not connect to host
 mediawikicn.org: could not connect to host
-medicalcountermeasures.gov: did not receive HSTS header
 medienservice-fritz.de: did not receive HSTS header
 medirich.co: could not connect to host
 meditek-dv.ru: did not receive HSTS header
 mediterenopmaandag.nl: did not receive HSTS header
 medm-test.com: could not connect to host
 medzinenews.com: did not receive HSTS header
 meedoennoordkop.nl: did not receive HSTS header
 meedoenzaanstad.nl: did not receive HSTS header
@@ -6300,16 +6325,17 @@ minecraftvoter.com: could not connect to
 mineover.es: could not connect to host
 mingo.nl: max-age too low: 2592000
 minh.at: could not connect to host
 mini-piraten.de: did not receive HSTS header
 minikneet.nl: could not connect to host
 minimaliston.com: did not receive HSTS header
 minimoo.se: could not connect to host
 minis-hip.de: max-age too low: 172800
+minkondom.nu: did not receive HSTS header
 minnesotadata.com: could not connect to host
 minora.io: could not connect to host
 minoris.se: could not connect to host
 mintea-noua.ro: did not receive HSTS header
 miragrow.com: could not connect to host
 mirindadomo.ru: did not receive HSTS header
 mironized.com: did not receive HSTS header
 mirrorx.com: did not receive HSTS header
@@ -6366,17 +6392,17 @@ modemagazines.co.uk: could not connect t
 moderatortv.de: did not receive HSTS header
 modx.by: max-age too low: 31536
 modx.io: did not receive HSTS header
 modydev.club: could not connect to host
 moe4sale.in: did not receive HSTS header
 moebel-nagel.de: did not receive HSTS header
 moegirl.org: did not receive HSTS header
 moellers.it: could not connect to host
-moeloli.pw: could not connect to host
+moeloli.pw: did not receive HSTS header
 moelord.org: could not connect to host
 moen.io: could not connect to host
 moevenpick-cafe.com: did not receive HSTS header
 mogry.net: did not receive HSTS header
 moho.kr: could not connect to host
 mohs.es: could not connect to host
 moitur.com: could not connect to host
 mojizuri.jp: max-age too low: 86400
@@ -6398,20 +6424,21 @@ moneromerchant.com: could not connect to
 moneycrownmedia.com: could not connect to host
 monika-sokol.de: did not receive HSTS header
 monitaure.io: could not connect to host
 monitman.com: did not receive HSTS header
 monsieurbureau.com: did not receive HSTS header
 montanacures.org: could not connect to host
 montanwerk.de: did not receive HSTS header
 montonicms.com: could not connect to host
+moobo.xyz: did not receive HSTS header
 moon.lc: could not connect to host
 moonless.net: could not connect to host
 moonloupe.com: could not connect to host
-moosemanstudios.com: could not connect to host
+moosemanstudios.com: did not receive HSTS header
 moov.is: could not connect to host
 moparisthebest.biz: could not connect to host
 moparisthebest.info: could not connect to host
 moparscape.org: did not receive HSTS header
 mopsuite.club: could not connect to host
 mor.cloud: could not connect to host
 mor.gl: could not connect to host
 morethanadream.lv: could not connect to host
@@ -6517,16 +6544,17 @@ mydriversedge.com: did not receive HSTS 
 myfdic.gov: could not connect to host
 mygate.at: could not connect to host
 mygivingcircle.org: did not receive HSTS header
 mygooder.com: did not receive HSTS header
 mygov.scot: did not receive HSTS header
 myhair.asia: did not receive HSTS header
 myiocc.org: could not connect to host
 myip.tech: max-age too low: 2592000
+myjumpsuit.de: did not receive HSTS header
 mykolab.com: did not receive HSTS header
 mykreuzfahrt.de: could not connect to host
 mymp3singer.site: did not receive HSTS header
 mynetblog.com: did not receive HSTS header
 mynewselfbariatrics.com: did not receive HSTS header
 myni.io: could not connect to host
 mynigma.org: did not receive HSTS header
 mypagella.com: could not connect to host
@@ -6729,16 +6757,17 @@ nodi.at: did not receive HSTS header
 noexpect.org: could not connect to host
 noima.com: did not receive HSTS header
 nolag.host: did not receive HSTS header
 nolberg.net: did not receive HSTS header
 nolimitsbook.de: did not receive HSTS header
 nolte.work: could not connect to host
 nomorebytes.de: could not connect to host
 noodlesandwich.com: did not receive HSTS header
+nootropicsource.com: did not receive HSTS header
 nope.website: could not connect to host
 nopex.no: could not connect to host
 nopol.de: could not connect to host
 norandom.com: could not connect to host
 norb.at: could not connect to host
 nordlicht.photography: did not receive HSTS header
 norge.guide: could not connect to host
 northcutt.com: did not receive HSTS header
@@ -6822,17 +6851,16 @@ nz.search.yahoo.com: max-age too low: 17
 nzbs.io: could not connect to host
 nzquakes.maori.nz: could not connect to host
 o-rickroll-y.pw: could not connect to host
 o0o.one: could not connect to host
 oasis.mobi: could not connect to host
 oben.pl: did not receive HSTS header
 obscuredfiles.com: could not connect to host
 obsydian.org: could not connect to host
-occentus.net: did not receive HSTS header
 occupymedia.org: did not receive HSTS header
 ochaken.cf: could not connect to host
 ocrami.us: did not receive HSTS header
 ocsr.nl: did not receive HSTS header
 octocat.ninja: could not connect to host
 oddmouse.com: could not connect to host
 odin.xxx: could not connect to host
 odinkapital.no: did not receive HSTS header
@@ -7164,17 +7192,16 @@ personaldatabasen.no: could not connect 
 personalinjurylist.com: did not receive HSTS header
 personalizedtouch.co: could not connect to host
 perthdevicelab.com: did not receive HSTS header
 pestalozzishop.com.br: could not connect to host
 pet-nsk.ru: could not connect to host
 petbooking.it: did not receive HSTS header
 petchart.net: could not connect to host
 peterkshultz.com: did not receive HSTS header
-peterlew.is: did not receive HSTS header
 petersmark.com: did not receive HSTS header
 pethub.com: did not receive HSTS header
 petit.site: could not connect to host
 petplum.com: could not connect to host
 petravdbos.nl: did not receive HSTS header
 petrkrapek.cz: did not receive HSTS header
 petrolplus.ru: max-age too low: 7776000
 petrovsky.pro: could not connect to host
@@ -7296,16 +7323,17 @@ pocketsix.com: could not connect to host
 pocloud.homelinux.net: could not connect to host
 podiumsdiskussion.org: did not receive HSTS header
 poiema.com.sg: did not receive HSTS header
 poinsot.beer: could not connect to host
 pointeringles.com: could not connect to host
 pointiswunderland.de: could not connect to host
 pointpro.de: did not receive HSTS header
 pokeduel.me: did not receive HSTS header
+pokomichi.com: did not receive HSTS header
 pol.in.th: could not connect to host
 polarityschule.com: did not receive HSTS header
 pole.net.nz: could not connect to host
 polen.guide: could not connect to host
 policeiwitness.sg: could not connect to host
 polimat.org: could not connect to host
 politically-incorrect.xyz: could not connect to host
 politiewervingshop.nl: did not receive HSTS header
@@ -7327,17 +7355,16 @@ popkins.ml: could not connect to host
 poris.web.id: could not connect to host
 porno-gif.ru: did not receive HSTS header
 pornstars.me: did not receive HSTS header
 portalm.tk: could not connect to host
 portalplatform.net: could not connect to host
 portaluniversalista.org: could not connect to host
 portalzine.de: did not receive HSTS header
 poshpak.com: max-age too low: 86400
-postback.io: did not receive HSTS header
 postcodewise.co.uk: did not receive HSTS header
 posterspy.com: did not receive HSTS header
 postscheduler.org: could not connect to host
 posylka.de: did not receive HSTS header
 potatoheads.net: could not connect to host
 potbar.com: could not connect to host
 potlytics.com: could not connect to host
 potsky.com: did not receive HSTS header
@@ -7457,16 +7484,17 @@ publications.qld.gov.au: did not receive
 publicidadnovagrass.com.mx: did not receive HSTS header
 publicspeakingcamps.com: could not connect to host
 puentes.info: did not receive HSTS header
 pugliese.fr: could not connect to host
 puiterwijk.org: could not connect to host
 pulsar.guru: did not receive HSTS header
 pult.co: could not connect to host
 pumpgames.net: could not connect to host
+punchkickinteractive.com: did not receive HSTS header
 punchr-kamikazee.rhcloud.com: did not receive HSTS header
 puppydns.com: did not receive HSTS header
 purewebmasters.com: could not connect to host
 purplebricks.com: did not receive HSTS header
 purplemoon.mobi: did not receive HSTS header
 purplestar.mobi: did not receive HSTS header
 purpoz.com.br: could not connect to host
 push.world: did not receive HSTS header
@@ -7559,17 +7587,17 @@ ranegroup.hosting: could not connect to 
 rankthespot.com: could not connect to host
 ranktopay.com: did not receive HSTS header
 rannseier.org: did not receive HSTS header
 rany.duckdns.org: could not connect to host
 rany.io: could not connect to host
 rany.pw: could not connect to host
 rapidresearch.me: could not connect to host
 rapidthunder.io: could not connect to host
-rasing.me: did not receive HSTS header
+rasing.me: could not connect to host
 rastreador.com.es: did not receive HSTS header
 ratajczak.fr: could not connect to host
 rate-esport.de: could not connect to host
 rationem.nl: did not receive HSTS header
 ratuseks.com: could not connect to host
 ratuseks.net: could not connect to host
 ratuseks.us: could not connect to host
 rauchenwald.net: did not receive HSTS header
@@ -7662,17 +7690,17 @@ rememberthis.co.za: could not connect to
 remitatm.com: could not connect to host
 remodela.com.ve: could not connect to host
 remonttitekniikka.fi: could not connect to host
 remoteham.com: could not connect to host
 remotestance.com: did not receive HSTS header
 rencaijia.com: did not receive HSTS header
 rengarenkblog.com: could not connect to host
 renideo.fr: could not connect to host
-renkhosting.com: could not connect to host
+renkhosting.com: did not receive HSTS header
 renlong.org: did not receive HSTS header
 renrenss.com: could not connect to host
 renscreations.com: did not receive HSTS header
 rentacarcluj.xyz: did not receive HSTS header
 rentbrowsertrain.me: could not connect to host
 rentcarassist.com: could not connect to host
 renteater.com: could not connect to host
 rentex.com: did not receive HSTS header
@@ -7705,17 +7733,16 @@ revello.org: did not receive HSTS header
 reverie.pw: could not connect to host
 review.info: did not receive HSTS header
 reviewbestseller.com: did not receive HSTS header
 reviewjust.com: did not receive HSTS header
 reviews.anime.my: max-age too low: 5184000
 revtut.net: could not connect to host
 rewardstock.com: max-age too low: 0
 rewopit.net: did not receive HSTS header
-rgavmf.ru: did not receive HSTS header
 rhapsodhy.hu: could not connect to host
 rhdigital.pro: could not connect to host
 rhering.de: could not connect to host
 rhodosdreef.nl: could not connect to host
 riaucybersolution.net: did not receive HSTS header
 richiemail.net: could not connect to host
 richmondsunlight.com: did not receive HSTS header
 richmtdriver.com: could not connect to host
@@ -7734,17 +7761,16 @@ rigolitch.fr: did not receive HSTS heade
 riiconnect24.net: max-age too low: 0
 rijndael.xyz: could not connect to host
 rijnmondeg.nl: did not receive HSTS header
 rika.me: could not connect to host
 ring0.xyz: did not receive HSTS header
 ringh.am: could not connect to host
 rionewyork.com.br: could not connect to host
 ripa.io: did not receive HSTS header
-ripple.com: did not receive HSTS header
 rippleunion.com: could not connect to host
 riskmgt.com.au: could not connect to host
 rithm.ch: could not connect to host
 rivlo.com: could not connect to host
 rizon.me: could not connect to host
 rj.gg: could not connect to host
 rk6.cz: could not connect to host
 rkkhok.hu: did not receive HSTS header
@@ -7848,17 +7874,16 @@ ryansmithphotography.com: did not receiv
 ryanteck.uk: did not receive HSTS header
 rylin.net: did not receive HSTS header
 ryssland.guide: could not connect to host
 s-d-v.ch: could not connect to host
 s-rickroll-p.pw: could not connect to host
 s.how: could not connect to host
 s1mplescripts.de: did not receive HSTS header
 saabwa.org: did not receive HSTS header
-sabrinajoiasprontaentrega.com.br: did not receive HSTS header
 sadsu.com: did not receive HSTS header
 safeex.com: did not receive HSTS header
 safelist.eu: did not receive HSTS header
 safematix.com: could not connect to host
 safemovescheme.co.uk: could not connect to host
 safersurfing.eu: did not receive HSTS header
 safewings-nh.nl: could not connect to host
 safing.me: did not receive HSTS header
@@ -7891,17 +7916,17 @@ sanasalud.org: could not connect to host
 sanatfilan.com: did not receive HSTS header
 sandviks.com: did not receive HSTS header
 sanguoxiu.com: could not connect to host
 sanhei.ch: did not receive HSTS header
 sanissimo.com.mx: max-age too low: 86400
 sansage.com.br: could not connect to host
 sansdev.com: could not connect to host
 sansemea.com: did not receive HSTS header
-santing.net: did not receive HSTS header
+santing.net: could not connect to host
 santouri.be: could not connect to host
 saotn.org: did not receive HSTS header
 sapk.fr: did not receive HSTS header
 sarah-beckett-harpist.com: did not receive HSTS header
 sarahsweetlife.com: could not connect to host
 sarahsweger.com: could not connect to host
 sarakas.com: could not connect to host
 saraleebread.com: max-age too low: 86400
@@ -7977,17 +8002,17 @@ scrambler.in: could not connect to host
 scrapings.net: could not connect to host
 screencaster.io: did not receive HSTS header
 screenresolution.space: could not connect to host
 screensaversplanet.com: did not receive HSTS header
 scribbleserver.com: could not connect to host
 scribe.systems: could not connect to host
 scrion.com: could not connect to host
 script.google.com: did not receive HSTS header (error ignored - included regardless)
-scriptenforcer.net: could not connect to host
+scriptenforcer.net: did not receive HSTS header
 scriptict.nl: could not connect to host
 scrollstory.com: did not receive HSTS header
 sdhmanagementgroup.com: could not connect to host
 sdia.ru: could not connect to host
 sdmoscow.ru: could not connect to host
 sdrobs.com: did not receive HSTS header
 sdsl-speedtest.de: could not connect to host
 se7ensins.com: did not receive HSTS header
@@ -8077,17 +8102,16 @@ serbien.guide: could not connect to host
 serenitycreams.com: did not receive HSTS header
 serfdom.io: did not receive HSTS header
 serized.pw: could not connect to host
 serverangels.co.uk: did not receive HSTS header
 servercode.ca: did not receive HSTS header
 serverdensity.io: did not receive HSTS header
 servergno.me: did not receive HSTS header
 servermonkey.nl: could not connect to host
-serversftw.com: did not receive HSTS header
 servicevie.com: did not receive HSTS header
 servious.org: could not connect to host
 servu.de: did not receive HSTS header
 seryo.moe: could not connect to host
 seryo.net: could not connect to host
 sessionslogning.dk: could not connect to host
 setphaserstostun.org: could not connect to host
 setuid.de: could not connect to host
@@ -8203,17 +8227,16 @@ simongong.net: did not receive HSTS head
 simonsaxon.com: did not receive HSTS header
 simpan.id: did not receive HSTS header
 simpleai.net: max-age too low: 600
 simplelearner.com: could not connect to host
 simplepractice.com: did not receive HSTS header
 simplexsupport.com: did not receive HSTS header
 simplixos.org: could not connect to host
 simplyenak.com: did not receive HSTS header
-simtin-net.de: did not receive HSTS header
 simyo.nl: did not receive HSTS header
 sin30.net: could not connect to host
 sincai666.com: could not connect to host
 sincron.org: could not connect to host
 sinful.pw: could not connect to host
 singul4rity.com: could not connect to host
 sinneserweiterung.de: could not connect to host
 sinosky.org: did not receive HSTS header
@@ -8507,16 +8530,17 @@ stn.me.uk: did not receive HSTS header
 stockseyeserum.com: could not connect to host
 stocktrade.de: could not connect to host
 stoffe-monster.de: did not receive HSTS header
 stoick.me: could not connect to host
 stole-my.bike: could not connect to host
 stole-my.tv: could not connect to host
 stolkschepen.nl: did not receive HSTS header
 stonecutterscommunity.com: could not connect to host
+stopbreakupnow.org: did not receive HSTS header
 stopwoodfin.org: could not connect to host
 storbritannien.guide: could not connect to host
 storecove.com: did not receive HSTS header
 storeden.com: did not receive HSTS header
 storefrontify.com: did not receive HSTS header
 storiesofhealth.org: could not connect to host
 storillo.com: did not receive HSTS header
 stormhub.org: could not connect to host
@@ -8741,17 +8765,17 @@ techloaner.com: could not connect to hos
 techmasters.andover.edu: could not connect to host
 techmatehq.com: could not connect to host
 technogroup.cz: did not receive HSTS header
 technosavvyport.com: did not receive HSTS header
 technotonic.com.au: did not receive HSTS header
 techpointed.com: could not connect to host
 techproud.com: did not receive HSTS header
 techreview.link: could not connect to host
-techtoy.store: could not connect to host
+techtoy.store: did not receive HSTS header
 techtraveller.com.au: did not receive HSTS header
 tecnimotos.com: did not receive HSTS header
 tecnogaming.com: did not receive HSTS header
 tecture.de: did not receive HSTS header
 tedovo.com: did not receive HSTS header
 tedxkmitl.com: could not connect to host
 tefl.io: could not connect to host
 tegelsensanitaironline.nl: did not receive HSTS header
@@ -8958,16 +8982,17 @@ timnash.co.uk: did not receive HSTS head
 timotrans.de: did not receive HSTS header
 timotrans.eu: did not receive HSTS header
 timowi.de: could not connect to host
 timowi.net: could not connect to host
 timschubert.net: max-age too low: 172800
 timwittenberg.com: could not connect to host
 tinchbear.xyz: could not connect to host
 tindewen.net: could not connect to host
+tintenprofi.de: max-age too low: 6307200
 tipsyk.ru: could not connect to host
 tiredofeating.com: could not connect to host
 tiremoni.ch: did not receive HSTS header
 tirex.media: did not receive HSTS header
 titanlab.de: could not connect to host
 titanleaf.com: could not connect to host
 titouan.co: did not receive HSTS header
 tittarpuls.se: could not connect to host
@@ -9314,17 +9339,17 @@ ur-lauber.de: did not receive HSTS heade
 urandom.eu.org: did not receive HSTS header
 urban-garden.lt: could not connect to host
 urban-garden.lv: could not connect to host
 urbpic.com: could not connect to host
 urlchomp.com: did not receive HSTS header
 urphp.com: could not connect to host
 us-immigration.com: did not receive HSTS header
 usaab.org: did not receive HSTS header
-usbirthcertificate.com: did not receive HSTS header
+usbirthcertificate.com: could not connect to host
 usbtypeccompliant.com: could not connect to host
 uscitizenship.info: did not receive HSTS header
 uscntalk.com: could not connect to host
 uscurrency.gov: did not receive HSTS header
 used-in.jp: could not connect to host
 user-new.com: did not receive HSTS header
 usercare.com: did not receive HSTS header
 userify.com: max-age too low: 0
@@ -9378,17 +9403,16 @@ vamoaeturismo.com.br: could not connect 
 vampirism.eu: could not connect to host
 vanacht.co.za: did not receive HSTS header
 vanajahosting.com: did not receive HSTS header
 vanderkley.it: could not connect to host
 vanestack.com: could not connect to host
 vanitas.xyz: could not connect to host
 vanitynailworkz.com: could not connect to host
 vansieleghem.com: could not connect to host
-vapordepot.jp: did not receive HSTS header
 vasa-webstranka.sk: did not receive HSTS header
 vasanth.org: could not connect to host
 vbest.net: could not connect to host
 vbhelp.org: could not connect to host
 vbulletin-russia.com: could not connect to host
 vbulletinrussia.com: could not connect to host
 vcdove.com: could not connect to host
 vcr.re: could not connect to host
@@ -9427,17 +9451,16 @@ vh.net: could not connect to host
 vhost.co.id: could not connect to host
 viabemestar.com.br: could not connect to host
 viadeux.com: could not connect to host
 viasinc.com: did not receive HSTS header
 vicianovi.cz: could not connect to host
 victorenxovais.com.br: could not connect to host
 victoriapemberton.com: did not receive HSTS header
 vid.me: did not receive HSTS header
-vida-it.com: did not receive HSTS header
 vidbuchanan.co.uk: did not receive HSTS header
 viddiaz.com: did not receive HSTS header
 videomail.io: did not receive HSTS header
 videomuz.com: could not connect to host
 videotogel.net: did not receive HSTS header
 videoueberwachung-set.de: did not receive HSTS header
 vider.ga: could not connect to host
 vidid.net: did not receive HSTS header
@@ -9582,17 +9605,16 @@ warrencreative.com: did not receive HSTS
 warsentech.com: could not connect to host
 warsh.moe: did not receive HSTS header
 warumsuchen.at: max-age too low: 0
 watchium.com: did not receive HSTS header
 waterforlife.net.au: did not receive HSTS header
 waterpoint.com.br: could not connect to host
 watersportmarkt.net: did not receive HSTS header
 watsonhall.uk: could not connect to host
-wattechweb.com: did not receive HSTS header
 wave.is: could not connect to host
 wavefloatrooms.com: did not receive HSTS header
 wavefrontsystemstech.com: could not connect to host
 wear2work.nl: did not receive HSTS header
 weaverhairextensions.nl: could not connect to host
 web-industry.fr: could not connect to host
 web-insider.net: could not connect to host
 web-vision.de: did not receive HSTS header
@@ -9601,17 +9623,16 @@ web4pro.fr: could not connect to host
 webandwords.com.au: could not connect to host
 webanker.sh: did not receive HSTS header
 webapps.directory: could not connect to host
 webassadors.com: could not connect to host
 webbx.se: max-age too low: 2592000
 webchat.domains: did not receive HSTS header
 webdeflect.com: did not receive HSTS header
 webdesign-kronberg.de: did not receive HSTS header
-webdesignssussex.co.uk: did not receive HSTS header
 webdev.mobi: could not connect to host
 webeconomia.it: did not receive HSTS header
 webelement.sk: did not receive HSTS header
 weberjulia.com: could not connect to host
 webfronten.dk: did not receive HSTS header
 webhosting4.net: did not receive HSTS header
 webhostingpros.ml: could not connect to host
 webies.ro: did not receive HSTS header
@@ -9649,17 +9670,17 @@ wellness.so: could not connect to host
 wellproducedwines.com: did not receive HSTS header
 welpy.com: could not connect to host
 weltentreff.com: could not connect to host
 weltmeisterschaft.net: could not connect to host
 weme.eu: could not connect to host
 wendalyncheng.com: did not receive HSTS header
 wenz.io: did not receive HSTS header
 werdeeintimo.de: did not receive HSTS header
-werkenbijkfc.nl: did not receive HSTS header
+werkenbijkfc.nl: could not connect to host
 werkplaatsoost.nl: did not receive HSTS header
 werkruimtebottendaal.nl: could not connect to host
 wesleyharris.ca: did not receive HSTS header
 westendzone.com: max-age too low: 0
 westerhoud.nl: did not receive HSTS header
 westlinwinds.com: did not receive HSTS header
 westsussexconnecttosupport.org: could not connect to host
 wetoxic.com: did not receive HSTS header
@@ -9807,17 +9828,17 @@ www-1117.com: could not connect to host
 www-39988.com: did not receive HSTS header
 www-507.net: could not connect to host
 www-746.com: could not connect to host
 www-771122.com: did not receive HSTS header
 www-8003.com: did not receive HSTS header
 www-88599.com: did not receive HSTS header
 www-9995.com: did not receive HSTS header
 www-djbet.com: did not receive HSTS header
-www-jinshavip.com: did not receive HSTS header
+www-jinshavip.com: could not connect to host
 www.cueup.com: could not connect to host
 www.cyveillance.com: did not receive HSTS header
 www.developer.mydigipass.com: could not connect to host
 www.elanex.biz: did not receive HSTS header
 www.gamesdepartment.co.uk: did not receive HSTS header
 www.gmail.com: did not receive HSTS header (error ignored - included regardless)
 www.googlemail.com: did not receive HSTS header (error ignored - included regardless)
 www.gpo.gov: did not receive HSTS header
@@ -9904,16 +9925,17 @@ xn--lgb3a8bcpn.cf: could not connect to 
 xn--lgb3a8bcpn.ga: could not connect to host
 xn--lgb3a8bcpn.gq: could not connect to host
 xn--lgb3a8bcpn.ml: could not connect to host
 xn--ls8hi7a.tk: could not connect to host
 xn--milchaufschumer-test-lzb.de: could not connect to host
 xn--neb-tma3u8u.xyz: could not connect to host
 xn--pck4e3a2ex597b4ml.xyz: did not receive HSTS header
 xn--qckqc0nxbyc4cdb4527err7c.biz: did not receive HSTS header
+xn--wmq.jp: did not receive HSTS header
 xn--xdtx3pfzbiw3ar8e7yedqrhui.com: could not connect to host
 xn--yoamomisuasbcn-ynb.com: could not connect to host
 xn--zck9a4b352yuua.jp: did not receive HSTS header
 xobox.me: could not connect to host
 xoda.pw: did not receive HSTS header
 xoffy.com: did not receive HSTS header
 xom.party: could not connect to host
 xombra.com: did not receive HSTS header
@@ -9978,16 +10000,17 @@ yohanesmario.com: did not receive HSTS h
 yoiyado.info: did not receive HSTS header
 yokeepo.com: max-age too low: 0
 yoloboatrentals.com: did not receive HSTS header
 yoloprod.fr: could not connect to host
 yoloseo.com: could not connect to host
 yomepre.com: could not connect to host
 yopers.com: did not receive HSTS header
 yoru.me: did not receive HSTS header
+youcaitian.com: did not receive HSTS header
 youcontrol.ru: could not connect to host
 youfencun.com: did not receive HSTS header
 youlog.net: could not connect to host
 youngandunited.nl: did not receive HSTS header
 youon.tokyo: could not connect to host
 yourbapp.ch: could not connect to host
 yourcomputer.expert: did not receive HSTS header
 yourgame.co.il: did not receive HSTS header
--- a/security/manager/ssl/nsSTSPreloadList.inc
+++ b/security/manager/ssl/nsSTSPreloadList.inc
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*****************************************************************************/
 /* This is an automatically generated file. If you're not                    */
 /* nsSiteSecurityService.cpp, you shouldn't be #including it.     */
 /*****************************************************************************/
 
 #include <stdint.h>
-const PRTime gPreloadListExpirationTime = INT64_C(1524594783507000);
+const PRTime gPreloadListExpirationTime = INT64_C(1524681233383000);
 %%
 0-1.party, 1
 0.me.uk, 1
 0005pay.com, 1
 0010100.net, 1
 00220022.net, 1
 007-preisvergleich.de, 1
 00881919.com, 1
@@ -1690,16 +1690,17 @@ anetaben.nl, 1
 anextraordinaryday.net, 1
 anfenglish.com, 1
 angel-body.com, 1
 angelic47.com, 1
 angelinahair.com, 1
 angeloventuri.com, 1
 anginf.de, 1
 anglertanke.de, 1
+anglesya.win, 1
 anglictina-sojcak.cz, 1
 anglictinasojcak.cz, 1
 anglingactive.co.uk, 1
 angrapa.ru, 1
 angristan.fr, 1
 angrut.com, 1
 angry.im, 1
 angrydragonproductions.com, 1
@@ -1721,16 +1722,17 @@ animationsmusicales.ch, 1
 anime-culture.com, 1
 anime.my, 0
 anime1.me, 1
 anime1.moe, 1
 anime1.pw, 1
 anime1.top, 1
 animeai.com, 1
 animefluxxx.com, 1
+animesharp.com, 1
 animorphsfanforum.com, 1
 anipassion.com, 1
 anita-mukorom.hu, 1
 anitaalbersen.nl, 1
 anitube-nocookie.ch, 1
 anitube.ch, 1
 anivar.net, 1
 ankarakart.com.tr, 1
@@ -2461,16 +2463,17 @@ augenblicke-blog.de, 1
 augiero.it, 1
 augmentable.de, 1
 august.black, 1
 augustian-life.cz, 1
 augustiner-kantorei-erfurt.de, 1
 augustiner-kantorei.de, 1
 aukaraoke.su, 1
 aulaschrank.gq, 1
+aulo.in, 0
 aunali1.com, 1
 auntie-eileens.com.au, 1
 auplidespages.fr, 1
 aur.rocks, 1
 aureus.pw, 1
 auri.ga, 1
 auricblue.com, 1
 auriko-games.de, 1
@@ -2958,17 +2961,17 @@ bayrisch-fuer-anfaenger.de, 1
 baywatch.io, 1
 bazaarcompass.com, 1
 bazdell.com, 0
 bazos.at, 1
 bazos.cz, 1
 bazos.sk, 1
 bazziergraphik.com, 1
 bb37roma.it, 1
-bbb1991.me, 1
+bbb1991.me, 0
 bbcastles.com, 1
 bbdos.ru, 1
 bbgeschenke.ch, 1
 bbimarketing.com, 1
 bbka.org.uk, 1
 bbkworldwide.jp, 1
 bblove.me, 1
 bblsa.ch, 1
@@ -3776,16 +3779,17 @@ block-this.com, 1
 block65.com, 1
 blockchain.info, 1
 blockchaindaigakko.jp, 1
 blockified.io, 1
 blockmetry.com, 1
 blockstream.com, 1
 blockxit.de, 1
 bloemendal.me, 1
+blog-grupom2.es, 1
 blog.gov.uk, 1
 blog.gparent.org, 1
 blog.linode.com, 0
 blog.lookout.com, 0
 blogabout.ru, 1
 blogaid.net, 1
 blogarts.net, 1
 blogbooker.com, 1
@@ -3937,17 +3941,17 @@ bonbonmania.com, 1
 bondagefetishstore.com, 1
 bondarenko.dn.ua, 1
 bondoer.fr, 1
 bondpro.gov, 1
 bondskampeerder.nl, 1
 bonesserver.com, 1
 bonfi.net, 1
 bonifacius.be, 1
-bonigo.de, 0
+bonigo.de, 1
 bonita.com.br, 1
 bonnant-associes.ch, 1
 bonnant-partners.ch, 1
 bonnebouffe.fr, 1
 bonnieradvocaten.nl, 1
 bonnin.fr, 1
 bonnsustainabilityportal.de, 1
 bonnyprints.at, 1
@@ -4349,16 +4353,17 @@ brie.tech, 1
 briefhansa.de, 1
 brighouse-leisure.co.uk, 1
 brightday.bz, 1
 brightfuturemadebyme.com, 1
 brightonbank.com, 1
 brightonbouncycastles.net, 1
 brightonchilli.org.uk, 1
 brightstarkids.co.uk, 0
+brightstarkids.com.au, 0
 brightstarkids.net, 0
 brightstarkids.sg, 0
 brigidaarie.com, 1
 brilliantbouncyfun.co.uk, 1
 brilliantdecisionmaking.com, 1
 brilliantproductions.co.nz, 1
 brinkhu.is, 1
 brinkmann.one, 1
@@ -4621,16 +4626,17 @@ buyessayscheap.com, 1
 buyharpoon.com, 1
 buyinginvestmentproperty.com, 1
 buyingsellingflorida.com, 1
 buymindhack.com, 1
 buypapercheap.net, 1
 buyseo.store, 1
 buyshoe.org, 1
 buytheway.co.za, 1
+buzz.tools, 1
 buzzconf.io, 1
 buzzdeck.com, 1
 buzzprint.it, 1
 bvalle.com, 1
 bvexplained.co.uk, 1
 bvionline.eu, 1
 bvl.aero, 1
 bvv-europe.eu, 1
@@ -5634,17 +5640,16 @@ chromiumcodereview.appspot.com, 0
 chronic101.xyz, 1
 chroniclesofgeorge.com, 1
 chronogram.me, 1
 chronology.no, 1
 chronoproject.com, 1
 chronoshop.cz, 1
 chrpaul.de, 1
 chrstn.eu, 1
-chs.us, 1
 chsh.moe, 1
 chsterz.de, 1
 chua.family, 1
 chuchote-moi.fr, 1
 chuck.ovh, 1
 chun.pro, 1
 chunche.net, 1
 chunk.science, 1
@@ -5717,17 +5722,17 @@ cirfi.com, 1
 ciri.com.co, 1
 cirope.com, 1
 cirrohost.com, 1
 cirrus0.de, 1
 cirugiasplasticas.com.mx, 1
 cirujanooral.com, 1
 cirurgicagervasio.com.br, 1
 cirurgicalucena.com.br, 1
-ciscodude.net, 0
+ciscodude.net, 1
 cisoaid.com, 1
 ciss.ltd, 1
 cisy.me, 1
 citationgurus.com, 1
 citcuit.in, 1
 citimarinestore.com, 1
 citizen-cam.de, 1
 citizensbankal.com, 1
@@ -6025,17 +6030,16 @@ cocoamexico.com, 1
 cocodemy.com, 1
 coconutoil24.com, 1
 cocoscastles.co.uk, 1
 cocquyt-usedcars.be, 1
 coda.moe, 1
 coda.today, 1
 coda.world, 1
 code-golf.io, 1
-code-judge.tk, 1
 code-poets.co.uk, 1
 code-well.com, 1
 code.facebook.com, 0
 code.fm, 1
 code.google.com, 1
 code.taxi, 1
 code67.com, 1
 codebrahma.com, 0
@@ -7102,16 +7106,17 @@ danandrum.com, 1
 danarozmarin.com, 1
 danchen.org, 1
 dancingcubs.co.uk, 1
 dandenongroadapartments.com.au, 1
 dandymrsb.com, 1
 daneandthepain.com, 1
 dango.in, 1
 daniel-baumann.ch, 1
+daniel-du.com, 1
 daniel-kulbe.de, 1
 daniel-ruf.de, 1
 daniel-seifert.com, 1
 daniel-stahl.net, 1
 danielalvarez.net, 1
 danielas.boutique, 1
 danielehniss.de, 1
 danielepestilli.com, 1
@@ -7817,17 +7822,16 @@ diagnostix.org, 1
 diagonale-deco.fr, 1
 dialoegue.com, 1
 diamante.ro, 1
 diamondpkg.org, 1
 diamondyze.nl, 1
 diamorphine.com, 1
 diamsmedia.ch, 1
 dianefriedli.ch, 1
-diannaobos.com, 1
 dianurse.com, 1
 diare-na-miru.cz, 1
 diario-egipto.com, 1
 diasdasemana.com, 1
 diasp.cz, 1
 diasp.org, 1
 diasporadialogues.com, 1
 diavo.de, 1
@@ -7843,17 +7847,16 @@ dicionario.org, 1
 dicionariodegirias.com.br, 1
 dicionariodelatim.com.br, 1
 dicionariodenomesproprios.com.br, 1
 dicionariodesimbolos.com.br, 1
 dicionarioetimologico.com.br, 1
 dick.red, 1
 dickieslife.com, 1
 dickpics.ru, 1
-dicoding.com, 1
 didacte.com, 1
 didche.net, 1
 diddens.de, 1
 didierlaumen.be, 1
 didikhari.web.id, 1
 die-besten-weisheiten.de, 1
 die-blahuts.de, 1
 die-borts.ch, 1
@@ -7985,16 +7988,17 @@ dinube.com, 1
 diodeled.com, 1
 diodo.me, 1
 dionysus.se, 1
 dipl.io, 0
 dipling.de, 1
 dipulse.it, 1
 dir2epub.com, 1
 dir2epub.org, 1
+direct2uk.com, 1
 directebanking.com, 1
 directinsure.in, 1
 directlinkfunding.co.uk, 1
 directme.ga, 1
 directnews.be, 1
 directorioz.com, 1
 directreal.sk, 1
 directtwo.solutions, 1
@@ -8018,17 +8022,17 @@ discha.net, 1
 disciples.io, 1
 discipul.nl, 1
 disco-crazy-world.de, 1
 discofitta.com, 1
 disconformity.net, 1
 discord-chan.net, 1
 discordapp.com, 1
 discordghost.space, 1
-discotek.club, 1
+discotek.club, 0
 discount24.de, 1
 discountmania.eu, 1
 discountmetaux.fr, 1
 discountplush.com, 1
 discover-mercure.com, 1
 discoverhealthage.com, 0
 discoveringdocker.com, 1
 discoverrsv.com, 1
@@ -8642,17 +8646,16 @@ duriaux-dentiste.ch, 1
 durys.be, 1
 dusmomente.com, 1
 dustri.org, 1
 dustycloth.com, 1
 dustygroove.com, 1
 dustyspokesbnb.ca, 1
 dutch.desi, 1
 dutch1.nl, 1
-dutchessuganda.com, 1
 dutchrank.nl, 1
 dutchwanderers.nl, 1
 dutchweballiance.nl, 1
 dutyfreeonboard.com, 1
 duyao.de, 0
 dv189.com, 1
 dvbris.co.uk, 1
 dvbris.com, 1
@@ -9454,17 +9457,17 @@ epilis.gr, 1
 epiphyte.network, 1
 epistas.com, 1
 epistas.de, 1
 epitesz.co, 1
 epiteugma.com, 1
 epizentrum.work, 1
 epizentrum.works, 1
 epmcentroitalia.it, 1
-epoch.com, 0
+epoch.com, 1
 epolitiker.com, 1
 epos-distributor.co.uk, 1
 eposbirmingham.co.uk, 1
 eposbrighton.co.uk, 1
 eposbristol.co.uk, 1
 eposcardiff.co.uk, 1
 eposcloud.net, 1
 eposkent.co.uk, 1
@@ -9934,17 +9937,16 @@ explodie.org, 1
 explodingcamera.com, 1
 exploflex.com.br, 1
 exploit-db.com, 1
 exploit.cz, 0
 exploit.party, 1
 exploit.ph, 1
 exploited.cz, 1
 exploodo.rocks, 1
-exploravacations.in, 1
 expo-america.ru, 1
 expo-asia.ru, 1
 expo-europe.ru, 1
 expokohler.com, 1
 exponentialnews.net, 1
 exporta.cz, 1
 expoundite.net, 1
 expowerhps.com, 1
@@ -10106,16 +10108,17 @@ falcoz.co, 1
 faldoria.de, 1
 falkus.net, 1
 fallenangeldrinks.co.uk, 1
 fallenangeldrinks.com, 1
 fallenangeldrinks.eu, 1
 fallenangelspirits.co.uk, 1
 fallenangelspirits.com, 1
 fallenspirits.co.uk, 1
+fallofthecitadel.com, 1
 falsum.net, 1
 fam-kreibich.de, 1
 fam-stemmer.de, 1
 famcloud.de, 1
 famdouma.nl, 1
 fameng.nl, 1
 famer.me, 1
 fameuxhosting.co.uk, 1
@@ -11431,17 +11434,16 @@ gametium.com, 1
 gametium.es, 1
 gamhealth.net, 1
 gamingexodus.com, 1
 gamingrealms.net, 1
 gamingreinvented.com, 1
 gamingwithcromulent.com, 1
 gamingzoneservers.com, 1
 gamishou.fr, 1
-gamoice.com, 1
 gamoloco.com, 1
 ganado.org, 1
 gancedo.com.es, 1
 gandalfservice.com, 1
 gandalfthefeline.com, 1
 gandgliquors.com, 1
 ganhonet.com.br, 1
 ganztagplus.de, 1
@@ -11845,17 +11847,16 @@ gilangcp.com, 1
 gileadpac.com, 1
 giliamor.com, 1
 gillesdesnoyers.com, 1
 gillesmorelle.com, 1
 gillmanandsoame.co.uk, 1
 gillyscastles.co.uk, 1
 gilmoreid.com.au, 1
 gilnet.be, 1
-gilroywestwood.org, 1
 gina-architektur.design, 1
 ginie.de, 1
 ginionusedcars.be, 1
 ginja.co.th, 1
 ginkel.com, 1
 ginnegappen.nl, 1
 ginniemae.gov, 1
 ginzadelunch.jp, 1
@@ -14945,17 +14946,16 @@ jamieweb.net, 1
 jammucake.com, 1
 jammysplodgers.co.uk, 1
 jamon.ca, 1
 jamonsilva.com, 1
 jamstatic.fr, 0
 jamyeprice.com, 1
 jan-and-maaret.de, 1
 jan-bucher.ch, 1
-jan-cermak.cz, 1
 jan-rieger.de, 1
 jan-von.de, 1
 janada.cz, 1
 janaundgeorgsagenja.eu, 1
 janduchene.ch, 1
 janehamelgardendesign.co.uk, 1
 jangocloud.tk, 1
 janheidler.dynv6.net, 1
@@ -15523,27 +15523,27 @@ juku-wing.jp, 1
 julegoerke.de, 1
 julenlanda.com, 1
 julian-weigle.de, 1
 juliangonggrijp.com, 1
 julianickel.de, 1
 julianmeyer.de, 1
 juliansimioni.com, 1
 julianskitchen.ch, 1
+julianvmodesto.com, 1
 julianwallmeroth.de, 1
 julianweigle.de, 1
 julianxhokaxhiu.com, 1
 juliaoantiguidades.com.br, 1
 juliawebber.co.za, 1
 julibear.com, 1
 julico.nl, 1
 julie-and-stevens-wedding.com, 1
 juliedecubber.com, 1
 juliekoubova.net, 1
-juliemaurel.fr, 1
 julienc.io, 1
 julienpaterne.com, 1
 julientartarin.com, 1
 julio.jamil.nom.br, 1
 juls.cloud, 1
 jultube.de, 1
 jumba.com.au, 1
 jumbopan.com, 1
@@ -16122,17 +16122,16 @@ kingclass.cn, 1
 kingdomcrc.org, 1
 kingiescastles.co.uk, 1
 kinglaksa.com, 0
 kingofshooting.com, 1
 kingofthecastlecoventry.co.uk, 1
 kingofthecastlesentertainments.co.uk, 1
 kingofthecastlesouthwales.co.uk, 1
 kingofthecastlesrhyl.co.uk, 1
-kingopen.cn, 1
 kingpincages.com, 1
 kingqueen.org.uk, 1
 kingstclinic.com, 1
 kingtecservices.com, 1
 kini24.ru, 1
 kinkenonline.com, 1
 kinmunity.com, 1
 kinnikinnick.com, 1
@@ -17470,17 +17469,16 @@ linvx.org, 1
 linx.li, 1
 linx.net, 1
 linxmind.eu, 1
 linzgau.de, 1
 lionlyrics.com, 1
 lionsdeal.com, 1
 lipartydepot.com, 1
 lipex.com, 1
-lipo.lol, 1
 lipoabaltimore.org, 1
 liqd.net, 1
 liquid.cz, 1
 liquidcomm.net, 1
 liquidhost.co, 1
 liquidinternet.co, 1
 liquidradio.pro, 1
 lirion.de, 1
@@ -17769,17 +17767,16 @@ loqu8.com, 1
 lordgun.com, 1
 lordofthebrick.com, 1
 lore.azurewebsites.net, 1
 lorenadumitrascu.ro, 1
 loritaboegl.de, 1
 losebellyfat.pro, 1
 losless.fr, 1
 loss.no, 1
-lostandcash.com, 1
 lostarq.com, 1
 lostingames.de, 1
 lostkeys.co.uk, 1
 lostserver.com, 1
 lostwithdan.com, 1
 loteks.de, 1
 lothlorien.ca, 1
 lottosonline.com, 1
@@ -17946,17 +17943,16 @@ lumiere.com, 1
 luminancy.com, 1
 lunafag.ru, 1
 lunakit.org, 1
 lunapps.com, 1
 lunar6.ch, 1
 lunarshark.com, 1
 lunarsoft.net, 1
 lunartail.nl, 1
-lunasqu.ee, 1
 lunchbunch.me, 1
 lune-indigo.ch, 1
 lungdoc.us, 0
 lunidea.ch, 1
 lunidea.com, 1
 lunight.ml, 1
 lunis.net, 1
 lunix.io, 1
@@ -18502,17 +18498,16 @@ martijn.site, 1
 martin-arend.de, 1
 martin-mattel.com, 1
 martin-smith.info, 1
 martine.nu, 1
 martingansler.de, 1
 martinkup.cz, 1
 martinkus.eu, 1
 martinmuc.de, 1
-martinreed.net, 1
 martins.im, 1
 martinsfamilyappliance.com, 1
 martonmihaly.hu, 1
 martynhare.co.uk, 1
 martynhare.uk, 1
 maru-life.com, 1
 maruhoi.com, 1
 marvinkeller.de, 1
@@ -18774,16 +18769,17 @@ md5file.com, 1
 md5hashing.net, 1
 mdbouncycastlehirelondon.co.uk, 1
 mdcloudpracticesolutions.com, 1
 mdcloudps.com, 1
 mdek.at, 1
 mdewendt.de, 1
 mdf-bis.com, 1
 mdiv.pl, 1
+mdkr.nl, 1
 mdma.net, 1
 mdmed.clinic, 1
 mdoering.de, 1
 mdosch.de, 1
 mdpraha.cz, 1
 mdsave.com, 1
 mdwftw.com, 1
 mdx.no, 1
@@ -18835,16 +18831,17 @@ medialab.nrw, 1
 mediamarkt.pl, 1
 mediapart.fr, 1
 mediaselection.eu, 1
 mediationculturelleclp.ch, 1
 mediatorzy.waw.pl, 1
 mediawiki.org, 1
 mediawin.pl, 1
 medic-world.com, 1
+medicalcountermeasures.gov, 1
 medicinesfast.com, 0
 medicinia.com.br, 1
 medicinskavranje.edu.rs, 1
 medicocompetente.it, 1
 medicoresponde.com.br, 1
 medifab.online, 1
 medifi.com, 1
 medireport.fr, 1
@@ -19330,17 +19327,16 @@ minilions.fr, 1
 minimaltimer.com, 1
 minimayhemsoftplay.co.uk, 1
 minimbah.com.au, 1
 minimvc.com, 1
 minipainting.net, 1
 miniskipper.at, 1
 minitruckin.net, 1
 minitrucktalk.com, 1
-minkondom.nu, 1
 minkymoon.jp, 1
 minnesotakinkyyouth.org, 1
 minnesotamathcorps.org, 1
 minnesotareadingcorps.org, 1
 minnit.chat, 1
 minobar.com, 1
 minor.news, 1
 minorshadows.net, 1
@@ -19669,17 +19665,16 @@ montazer.net, 1
 montenero.pl, 1
 monteurzimmerfrei.de, 1
 montopolis.com, 1
 montpreveyres.ch, 1
 montsaintaignan.fr, 1
 montychristie.com, 1
 moo.la, 1
 moobo.co.jp, 1
-moobo.xyz, 1
 moodfoods.com, 1
 moodifiers.com, 1
 moodzshop.com, 1
 moojp.co.jp, 1
 moonagic.com, 1
 moonchart.co.uk, 1
 moondrop.org, 1
 moonkin.eu, 1
@@ -20161,17 +20156,16 @@ mygrotto.org, 1
 mygymer.ch, 1
 myhatsuden.jp, 1
 myhealthreviews.com, 1
 myhostname.net, 1
 myicare.org, 1
 myimds.com, 1
 myimmitracker.com, 1
 myjumparoo.co.uk, 1
-myjumpsuit.de, 1
 mykeepsake.xyz, 0
 myki.co, 1
 mykontool.de, 1
 mylatestnews.org, 1
 mylawyer.be, 1
 myleanfactory.de, 1
 mylene-chandelier.me, 1
 mylifeabundant.com, 1
@@ -21116,17 +21110,16 @@ noodles.net.nz, 1
 noodleyum.com, 1
 noodplan.co.za, 1
 noodweer.be, 1
 noon-entertainments.com, 1
 noop.ch, 1
 noordsee.de, 1
 noorsolidarity.com, 1
 nootropic.com, 1
-nootropicsource.com, 1
 noovell.com, 1
 nopaste.xyz, 1
 nopaynocure.com, 1
 norad.sytes.net, 1
 nord-sud.be, 1
 nordakademie.de, 1
 nordic-survival.de, 1
 nordiccasinocommunity.com, 1
@@ -21415,16 +21408,17 @@ obsproject.com, 1
 obtima.org, 1
 obud.cz, 1
 obyvateleceska.cz, 1
 oc-minecraft.com, 1
 oc-sa.ch, 1
 ocad.com.au, 1
 ocapic.com, 1
 occasion-impro.com, 1
+occentus.net, 1
 occmon.net, 1
 ocd2016.com, 1
 oceandns.eu, 1
 oceandns.net, 1
 oceandns.nl, 1
 oceanvisuals.com, 1
 ocelot.help, 1
 ocenovani-inspekce.cz, 1
@@ -22618,16 +22612,17 @@ petelew.is, 1
 peter.org.ua, 1
 peterandjoelle.co.uk, 1
 peterboers.info, 1
 peterdavehello.org, 1
 peterfolta.net, 1
 peterhuetz.at, 1
 peterhuetz.com, 1
 peterjohnson.io, 1
+peterlew.is, 1
 peternagy.ie, 1
 petersontoscano.com, 1
 pethelpers.org, 1
 petite-maison.ch, 1
 petitsfrenchies.com, 1
 petja.me, 0
 petko.me, 1
 petlife.od.ua, 1
@@ -23157,17 +23152,16 @@ pojer.me, 1
 pokalsocial.de, 1
 pokefarm.com, 1
 pokeinthe.io, 1
 pokemondb.net, 1
 pokemontabletopadventures.com, 1
 pokemori.jp, 1
 pokepon.center, 1
 pokl.cz, 1
-pokomichi.com, 1
 pol-expo.ru, 1
 polaire.org, 1
 polandb2b.directory, 1
 pole-emotion.ch, 1
 poleacademie.com, 1
 poleartschool.com, 0
 poles4pilots.com, 1
 policedriver.com, 1
@@ -23283,16 +23277,17 @@ posobota.cz, 1
 posoiu.net, 1
 post-darwinian.com, 1
 post-darwinism.com, 1
 post.com.ar, 1
 post.io, 1
 post4me.at, 1
 postal.dk, 1
 postal3.es, 1
+postback.io, 1
 postblue.info, 1
 postbox.life, 1
 postcardpayment.com, 1
 postcode.nl, 1
 postcodegarant.nl, 1
 postdarwinian.com, 1
 postdarwinism.com, 1
 postdeck.de, 1
@@ -23800,17 +23795,16 @@ pugovka72.ru, 1
 puhe.se, 1
 puhka.me, 1
 puikheid.nl, 1
 puissancemac.ch, 1
 puli.com.br, 1
 pulledporkheaven.com, 1
 pulsedursley.co.uk, 1
 pumperszene.com, 1
-punchkickinteractive.com, 1
 puneflowermall.com, 1
 punikonta.de, 1
 punitsheth.com, 1
 punkapoule.fr, 1
 punkdns.top, 1
 punknews.org, 1
 pupboss.com, 1
 puppet.pl, 1
@@ -24677,16 +24671,17 @@ reykjavik.guide, 1
 rezept-planer.de, 1
 rezexpert.com, 1
 rezosup.net, 1
 rezosup.org, 1
 rezultant.ru, 1
 rezun.cloud, 1
 rf.tn, 1
 rfeif.org, 1
+rgavmf.ru, 1
 rgbinnovation.com, 1
 rgcomportement.fr, 1
 rgservers.com, 1
 rhees.nl, 1
 rhein-liebe.de, 1
 rheinneckarmetal.com, 1
 rheocube.com, 1
 rhese.net, 1
@@ -24773,16 +24768,17 @@ rimeto.io, 1
 rimo.site, 1
 ringingliberty.com, 1
 rinj.se, 1
 rinvex.com, 1
 rio-weimar.de, 1
 rioshop.com.br, 1
 rip-sport.cz, 1
 ripmixmake.org, 1
+ripple.com, 1
 ris.fi, 1
 risada.nl, 1
 risaphuketproperty.com, 1
 riscascape.net, 1
 rischard.org, 1
 rise-technologies.com, 1
 riseup.net, 1
 rishikeshyoga.in, 1
@@ -25292,16 +25288,17 @@ sa-mp.ro, 1
 sa.net, 1
 saabpartsdistribution.com, 1
 saamhorigheidsfonds.nl, 0
 saba-piserver.info, 1
 sabahattin-gucukoglu.com, 1
 sabatek.pl, 1
 sabine-forschbach.de, 1
 sabineforschbach.de, 1
+sabrinajoiasprontaentrega.com.br, 1
 sacaentradas.com, 1
 saccani.net, 1
 sackers.com, 1
 sackmesser.ch, 1
 saclier.at, 1
 saco-ceso.com, 1
 sacred-knights.net, 1
 sadbox.es, 1
@@ -26167,16 +26164,17 @@ serveradminz.com, 1
 serverco.com, 1
 serverd.de, 1
 serverfrog.de, 1
 serverlauget.no, 1
 serverlog.net, 1
 serveroffline.net, 0
 serverpedia.de, 1
 servers4all.co.uk, 1
+serversftw.com, 1
 serverstuff.info, 1
 serversuit.com, 1
 servertastic.com, 1
 servethecity-karlsruhe.de, 1
 servfefe.com, 1
 servgate.jp, 1
 service.gov.uk, 1
 serviceboss.de, 1
@@ -26686,16 +26684,17 @@ simplyfixit.co.uk, 1
 simplyhelen.de, 1
 simplylovejesus.com, 1
 simplymozzo.se, 1
 simplystudio.com, 1
 simpte.com, 1
 simpul.nl, 1
 sims4hub.ga, 1
 simsnieuws.nl, 1
+simtin-net.de, 1
 simukti.net, 1
 simumiehet.com, 1
 simus.fr, 1
 sin-nombre-alleria.de, 1
 sin.swiss, 1
 sinaryuda.web.id, 1
 sinatrafamily.com, 1
 sinefili.com, 1
@@ -27871,17 +27870,16 @@ stonedworms.de, 1
 stonefusion.org.uk, 1
 stonehammerhead.org, 1
 stonemain.eu, 1
 stonemanbrasil.com.br, 1
 stonewuu.com, 1
 stony.com, 1
 stonystratford.org, 1
 stopakwardhandshakes.org, 1
-stopbreakupnow.org, 1
 stopbullying.gov, 1
 stopfraud.gov, 1
 stopthethyroidmadness.com, 1
 stordbatlag.no, 1
 store-host.com, 1
 store10.de, 0
 storedsafe.com, 1
 storgom.ua, 0
@@ -29404,17 +29402,16 @@ tink.network, 1
 tinker.career, 1
 tinkerboard.org, 1
 tinkertry.com, 1
 tinte24.de, 1
 tintencenter.com, 1
 tintenfix.net, 1
 tintenfux.de, 1
 tintenland.de, 1
-tintenprofi.de, 1
 tinyhousefinance.com.au, 1
 tinylan.com, 1
 tinyspeck.com, 1
 tinyssh.com, 1
 tinyssh.org, 1
 tinytownsoftplay.co.uk, 1
 tinyvpn.net, 1
 tinyvpn.org, 1
@@ -30794,16 +30791,17 @@ vapecom-shop.com, 1
 vapecraftinc.com, 1
 vapehour.com, 1
 vapemania.eu, 1
 vaperolles.ch, 1
 vapesense.co.uk, 1
 vapeshopsupply.com, 0
 vaphone.co, 1
 vapor.cloud, 0
+vapordepot.jp, 1
 varcare.jp, 1
 varden.info, 1
 vareillefoundation.fr, 1
 vareillefoundation.org, 1
 varela-electricite.fr, 1
 varghese.de, 1
 variable.agency, 1
 variablyconstant.com, 1
@@ -30999,16 +30997,17 @@ victorhawk.com, 1
 victoriaartist.ru, 1
 victoriastudio.ru, 1
 victoriaville.ca, 1
 victorjacobs.com, 1
 victornet.de, 1
 victornilsson.pw, 1
 vicyu.com, 1
 vid-immobilien.de, 1
+vida-it.com, 1
 vida.es, 1
 vidbooster.com, 1
 vide-dressing.org, 0
 vide-greniers.org, 0
 vide-maisons.org, 0
 videnskabsklubben.dk, 1
 videogamesartwork.com, 1
 videorullen.se, 1
@@ -31275,17 +31274,17 @@ vorderklier.de, 1
 vorkbaard.nl, 1
 vorlicek.de, 1
 vorlif.org, 1
 vorm2.com, 1
 vorodevops.com, 1
 vos-fleurs.ch, 1
 vos-fleurs.com, 1
 vosgym.jp, 1
-voshod.org, 0
+voshod.org, 1
 vosky.fr, 1
 vostronet.com, 1
 voter-info.uk, 1
 votercircle.com, 1
 voterstartingpoint.uk, 1
 votocek.cz, 1
 votockova.cz, 1
 votoot.com, 1
@@ -31498,16 +31497,17 @@ watchweasel.com, 1
 waterfedpole.com, 1
 waterleeftinbeek.nl, 1
 watermonitor.gov, 1
 watersb.org, 1
 waterschaplimburg.nl, 1
 watertrails.io, 1
 waterworkscondos.com, 1
 watsonwork.me, 1
+wattechweb.com, 1
 wave-ola.es, 1
 wavesboardshop.com, 1
 wavesoftime.com, 1
 waveum.com, 1
 wawak.pl, 1
 waxdramatic.com, 1
 waylaydesign.com, 1
 wayne.cloud, 0
@@ -31592,16 +31592,17 @@ webcollect.org.uk, 1
 webcontentspinning.com, 1
 webcookies.org, 1
 webcrm.com, 1
 webdesign-st.de, 1
 webdesigneauclaire.com, 1
 webdesignerinwarwickshire.co.uk, 1
 webdesignplay.com, 1
 webdesignplayground.io, 1
+webdesignssussex.co.uk, 1
 webdev-quiz.de, 1
 webdevops.io, 1
 webdosh.com, 1
 webduck.nl, 1
 webeau.com, 1
 webergrillrestaurant.com, 1
 webexp.biz, 1
 webfilings-eu-mirror.appspot.com, 1
@@ -32736,17 +32737,16 @@ xn--uort9oqoaj00bv04d.biz, 1
 xn--uorz58b8p0bpwa.biz, 1
 xn--v-wfa35g.ro, 1
 xn--v6q426ishax2a.xyz, 1
 xn--vck8crc010pu14e.biz, 1
 xn--vck8crc655y34ioha.net, 1
 xn--vck8crcu789ajtaj92eura.xyz, 1
 xn--w22a.jp, 1
 xn--werner-schffer-fib.de, 1
-xn--wmq.jp, 0
 xn--xz1a.jp, 1
 xn--y8j148r.xn--q9jyb4c, 1
 xn--y8j2eb5631a4qf5n0h.com, 1
 xn--y8j5gq14rbdd.net, 1
 xn--yj8h0m.ws, 1
 xn--ykrp42k.com, 1
 xn--zettlmeil-n1a.de, 1
 xn5.de, 1
@@ -33009,17 +33009,16 @@ yosheenetwork.fr, 1
 yoshibaworks.com, 1
 yoshitsugu.net, 1
 yospos.org, 1
 yoticonnections.com, 1
 yotilab.com, 1
 yotilabs.com, 1
 yotta-zetta.com, 1
 yotubaiotona.net, 1
-youcaitian.com, 1
 youcancraft.de, 1
 youcanfuckoff.xyz, 1
 youcanmakeit.at, 1
 youcruit.com, 1
 youdamom.com, 0
 youdowell.com, 1
 youdungoofd.com, 1
 youftp.tk, 1
--- a/testing/mochitest/tests/SimpleTest/EventUtils.js
+++ b/testing/mochitest/tests/SimpleTest/EventUtils.js
@@ -2165,54 +2165,55 @@ function synthesizeDragOver(aSrcElement,
     aWindow = window;
   }
   if (!aDestWindow) {
     aDestWindow = aWindow;
   }
 
   const obs = _EU_Cc["@mozilla.org/observer-service;1"].getService(_EU_Ci.nsIObserverService);
   const ds = _EU_Cc["@mozilla.org/widget/dragservice;1"].getService(_EU_Ci.nsIDragService);
-  var sess = ds.getCurrentSession();
 
   // This method runs before other callbacks, and acts as a way to inject the
   // initial drag data into the DataTransfer.
   function fillDrag(event) {
+    ds.startDragSession();
+
     if (aDragData) {
       for (var i = 0; i < aDragData.length; i++) {
         var item = aDragData[i];
         for (var j = 0; j < item.length; j++) {
           event.dataTransfer.mozSetDataAt(item[j].type, item[j].data, i);
         }
       }
     }
     event.dataTransfer.dropEffect = aDropEffect || "move";
     event.preventDefault();
   }
 
   function trapDrag(subject, topic) {
     if (topic == "on-datatransfer-available") {
+      var sess = ds.getCurrentSession();
       sess.dataTransfer = _EU_maybeUnwrap(_EU_maybeWrap(subject).mozCloneForEvent("drop"));
       sess.dataTransfer.dropEffect = subject.dropEffect;
+      obs.removeObserver(trapDrag, "on-datatransfer-available");
     }
   }
 
   // need to use real mouse action
-  aWindow.addEventListener("dragstart", fillDrag, true);
+  aWindow.addEventListener("dragstart", fillDrag, { capture: true, once: true });
   obs.addObserver(trapDrag, "on-datatransfer-available");
   synthesizeMouseAtCenter(aSrcElement, { type: "mousedown" }, aWindow);
 
   var rect = aSrcElement.getBoundingClientRect();
   var x = rect.width / 2;
   var y = rect.height / 2;
   synthesizeMouse(aSrcElement, x, y, { type: "mousemove" }, aWindow);
   synthesizeMouse(aSrcElement, x+10, y+10, { type: "mousemove" }, aWindow);
-  aWindow.removeEventListener("dragstart", fillDrag, true);
-  obs.removeObserver(trapDrag, "on-datatransfer-available");
 
-  var dataTransfer = sess.dataTransfer;
+  var dataTransfer = ds.getCurrentSession().dataTransfer;
 
   // The EventStateManager will fire our dragenter event if it needs to.
   var event = createDragEventObject("dragover", aDestElement, aDestWindow,
                                     dataTransfer, aDragEvent);
   var result = sendDragEvent(event, aDestElement, aDestWindow);
 
   return [result, dataTransfer];
 }
@@ -2278,29 +2279,25 @@ function synthesizeDrop(aSrcElement, aDe
 {
   if (!aWindow) {
     aWindow = window;
   }
   if (!aDestWindow) {
     aDestWindow = aWindow;
   }
 
-  var ds = _EU_Cc["@mozilla.org/widget/dragservice;1"]
-           .getService(_EU_Ci.nsIDragService);
-
-  ds.startDragSession();
-
   try {
     var [result, dataTransfer] = synthesizeDragOver(aSrcElement, aDestElement,
                                                     aDragData, aDropEffect,
                                                     aWindow, aDestWindow,
                                                     aDragEvent);
     return synthesizeDropAfterDragOver(result, dataTransfer, aDestElement,
                                        aDestWindow, aDragEvent);
   } finally {
+    var ds = _EU_Cc["@mozilla.org/widget/dragservice;1"].getService(_EU_Ci.nsIDragService);
     ds.endDragSession(true, _parseModifiers(aDragEvent));
   }
 }
 
 var PluginUtils =
 {
   withTestPlugin : function(callback)
   {
--- a/testing/web-platform/meta/css/css-backgrounds/border-image-slice-001.xht.ini
+++ b/testing/web-platform/meta/css/css-backgrounds/border-image-slice-001.xht.ini
@@ -1,3 +1,3 @@
-[border-image-slice-percentage.html]
+[border-image-slice-001.xht]
   type: reftest
   disabled: if (os == "linux") and debug: https://bugzilla.mozilla.org/show_bug.cgi?id=1383061
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/execorder.html.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[execorder.html]
-  type: testharness
-  expected:
-    if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): OK
-  [Unordered module script execution (parsed, unordered #1)]
-    expected:
-      if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS
-
-  [Unordered module script execution (parsed, unordered #2)]
-    expected:
-      if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS
-
-  [Unordered module script execution (dynamic, unordered #1)]
-    expected:
-      if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS
-
-  [Unordered module script execution (dynamic, unordered #2)]
-    expected:
-      if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS
-
-  [Interlaced module/non-module script execution (parsed, async-ordered)]
-    expected:
-      if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS
-
-  [Interlaced module/non-module script execution (dynamic, async-ordered)]
-    expected:
-      if not debug and not e10s and (os == "mac") and (version == "OS X 10.10.5"): PASS
-
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-1.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[instantiation-error-1.html]
-  [Test that missing exports lead to SyntaxError events on window and load events on script, and that exceptions are remembered]
-    expected: FAIL
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-2.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[instantiation-error-2.html]
-  [Test that missing exports lead to SyntaxError events on window and load events on script, and that exceptions are remembered]
-    expected: FAIL
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html.ini
+++ b/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html.ini
@@ -1,3 +1,2 @@
 [instantiation-error-3.html]
-  [Test that unresolvable cycles lead to SyntaxError events on window and load events on script, and that exceptions are remembered]
-    expected: FAIL
+  disabled: bug 1426195
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[instantiation-error-4.html]
-  [Test that loading a graph in which a module is already errored results in that module's error.]
-    expected: FAIL
deleted file mode 100644
--- a/testing/web-platform/meta/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[instantiation-error-5.html]
-  [Test that loading a graph in which a module is already errored results in that module's error.]
-    expected: FAIL
--- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-1.html
+++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-1.html
@@ -1,27 +1,29 @@
 <!DOCTYPE html>
 <title>Handling of instantiation errors, 1</title>
 
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script>
     setup({allow_uncaught_exception: true});
 
-    window.log = [];
-
-    window.addEventListener("error", ev => log.push(ev.error));
-
     const test_load = async_test(
         "Test that missing exports lead to SyntaxError events on window and " +
-        "load events on script, and that exceptions are remembered");
+        "load events on script");
+
+    window.log = [];
+    window.addEventListener("error", ev => {
+      test_load.step(() => assert_equals(ev.error.constructor, SyntaxError));
+      log.push(ev.message);
+    });
+
     window.addEventListener("load", test_load.step_func_done(ev => {
-      const exn = log[0];
-      assert_array_equals(log, [exn, 1, exn, 2, exn, 3, exn, 4, exn, 5]);
-      assert_equals(exn.constructor, SyntaxError);
+      const msg = log[0];
+      assert_array_equals(log, [msg, 1, msg, 2, msg, 3, msg, 4, msg, 5]);
     }));
 
     function unreachable() { log.push("unexpected"); }
 </script>
 <script type="module" src="./missing-export.js"
     onerror="unreachable()" onload="log.push(1)"></script>
 <script type="module" src="./missing-export.js"
     onerror="unreachable()" onload="log.push(2)"></script>
--- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-2.html
+++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-2.html
@@ -1,27 +1,29 @@
 <!DOCTYPE html>
 <title>Handling of instantiation errors, 2</title>
 
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script>
     setup({allow_uncaught_exception: true});
 
-    window.log = [];
-
-    window.addEventListener("error", ev => log.push(ev.error));
-
     const test_load = async_test(
         "Test that missing exports lead to SyntaxError events on window and " +
-        "load events on script, and that exceptions are remembered");
+        "load events on script");
+
+    window.log = [];
+    window.addEventListener("error", ev => {
+      test_load.step(() => assert_equals(ev.error.constructor, SyntaxError));
+      log.push(ev.message);
+    });
+
     window.addEventListener("load", test_load.step_func_done(ev => {
-      const exn = log[0];
-      assert_array_equals(log, [exn, 1, exn, 2, exn, 3, exn, 4, exn, 5]);
-      assert_equals(exn.constructor, SyntaxError);
+      const msg = log[0];
+      assert_array_equals(log, [msg, 1, msg, 2, msg, 3, msg, 4, msg, 5]);
     }));
 
     function unreachable() { log.push("unexpected"); }
 </script>
 <script type="module" src="./missing-export-nested.js"
     onerror="unreachable()" onload="log.push(1)"></script>
 <script type="module" src="./missing-export-nested.js"
     onerror="unreachable()" onload="log.push(2)"></script>
--- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html
+++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html
@@ -1,27 +1,29 @@
 <!DOCTYPE html>
 <title>Handling of instantiation errors, 3</title>
 
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script>
     setup({allow_uncaught_exception: true});
 
-    window.log = [];
-
-    window.addEventListener("error", ev => log.push(ev.error));
-
     const test_load = async_test(
         "Test that unresolvable cycles lead to SyntaxError events on window " +
-        "and load events on script, and that exceptions are remembered");
+        "and load events on script");
+
+    window.log = [];
+    window.addEventListener("error", ev => {
+      test_load.step(() => assert_equals(ev.error.constructor, SyntaxError));
+      log.push(ev.message);
+    });
+
     window.addEventListener("load", test_load.step_func_done(ev => {
-      const exn = log[0];
-      assert_array_equals(log, [exn, 1, exn, 2, exn, 3]);
-      assert_equals(exn.constructor, SyntaxError);
+      const msg = log[0];
+      assert_array_equals(log, [msg, 1, msg, 2, msg, 3]);
     }));
 
     function unreachable() { log.push("unexpected"); }
 </script>
 <script type="module" src="./cycle-unresolvable.js"
     onerror="unreachable()" onload="log.push(1)" nomodule></script>
 <script type="module" src="./cycle-unresolvable-a.js"
     onerror="unreachable()" onload="log.push(2)"></script>
--- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html
+++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html
@@ -2,26 +2,28 @@
 <title>Handling of instantiation errors, 4</title>
 
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script>
     setup({allow_uncaught_exception: true});
 
     window.log = [];
-
-    window.addEventListener("error", ev => log.push(ev.error));
-
     const test_load = async_test(
         "Test that loading a graph in which a module is already " +
-        "errored results in that module's error.");
+        "errored results in an error.");
+
+    window.addEventListener("error", ev => {
+      test_load.step(() => assert_equals(ev.error.constructor, SyntaxError));
+      log.push(ev.message);
+    });
+
     window.addEventListener("load", test_load.step_func_done(ev => {
-      const exn = log[0];
-      assert_array_equals(log, [exn, 1, exn, 2]);
-      assert_equals(exn.constructor, SyntaxError);
+      const msg = log[0];
+      assert_array_equals(log, [msg, 1, msg, 2]);
     }));
 
     function unreachable() { log.push("unexpected"); }
 </script>
 <script type="module" src="./instantiation-error-4a.js"
     onerror="unreachable()" onload="log.push(1)"></script>
 <script type="module" src="./instantiation-error-4d.js"
     onerror="unreachable()" onload="log.push(2)"></script>
--- a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html
+++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html
@@ -1,27 +1,29 @@
 <!DOCTYPE html>
 <title>Handling of instantiation errors, 5</title>
 
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
 <script>
     setup({allow_uncaught_exception: true});
 
-    window.log = [];
-
-    window.addEventListener("error", ev => log.push(ev.error));
-
     const test_load = async_test(
         "Test that loading a graph in which a module is already " +
-        "errored results in that module's error.");
+        "errored results an error.");
+
+    window.log = [];
+    window.addEventListener("error", ev => {
+      test_load.step(() => assert_equals(ev.error.constructor, SyntaxError));
+      log.push(ev.message);
+    });
+
     window.addEventListener("load", test_load.step_func_done(ev => {
-      const exn = log[0];
-      assert_array_equals(log, [exn, 1, exn, 2]);
-      assert_equals(exn.constructor, SyntaxError);
+      const msg = log[0];
+      assert_array_equals(log, [msg, 1, msg, 2]);
     }));
 
     function unreachable() { log.push("unexpected"); }
 </script>
 <script type="module" src="./instantiation-error-5a.js"
     onerror="unreachable()" onload="log.push(1)"></script>
 <script type="module" src="./instantiation-error-5d.js"
     onerror="unreachable()" onload="log.push(2)"></script>
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -2418,24 +2418,24 @@
     "alert_emails": ["necko@mozilla.com"],
     "bug_numbers": [1357682],
     "expires_in_version": "61",
     "kind": "categorical",
     "keyed": true,
     "description": "Stats about success rate of HTTP OMT request in content process, keyed by content policy.",
     "labels": ["success", "successMainThread", "failListener", "failListenerChain", "notRequested"]
   },
-  "TCP_FAST_OPEN_2": {
-    "record_in_processes": ["main", "content"],
+  "TCP_FAST_OPEN_3": {
+    "record_in_processes": ["main"],
     "expires_in_version": "61",
     "kind": "enumerated",
-    "n_values": 16,
-    "description": "When a http connection is closed, track whether or not TCP Fast Open was used: 0=TFO_NOT_TRIED(There was no http connection and it was not TLS), 1=TFO_TRIED_NEGOTIATING, 2=TFO_DATA_SENT, 3=TFO_FAILED_CONNECTION_REFUSED, 4=TFO_FAILED_NET_TIMEOUT, 5=TFO_FAILED_UNKNOW_ERROR, 6=TFO_FAILED_BACKUP_CONNECTION, 7=TFO_FAILED_CONNECTION_REFUSED_NO_TFO_FAILED_TOO, 8=TFO_FAILED_NET_TIMEOUT__NO_TFO_FAILED_TOO, 9=TFO_FAILED_UNKNOW_ERROR_NO_TFO_FAILED_TOO, 10=TFO_FAILED_BACKUP_CONNECTION_NO_TFO_FAILED_TOO.",
+    "n_values": 32,
+    "description": "When a http connection is closed, track whether or not TCP Fast Open was used: 0=TFO_NOT_SET, 1=TFO_UNKNOWN, 2=TFO_DISABLED, 3=TFO_DISABLED_CONNECT, 4=TFO_NOT_TRIED, 5=TFO_TRIED, 6=TFO_DATA_SENT, 7=TFO_DATA_COOKIE_NOT_ACCEPTED, 8=TFO_FAILED_CONNECTION_REFUSED, 9=TFO_FAILED_NET_TIMEOUT, 10=TFO_FAILED_UNKNOW_ERROR, 11=TFO_FAILED_BACKUP_CONNECTION_TFO_NOT_TRIED, 12=TFO_FAILED_BACKUP_CONNECTION_TFO_TRIED, 13=TFO_FAILED_BACKUP_CONNECTION_TFO_DATA_SENT, 14=TFO_FAILED_BACKUP_CONNECTION_TFO_DATA_COOKIE_NOT_ACCEPTED, 15=TFO_FAILED_CONNECTION_REFUSED_NO_TFO_FAILED_TOO, 16=TFO_FAILED_NET_TIMEOUT__NO_TFO_FAILED_TOO, 17=TFO_FAILED_UNKNOW_ERROR_NO_TFO_FAILED_TOO, 18=TFO_FAILED_BACKUP_CONNECTION_NO_TFO_FAILED_TOO, 19=TFO_BACKUP_CONN. Please look at netwerk/base/TCPFastOpenLayer.h for more info",
     "alert_emails": ["necko@mozilla.com", "ddamjanovic@mozilla.com"],
-    "bug_numbers": [1390881]
+    "bug_numbers": [1402879]
   },
   "TCP_FAST_OPEN_STATUS": {
     "record_in_processes": ["main", "content"],
     "expires_in_version": "61",
     "kind": "enumerated",
     "n_values": 8,
     "description": "TCP Fast Open was: 0=enabled during the session, 1=not available or disabled in the os, 2=disabled by the pref, 3=disabled based on the too many connection failures.",
     "alert_emails": ["necko@mozilla.com", "ddamjanovic@mozilla.com"],
--- a/toolkit/components/telemetry/Scalars.yaml
+++ b/toolkit/components/telemetry/Scalars.yaml
@@ -1262,16 +1262,31 @@ screenshots:
     notification_emails:
       - jhirsch@mozilla.com
       - ibicking@mozilla.com
       - clouserw@mozilla.com
     release_channel_collection: opt-out
     record_in_processes:
       - 'main'
 
+network.http:
+  backup_conn_won:
+    bug_numbers:
+      - 1402811
+    description: >
+      For connection where TFO has not be use, collect telemetry on whether the
+      backup connection or the primary connection was faster.
+    expires: "61"
+    kind: boolean
+    notification_emails:
+      - necko@mozilla.com
+      - ddamjanovic@mozilla.com
+    record_in_processes:
+      - 'main'
+
 idb.type:
   persistent_count:
     bug_numbers:
       - 1360567
     description: >
       Number of times indexeddb.open(name, {storage: "persistent"}) has been used.
     expires: "60"
     kind: uint
--- a/widget/nsDragServiceProxy.cpp
+++ b/widget/nsDragServiceProxy.cpp
@@ -4,16 +4,17 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsDragServiceProxy.h"
 #include "nsIDocument.h"
 #include "nsISupportsPrimitives.h"
 #include "mozilla/dom/TabChild.h"
 #include "mozilla/gfx/2D.h"
+#include "mozilla/EventStateManager.h"
 #include "mozilla/UniquePtr.h"
 #include "mozilla/Unused.h"
 #include "nsContentUtils.h"
 
 using mozilla::ipc::Shmem;
 using mozilla::dom::TabChild;
 using mozilla::dom::OptionalShmem;
 using mozilla::LayoutDeviceIntRect;
@@ -83,8 +84,26 @@ nsDragServiceProxy::InvokeDragSessionImp
     }
   }
 
   mozilla::Unused << child->SendInvokeDragSession(dataTransfers, aActionType,
                                                   mozilla::void_t(), 0, 0, dragRect);
   StartDragSession();
   return NS_OK;
 }
+
+NS_IMETHODIMP
+nsDragServiceProxy::StartDragSession()
+{
+  // Normally, OS stops firing input events when a drag operation starts. But
+  // there may be some pending input events queued in the content process. We
+  // have to suppress them since spec says that input events must be suppressed
+  // when there is a dnd session.
+  EventStateManager::SuppressInputEvents();
+  return nsBaseDragService::StartDragSession();
+}
+
+NS_IMETHODIMP
+nsDragServiceProxy::EndDragSession(bool aDoneDrag, uint32_t aKeyModifiers)
+{
+  EventStateManager::UnsuppressInputEvents();
+  return nsBaseDragService::EndDragSession(aDoneDrag, aKeyModifiers);
+}
--- a/widget/nsDragServiceProxy.h
+++ b/widget/nsDragServiceProxy.h
@@ -14,13 +14,18 @@ public:
   nsDragServiceProxy();
 
   NS_DECL_ISUPPORTS_INHERITED
 
   // nsBaseDragService
   virtual nsresult InvokeDragSessionImpl(nsIArray* anArrayTransferables,
                                          nsIScriptableRegion* aRegion,
                                          uint32_t aActionType) override;
+
+  // nsIDragService
+  NS_IMETHOD StartDragSession() override;
+  NS_IMETHOD EndDragSession(bool aDoneDrag, uint32_t aKeyModifiers) override;
+
 private:
   virtual ~nsDragServiceProxy();
 };
 
 #endif // NSDRAGSERVICEPROXY_H
--- a/xpcom/io/nsLocalFileCommon.cpp
+++ b/xpcom/io/nsLocalFileCommon.cpp
@@ -10,16 +10,17 @@
 
 #include "nsString.h"
 #include "nsCOMPtr.h"
 #include "nsReadableUtils.h"
 #include "nsPrintfCString.h"
 #include "nsCRT.h"
 #include "nsNativeCharsetUtils.h"
 #include "nsUTF8Utils.h"
+#include "nsArray.h"
 
 #ifdef XP_WIN
 #include <string.h>
 #endif
 
 
 void
 NS_StartupLocalFile()