Merge mozilla-central to autoland. a=merge on a CLOSED TREE
authorRazvan Maries <rmaries@mozilla.com>
Tue, 04 Dec 2018 23:59:45 +0200
changeset 508558 32d18c6e3d45c164ddc641186e50e005cd782bc9
parent 508543 27ab14a0c1f5809d048523b4110e528d3a597fb4 (current diff)
parent 508557 0a65dda20ade2c24bf42fb22bfd7169b320b732e (diff)
child 508559 04da1f01afba4940e1fa94585e046c7d1103ddd6
push id1905
push userffxbld-merge
push dateMon, 21 Jan 2019 12:33:13 +0000
treeherdermozilla-release@c2fca1944d8c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone65.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. a=merge on a CLOSED TREE
testing/web-platform/meta/wasm/webapi/abort.any.js.ini
--- a/accessible/base/DocManager.cpp
+++ b/accessible/base/DocManager.cpp
@@ -298,18 +298,17 @@ NS_IMETHODIMP
 DocManager::OnStatusChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
                            nsresult aStatus, const char16_t* aMessage) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 DocManager::OnSecurityChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
-                             uint32_t aOldState, uint32_t aState,
-                             const nsAString& aContentBlockingLogJSON) {
+                             uint32_t aState) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 // nsIDOMEventListener
 
 NS_IMETHODIMP
--- a/browser/base/content/browser-contentblocking.js
+++ b/browser/base/content/browser-contentblocking.js
@@ -712,18 +712,17 @@ var ContentBlocking = {
 
   shieldHistogramAdd(value) {
     if (PrivateBrowsingUtils.isWindowPrivate(window)) {
       return;
     }
     Services.telemetry.getHistogramById("TRACKING_PROTECTION_SHIELD").add(value);
   },
 
-  onSecurityChange(oldState, state, webProgress, isSimulated,
-                   contentBlockingLogJSON) {
+  onSecurityChange(state, webProgress, isSimulated) {
     let baseURI = this._baseURIForChannelClassifier;
 
     // Don't deal with about:, file: etc.
     if (!baseURI) {
       this.iconBox.removeAttribute("animate");
       this.iconBox.removeAttribute("active");
       this.iconBox.removeAttribute("hasException");
       return;
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -4922,18 +4922,17 @@ var XULBrowserWindow = {
   _lastLocation: null,
 
   // This is called in multiple ways:
   //  1. Due to the nsIWebProgressListener.onSecurityChange notification.
   //  2. Called by tabbrowser.xml when updating the current browser.
   //  3. Called directly during this object's initializations.
   // aRequest will be null always in case 2 and 3, and sometimes in case 1 (for
   // instance, there won't be a request when STATE_BLOCKED_TRACKING_CONTENT is observed).
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON, aIsSimulated) {
+  onSecurityChange(aWebProgress, aRequest, aState, aIsSimulated) {
     // Don't need to do anything if the data we use to update the UI hasn't
     // changed
     let uri = gBrowser.currentURI;
     let spec = uri.spec;
     if (this._state == aState &&
         this._lastLocation == spec) {
       // Switching to a tab of the same URL doesn't change most security
       // information, but tab specific permissions may be different.
@@ -4950,18 +4949,17 @@ var XULBrowserWindow = {
     // Make sure the "https" part of the URL is striked out or not,
     // depending on the current mixed active content blocking state.
     gURLBar.formatValue();
 
     try {
       uri = Services.uriFixup.createExposableURI(uri);
     } catch (e) {}
     gIdentityHandler.updateIdentity(this._state, uri);
-    ContentBlocking.onSecurityChange(aOldState, this._state, aWebProgress, aIsSimulated,
-                                     aContentBlockingLogJSON);
+    ContentBlocking.onSecurityChange(this._state, aWebProgress, aIsSimulated);
   },
 
   // simulate all change notifications after switching tabs
   onUpdateCurrentBrowser: function XWB_onUpdateCurrentBrowser(aStateFlags, aStatus, aMessage, aTotalProgress) {
     if (FullZoom.updateBackgroundTabs)
       FullZoom.onLocationChange(gBrowser.currentURI, true);
 
     CombinedStopReload.onTabSwitch();
--- a/browser/base/content/tabbrowser.js
+++ b/browser/base/content/tabbrowser.js
@@ -957,23 +957,18 @@ window._gBrowser = {
     this._callProgressListeners(null, "onLocationChange",
                                 [webProgress, null, newBrowser.currentURI, 0, true],
                                 true, false);
 
     let securityUI = newBrowser.securityUI;
     if (securityUI) {
       // Include the true final argument to indicate that this event is
       // simulated (instead of being observed by the webProgressListener).
-      // Note: check state first to make sure the security UI object updates its
-      // state from the docshell correctly.
-      let state = securityUI.state;
-      let oldState = securityUI.oldState;
       this._callProgressListeners(null, "onSecurityChange",
-                                  [webProgress, null, oldState, state,
-                                   securityUI.contentBlockingLogJSON, true],
+                                  [webProgress, null, securityUI.state, true],
                                   true, false);
     }
 
     let listener = this._tabListeners.get(newTab);
     if (listener && listener.mStateFlags) {
       this._callProgressListeners(null, "onUpdateCurrentBrowser",
                                   [listener.mStateFlags, listener.mStatus,
                                    listener.mMessage, listener.mTotalProgress],
@@ -1708,27 +1703,22 @@ window._gBrowser = {
     this._tabListeners.set(tab, listener);
     filter.addProgressListener(listener, Ci.nsIWebProgress.NOTIFY_ALL);
 
     // Restore the progress listener.
     aBrowser.webProgress.addProgressListener(filter, Ci.nsIWebProgress.NOTIFY_ALL);
 
     // Restore the securityUI state.
     let securityUI = aBrowser.securityUI;
-    // Make sure to call the state getter before the oldState getter to give
-    // the securityUI object a chance to sync its state with the docshell
     let state = securityUI ? securityUI.state :
       Ci.nsIWebProgressListener.STATE_IS_INSECURE;
-    let oldState = securityUI ? securityUI.oldState :
-      Ci.nsIWebProgressListener.STATE_IS_INSECURE;
     // Include the true final argument to indicate that this event is
     // simulated (instead of being observed by the webProgressListener).
     this._callProgressListeners(aBrowser, "onSecurityChange",
-                                [aBrowser.webProgress, null, oldState, state,
-                                 securityUI.contentBlockingLogJSON, true],
+                                [aBrowser.webProgress, null, state, true],
                                 true, false);
 
     if (aShouldBeRemote) {
       // Switching the browser to be remote will connect to a new child
       // process so the browser can no longer be considered to be
       // crashed.
       tab.removeAttribute("crashed");
     } else {
@@ -5201,20 +5191,19 @@ class TabProgressListener {
       return;
 
     this._callProgressListeners("onStatusChange",
                                 [aWebProgress, aRequest, aStatus, aMessage]);
 
     this.mMessage = aMessage;
   }
 
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState, aContentBlockingLogJSON) {
+  onSecurityChange(aWebProgress, aRequest, aState) {
     this._callProgressListeners("onSecurityChange",
-                                [aWebProgress, aRequest, aOldState, aState,
-                                 aContentBlockingLogJSON]);
+                                [aWebProgress, aRequest, aState]);
   }
 
   onRefreshAttempted(aWebProgress, aURI, aDelay, aSameURI) {
     return this._callProgressListeners("onRefreshAttempted",
                                        [aWebProgress, aURI, aDelay, aSameURI]);
   }
 }
 TabProgressListener.prototype.QueryInterface = ChromeUtils.generateQI(
--- a/browser/base/content/test/general/browser_alltabslistener.js
+++ b/browser/base/content/test/general/browser_alltabslistener.js
@@ -31,18 +31,17 @@ var gFrontProgressListener = {
     ok(gFrontNotificationsPos < gFrontNotifications.length, "Got an expected notification for the front notifications listener");
     is(state, gFrontNotifications[gFrontNotificationsPos], "Got a notification for the front notifications listener");
     gFrontNotificationsPos++;
   },
 
   onStatusChange(aWebProgress, aRequest, aStatus, aMessage) {
   },
 
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {
+  onSecurityChange(aWebProgress, aRequest, aState) {
     if (aRequest &&
         aRequest.QueryInterface(Ci.nsIChannel).originalURI.spec == "about:blank") {
       // ignore initial about blank
       return;
     }
     var state = "onSecurityChange";
     info("FrontProgress: " + state + " 0x" + aState.toString(16));
     ok(gFrontNotificationsPos < gFrontNotifications.length, "Got an expected notification for the front notifications listener");
@@ -91,18 +90,17 @@ var gAllProgressListener = {
         aRequest.QueryInterface(Ci.nsIChannel).originalURI.spec == "about:blank") {
       // ignore initial about blank
       return;
     }
     var state = "onStatusChange";
     ok(aBrowser == gTestBrowser, state + " notification came from the correct browser");
   },
 
-  onSecurityChange(aBrowser, aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {
+  onSecurityChange(aBrowser, aWebProgress, aRequest, aState) {
     if (aRequest &&
         aRequest.QueryInterface(Ci.nsIChannel).originalURI.spec == "about:blank") {
       // ignore initial about blank
       return;
     }
     var state = "onSecurityChange";
     info("AllProgress: " + state + " 0x" + aState.toString(16));
     ok(aBrowser == gTestBrowser, state + " notification came from the correct browser");
--- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js
@@ -1216,18 +1216,17 @@ this.tabs = class extends ExtensionAPI {
                 }
                 if (pageSettings.footerRight !== null) {
                   printSettings.footerStrRight = pageSettings.footerRight;
                 }
 
                 let printProgressListener = {
                   onLocationChange(webProgress, request, location, flags) { },
                   onProgressChange(webProgress, request, curSelfProgress, maxSelfProgress, curTotalProgress, maxTotalProgress) { },
-                  onSecurityChange(webProgress, request, oldState, state,
-                                   contentBlockingLogJSON) { },
+                  onSecurityChange(webProgress, request, state) { },
                   onStateChange(webProgress, request, flags, status) {
                     if ((flags & Ci.nsIWebProgressListener.STATE_STOP) && (flags & Ci.nsIWebProgressListener.STATE_IS_DOCUMENT)) {
                       resolve(retval == 0 ? "saved" : "replaced");
                     }
                   },
                   onStatusChange: function(webProgress, request, status, message) {
                     if (status != 0) {
                       resolve(retval == 0 ? "not_saved" : "not_replaced");
--- a/browser/components/sessionstore/StartupPerformance.jsm
+++ b/browser/components/sessionstore/StartupPerformance.jsm
@@ -71,17 +71,19 @@ var StartupPerformance = {
   get isRestored() {
     return this._isRestored;
   },
 
   // Called when restoration starts.
   // Record the start timestamp, setup the timer and `this._promiseFinished`.
   // Behavior is unspecified if there was already an ongoing measure.
   _onRestorationStarts(isAutoRestore) {
-    Services.profiler.AddMarker("_onRestorationStarts");
+    if (Services.profiler) {
+      Services.profiler.AddMarker("_onRestorationStarts");
+    }
     this._latestRestoredTimeStamp = this._startTimeStamp = Date.now();
     this._totalNumberOfEagerTabs = 0;
     this._totalNumberOfTabs = 0;
     this._totalNumberOfWindows = 0;
 
     // While we may restore several sessions in a single run of the browser,
     // that's a very unusual case, and not really worth measuring, so let's
     // stop listening for further restorations.
@@ -194,17 +196,19 @@ var StartupPerformance = {
 
           let observer = (event) => {
             // We don't care about tab restorations that are due to
             // a browser flipping from out-of-main-process to in-main-process
             // or vice-versa. We only care about restorations that are due
             // to the user switching to a lazily restored tab, or for tabs
             // that are restoring eagerly.
             if (!event.detail.isRemotenessUpdate) {
-              Services.profiler.AddMarker("SSTabRestored");
+              if (Services.profiler) {
+                Services.profiler.AddMarker("SSTabRestored");
+              }
               this._latestRestoredTimeStamp = Date.now();
               this._totalNumberOfEagerTabs += 1;
             }
           };
           win.gBrowser.tabContainer.addEventListener("SSTabRestored", observer);
           this._totalNumberOfTabs += win.gBrowser.tabContainer.itemCount;
 
           // Once we have finished collecting the results, clean up the observers.
--- a/browser/components/shell/nsMacShellService.cpp
+++ b/browser/components/shell/nsMacShellService.cpp
@@ -179,19 +179,17 @@ NS_IMETHODIMP
 nsMacShellService::OnStatusChange(nsIWebProgress* aWebProgress,
                                   nsIRequest* aRequest, nsresult aStatus,
                                   const char16_t* aMessage) {
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsMacShellService::OnSecurityChange(nsIWebProgress* aWebProgress,
-                                    nsIRequest* aRequest, uint32_t aOldState,
-                                    uint32_t aState,
-                                    const nsAString& aContentBlockingLogJSON) {
+                                    nsIRequest* aRequest, uint32_t aState) {
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsMacShellService::OnStateChange(nsIWebProgress* aWebProgress,
                                  nsIRequest* aRequest, uint32_t aStateFlags,
                                  nsresult aStatus) {
   if (aStateFlags & STATE_STOP) {
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -6625,18 +6625,17 @@ NS_IMETHODIMP
 nsDocShell::OnStatusChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
                            nsresult aStatus, const char16_t* aMessage) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsDocShell::OnSecurityChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
-                             uint32_t aOldState, uint32_t aState,
-                             const nsAString& aContentBlockingLogJSON) {
+                             uint32_t aState) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 nsresult nsDocShell::EndPageLoad(nsIWebProgress* aProgress,
                                  nsIChannel* aChannel, nsresult aStatus) {
   if (!aChannel) {
     return NS_ERROR_NULL_POINTER;
--- a/docshell/base/nsDocShellTreeOwner.cpp
+++ b/docshell/base/nsDocShellTreeOwner.cpp
@@ -689,19 +689,18 @@ nsDocShellTreeOwner::OnLocationChange(ns
 NS_IMETHODIMP
 nsDocShellTreeOwner::OnStatusChange(nsIWebProgress* aWebProgress,
                                     nsIRequest* aRequest, nsresult aStatus,
                                     const char16_t* aMessage) {
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsDocShellTreeOwner::OnSecurityChange(
-    nsIWebProgress* aWebProgress, nsIRequest* aRequest, uint32_t aOldState,
-    uint32_t aState, const nsAString& aContentBlockingLogJSON) {
+nsDocShellTreeOwner::OnSecurityChange(nsIWebProgress* aWebProgress,
+                                      nsIRequest* aRequest, uint32_t aState) {
   return NS_OK;
 }
 
 //*****************************************************************************
 // nsDocShellTreeOwner: Accessors
 //*****************************************************************************
 
 void nsDocShellTreeOwner::WebBrowser(nsWebBrowser* aWebBrowser) {
--- a/dom/base/nsGlobalWindowOuter.cpp
+++ b/dom/base/nsGlobalWindowOuter.cpp
@@ -5070,18 +5070,17 @@ void nsGlobalWindowOuter::NotifyContentB
     state &= ~aState;
   }
 
   if (state == oldState) {
     // Avoid dispatching repeated notifications when nothing has changed
     return;
   }
 
-  eventSink->OnSecurityChange(aChannel, oldState, state,
-                              doc->GetContentBlockingLog());
+  eventSink->OnSecurityChange(aChannel, state);
 }
 
 // static
 bool nsGlobalWindowOuter::SameLoadingURI(nsIDocument* aDoc,
                                          nsIChannel* aChannel) {
   nsCOMPtr<nsIURI> docURI = aDoc->GetDocumentURI();
   nsCOMPtr<nsILoadInfo> channelLoadInfo = aChannel->GetLoadInfo();
   if (!channelLoadInfo || !docURI) {
--- a/dom/browser-element/BrowserElementChildPreload.js
+++ b/dom/browser-element/BrowserElementChildPreload.js
@@ -1176,18 +1176,17 @@ BrowserElementChild.prototype = {
             } catch (e) {}
 
             sendAsyncMsg('error', { type: 'other' });
             return;
         }
       }
     },
 
-    onSecurityChange: function(webProgress, request, oldState, state,
-                               contentBlockingLogJSON) {
+    onSecurityChange: function(webProgress, request, state) {
       if (webProgress != docShell) {
         return;
       }
 
       var securityStateDesc;
       if (state & Ci.nsIWebProgressListener.STATE_IS_SECURE) {
         securityStateDesc = 'secure';
       }
--- a/dom/clients/manager/ClientNavigateOpChild.cpp
+++ b/dom/clients/manager/ClientNavigateOpChild.cpp
@@ -116,18 +116,17 @@ class NavigateLoadListener final : publi
   OnStatusChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
                  nsresult aStatus, const char16_t* aMessage) override {
     MOZ_CRASH("Unexpected notification.");
     return NS_OK;
   }
 
   NS_IMETHOD
   OnSecurityChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
-                   uint32_t aOldState, uint32_t aState,
-                   const nsAString& aContentBlockingLogJSON) override {
+                   uint32_t aState) override {
     MOZ_CRASH("Unexpected notification.");
     return NS_OK;
   }
 
   NS_DECL_ISUPPORTS
 };
 
 NS_IMPL_ISUPPORTS(NavigateLoadListener, nsIWebProgressListener,
--- a/dom/clients/manager/ClientOpenWindowUtils.cpp
+++ b/dom/clients/manager/ClientOpenWindowUtils.cpp
@@ -112,18 +112,17 @@ class WebProgressListener final : public
   OnStatusChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
                  nsresult aStatus, const char16_t* aMessage) override {
     MOZ_ASSERT(false, "Unexpected notification.");
     return NS_OK;
   }
 
   NS_IMETHOD
   OnSecurityChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
-                   uint32_t aOldState, uint32_t aState,
-                   const nsAString& aContentBlockingLogJSON) override {
+                   uint32_t aState) override {
     MOZ_ASSERT(false, "Unexpected notification.");
     return NS_OK;
   }
 
  private:
   ~WebProgressListener() {
     if (mPromise) {
       mPromise->Reject(NS_ERROR_ABORT, __func__);
--- a/dom/html/HTMLFormElement.cpp
+++ b/dom/html/HTMLFormElement.cpp
@@ -1990,19 +1990,17 @@ HTMLFormElement::OnStatusChange(nsIWebPr
                                 nsIRequest* aRequest, nsresult aStatus,
                                 const char16_t* aMessage) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 HTMLFormElement::OnSecurityChange(nsIWebProgress* aWebProgress,
-                                  nsIRequest* aRequest, uint32_t aOldState,
-                                  uint32_t aState,
-                                  const nsAString& aContentBlockingLogJSON) {
+                                  nsIRequest* aRequest, uint32_t state) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP_(int32_t)
 HTMLFormElement::IndexOfControl(nsIFormControl* aControl) {
   int32_t index = 0;
   return mControls->IndexOfControl(aControl, &index) == NS_OK ? index : 0;
--- a/dom/html/nsHTMLDNSPrefetch.cpp
+++ b/dom/html/nsHTMLDNSPrefetch.cpp
@@ -499,19 +499,19 @@ NS_IMETHODIMP
 nsHTMLDNSPrefetch::nsDeferrals::OnStatusChange(nsIWebProgress *aWebProgress,
                                                nsIRequest *aRequest,
                                                nsresult aStatus,
                                                const char16_t *aMessage) {
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsHTMLDNSPrefetch::nsDeferrals::OnSecurityChange(
-    nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t aOldState,
-    uint32_t aState, const nsAString &aContentBlockingLogJSON) {
+nsHTMLDNSPrefetch::nsDeferrals::OnSecurityChange(nsIWebProgress *aWebProgress,
+                                                 nsIRequest *aRequest,
+                                                 uint32_t state) {
   return NS_OK;
 }
 
 //////////// nsIObserver method
 
 NS_IMETHODIMP
 nsHTMLDNSPrefetch::nsDeferrals::Observe(nsISupports *subject, const char *topic,
                                         const char16_t *data) {
--- a/dom/presentation/PresentationCallbacks.cpp
+++ b/dom/presentation/PresentationCallbacks.cpp
@@ -230,13 +230,12 @@ PresentationResponderLoadingCallback::On
     nsIWebProgress* aWebProgress, nsIRequest* aRequest, nsresult aStatus,
     const char16_t* aMessage) {
   // Do nothing.
   return NS_OK;
 }
 
 NS_IMETHODIMP
 PresentationResponderLoadingCallback::OnSecurityChange(
-    nsIWebProgress* aWebProgress, nsIRequest* aRequest, uint32_t aOldState,
-    uint32_t aState, const nsAString& aContentBlockingLogJSON) {
+    nsIWebProgress* aWebProgress, nsIRequest* aRequest, uint32_t state) {
   // Do nothing.
   return NS_OK;
 }
--- a/dom/security/nsMixedContentBlocker.cpp
+++ b/dom/security/nsMixedContentBlocker.cpp
@@ -97,17 +97,16 @@ class nsMixedContentEvent : public Runna
     NS_ASSERTION(
         sameTypeRoot,
         "No document shell root tree item from document shell tree item!");
 
     // now get the document from sameTypeRoot
     nsCOMPtr<nsIDocument> rootDoc = sameTypeRoot->GetDocument();
     NS_ASSERTION(rootDoc,
                  "No root document from document shell root tree item.");
-    ContentBlockingLog* contentBlockingLog = rootDoc->GetContentBlockingLog();
 
     // Get eventSink and the current security state from the docShell
     nsCOMPtr<nsISecurityEventSink> eventSink = do_QueryInterface(docShell);
     NS_ASSERTION(eventSink, "No eventSink from docShell.");
     nsCOMPtr<nsIDocShell> rootShell = do_GetInterface(sameTypeRoot);
     NS_ASSERTION(rootShell,
                  "No root docshell from document shell root tree item.");
     uint32_t state = nsIWebProgressListener::STATE_IS_BROKEN;
@@ -141,28 +140,26 @@ class nsMixedContentEvent : public Runna
 
           // If mixed display content is loaded, make sure to include that in
           // the state.
           if (rootDoc->GetHasMixedDisplayContentLoaded()) {
             state |= nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT;
           }
 
           eventSink->OnSecurityChange(
-              mContext, state,
+              mContext,
               (state |
-               nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT),
-              contentBlockingLog);
+               nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT));
         } else {
           // root not secure, mixed active content loaded in an https subframe
           if (NS_SUCCEEDED(stateRV)) {
             eventSink->OnSecurityChange(
-                mContext, state,
+                mContext,
                 (state |
-                 nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT),
-                contentBlockingLog);
+                 nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT));
           }
         }
       }
 
     } else if (mType == eMixedDisplay) {
       // See if the pref will change here. If it will, only then do we need to
       // call OnSecurityChange() to update the UI.
       if (rootDoc->GetHasMixedDisplayContentLoaded()) {
@@ -183,28 +180,26 @@ class nsMixedContentEvent : public Runna
 
           // If mixed active content is loaded, make sure to include that in the
           // state.
           if (rootDoc->GetHasMixedActiveContentLoaded()) {
             state |= nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT;
           }
 
           eventSink->OnSecurityChange(
-              mContext, state,
+              mContext,
               (state |
-               nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT),
-              contentBlockingLog);
+               nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT));
         } else {
           // root not secure, mixed display content loaded in an https subframe
           if (NS_SUCCEEDED(stateRV)) {
             eventSink->OnSecurityChange(
-                mContext, state,
+                mContext,
                 (state |
-                 nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT),
-                contentBlockingLog);
+                 nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT));
           }
         }
       }
     }
 
     return NS_OK;
   }
 
@@ -895,17 +890,16 @@ nsresult nsMixedContentBlocker::ShouldLo
       *aDecision = nsIContentPolicy::ACCEPT;
       return NS_OK;
     }
   }
 
   // Get the root document from the sameTypeRoot
   nsCOMPtr<nsIDocument> rootDoc = sameTypeRoot->GetDocument();
   NS_ASSERTION(rootDoc, "No root document from document shell root tree item.");
-  ContentBlockingLog* contentBlockingLog = rootDoc->GetContentBlockingLog();
 
   // Get eventSink and the current security state from the docShell
   nsCOMPtr<nsISecurityEventSink> eventSink = do_QueryInterface(docShell);
   NS_ASSERTION(eventSink, "No eventSink from docShell.");
   nsCOMPtr<nsIDocShell> rootShell = do_GetInterface(sameTypeRoot);
   NS_ASSERTION(rootShell,
                "No root docshell from document shell root tree item.");
   uint32_t state = nsIWebProgressListener::STATE_IS_BROKEN;
@@ -986,43 +980,40 @@ nsresult nsMixedContentBlocker::ShouldLo
 
         // If mixed active content is loaded, make sure to include that in the
         // state.
         if (rootDoc->GetHasMixedActiveContentLoaded()) {
           state |= nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT;
         }
 
         eventSink->OnSecurityChange(
-            aRequestingContext, state,
+            aRequestingContext,
             (state |
-             nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT),
-            contentBlockingLog);
+             nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT));
       } else {
         // User has overriden the pref and the root is not https;
         // mixed display content was allowed on an https subframe.
         if (NS_SUCCEEDED(stateRV)) {
           eventSink->OnSecurityChange(
-              aRequestingContext, state,
+              aRequestingContext,
               (state |
-               nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT),
-              contentBlockingLog);
+               nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT));
         }
       }
     } else {
       *aDecision = nsIContentPolicy::REJECT_REQUEST;
       LogMixedContentMessage(classification, aContentLocation, rootDoc,
                              eBlocked);
       if (!rootDoc->GetHasMixedDisplayContentBlocked() &&
           NS_SUCCEEDED(stateRV)) {
         rootDoc->SetHasMixedDisplayContentBlocked(true);
         eventSink->OnSecurityChange(
-            aRequestingContext, state,
+            aRequestingContext,
             (state |
-             nsIWebProgressListener::STATE_BLOCKED_MIXED_DISPLAY_CONTENT),
-            contentBlockingLog);
+             nsIWebProgressListener::STATE_BLOCKED_MIXED_DISPLAY_CONTENT));
       }
     }
     return NS_OK;
 
   } else if (sBlockMixedScript && classification == eMixedScript) {
     // If the content is active content, and the pref says active content should
     // be blocked, block it unless the user has choosen to override the pref
     if (allowMixedContent) {
@@ -1044,30 +1035,29 @@ nsresult nsMixedContentBlocker::ShouldLo
 
         // If mixed display content is loaded, make sure to include that in the
         // state.
         if (rootDoc->GetHasMixedDisplayContentLoaded()) {
           state |= nsIWebProgressListener::STATE_LOADED_MIXED_DISPLAY_CONTENT;
         }
 
         eventSink->OnSecurityChange(
-            aRequestingContext, state,
-            (state | nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT),
-            contentBlockingLog);
+            aRequestingContext,
+            (state |
+             nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT));
 
         return NS_OK;
       } else {
         // User has already overriden the pref and the root is not https;
         // mixed active content was allowed on an https subframe.
         if (NS_SUCCEEDED(stateRV)) {
           eventSink->OnSecurityChange(
-              aRequestingContext, state,
+              aRequestingContext,
               (state |
-               nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT),
-              contentBlockingLog);
+               nsIWebProgressListener::STATE_LOADED_MIXED_ACTIVE_CONTENT));
         }
         return NS_OK;
       }
     } else {
       // User has not overriden the pref by Disabling protection. Reject the
       // request and update the security state.
       *aDecision = nsIContentPolicy::REJECT_REQUEST;
       LogMixedContentMessage(classification, aContentLocation, rootDoc,
@@ -1078,20 +1068,19 @@ nsresult nsMixedContentBlocker::ShouldLo
         return NS_OK;
       }
       rootDoc->SetHasMixedActiveContentBlocked(true);
 
       // The user has not overriden the pref, so make sure they still have an
       // option by calling eventSink which will invoke the doorhanger
       if (NS_SUCCEEDED(stateRV)) {
         eventSink->OnSecurityChange(
-            aRequestingContext, state,
+            aRequestingContext,
             (state |
-             nsIWebProgressListener::STATE_BLOCKED_MIXED_ACTIVE_CONTENT),
-            contentBlockingLog);
+             nsIWebProgressListener::STATE_BLOCKED_MIXED_ACTIVE_CONTENT));
       }
       return NS_OK;
     }
   } else {
     // The content is not blocked by the mixed content prefs.
 
     // Log a message that we are loading mixed content.
     LogMixedContentMessage(classification, aContentLocation, rootDoc,
--- a/editor/composer/nsEditingSession.cpp
+++ b/editor/composer/nsEditingSession.cpp
@@ -782,19 +782,17 @@ nsEditingSession::OnStatusChange(nsIWebP
 
 /*---------------------------------------------------------------------------
 
   OnSecurityChange
 
 ----------------------------------------------------------------------------*/
 NS_IMETHODIMP
 nsEditingSession::OnSecurityChange(nsIWebProgress* aWebProgress,
-                                   nsIRequest* aRequest, uint32_t aOldState,
-                                   uint32_t aState,
-                                   const nsAString& aContentBlockingLogJSON) {
+                                   nsIRequest* aRequest, uint32_t state) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 /*---------------------------------------------------------------------------
 
   IsProgressForTargetDocument
 
--- a/editor/composer/test/test_bug434998.xul
+++ b/editor/composer/test/test_bug434998.xul
@@ -82,18 +82,17 @@ https://bugzilla.mozilla.org/show_bug.cg
     onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags)
     {
     },
 
     onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage)
     {
     },
 
-    onSecurityChange : function(aWebProgress, aRequest, aOldState, aState,
-                                aContentBlockingLogJSON)
+    onSecurityChange : function(aWebProgress, aRequest, aState)
     {
     },
 
     mEditor: null
   };
 
   var progress, progressListener;
 
--- a/editor/libeditor/tests/test_bug607584.xul
+++ b/editor/libeditor/tests/test_bug607584.xul
@@ -88,18 +88,17 @@ https://bugzilla.mozilla.org/show_bug.cg
     onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags)
       {
       },
   
     onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage)
       {
       },
   
-    onSecurityChange : function(aWebProgress, aRequest, aOldState, aState,
-                                aContentBlockingLogJSON)
+    onSecurityChange : function(aWebProgress, aRequest, aState)
       {
       },
   
       mEditor: null
   };
 
   var progress, progressListener;
 
--- a/editor/libeditor/tests/test_bug616590.xul
+++ b/editor/libeditor/tests/test_bug616590.xul
@@ -77,18 +77,17 @@ https://bugzilla.mozilla.org/show_bug.cg
     onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags)
     {
     },
 
     onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage)
     {
     },
 
-    onSecurityChange : function(aWebProgress, aRequest, aOldState, aState,
-                                aContentBlockingLogJSON)
+    onSecurityChange : function(aWebProgress, aRequest, aState)
     {
     },
 
     mEditor: null
   };
 
   var progress, progressListener;
 
--- a/editor/libeditor/tests/test_bug780908.xul
+++ b/editor/libeditor/tests/test_bug780908.xul
@@ -86,18 +86,17 @@ adapted from test_bug607584.xul by Kent 
     onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags)
       {
       },
   
     onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage)
       {
       },
   
-    onSecurityChange : function(aWebProgress, aRequest, aOldState, aState,
-                                aContentBlockingLogJSON)
+    onSecurityChange : function(aWebProgress, aRequest, aState)
       {
       },
   
       mEditor: null
   };
 
   var progress, progressListener;
 
--- a/layout/base/tests/chrome/printpreview_bug396024_helper.xul
+++ b/layout/base/tests/chrome/printpreview_bug396024_helper.xul
@@ -18,18 +18,17 @@ var SimpleTest = window.opener.wrappedJS
 var gWbp;
 function printpreview() {
   gWbp = window.frames[1].docShell.printPreview;
   var listener = {
     onLocationChange: function(webProgress, request, location, flags) { },
     onProgressChange: function(webProgress, request, curSelfProgress, 
                                maxSelfProgress, curTotalProgress,
                                maxTotalProgress) { },
-    onSecurityChange: function(webProgress, request, oldState, state,
-                               contentBlockingLogJSON) { },
+    onSecurityChange: function(webProgress, request, state) { },
     onStateChange: function(webProgress, request, stateFlags, status) { },
     onStatusChange: function(webProgress, request, status, message) { },
     QueryInterface: function(iid) {
       if (iid.equals(Ci.nsIWebProgressListener) ||
           iid.equals(Ci.nsISupportsWeakReference))
             return this;
       throw Cr.NS_NOINTERFACE;
     }
--- a/layout/base/tests/chrome/printpreview_bug482976_helper.xul
+++ b/layout/base/tests/chrome/printpreview_bug482976_helper.xul
@@ -18,18 +18,17 @@ var SimpleTest = window.opener.wrappedJS
 var gWbp;
 function printpreview() {
   gWbp = window.frames[1].docShell.printPreview;
   var listener = {
     onLocationChange: function(webProgress, request, location, flags) { },
     onProgressChange: function(webProgress, request, curSelfProgress, 
                                maxSelfProgress, curTotalProgress,
                                maxTotalProgress) { },
-    onSecurityChange: function(webProgress, request, oldState, state,
-                               contentBlockingLogJSON) { },
+    onSecurityChange: function(webProgress, request, state) { },
     onStateChange: function(webProgress, request, stateFlags, status) { },
     onStatusChange: function(webProgress, request, status, message) { },
     QueryInterface: function(iid) {
       if (iid.equals(Ci.nsIWebProgessListener) ||
           iid.equals(Ci.nsISupportsWeakReference))
             return this;
       throw Cr.NS_NOINTERFACE;
     }
--- a/layout/base/tests/chrome/printpreview_helper.xul
+++ b/layout/base/tests/chrome/printpreview_helper.xul
@@ -25,18 +25,17 @@ filePath = file.path;
 
 function printpreview() {
   gWbp = window.frames[1].docShell.printPreview;
   var listener = {
     onLocationChange: function(webProgress, request, location, flags) { },
     onProgressChange: function(webProgress, request, curSelfProgress, 
                                maxSelfProgress, curTotalProgress,
                                maxTotalProgress) { },
-    onSecurityChange: function(webProgress, request, oldState, state,
-                               contentBlockingLogJSON) { },
+    onSecurityChange: function(webProgress, request, state) { },
     onStateChange: function(webProgress, request, stateFlags, status) { },
     onStatusChange: function(webProgress, request, status, message) { },
     QueryInterface: function(iid) {
       if (iid.equals(Ci.nsIWebProgressListener) ||
           iid.equals(Ci.nsISupportsWeakReference))
             return this;
       throw Cr.NS_NOINTERFACE;
     }
--- a/layout/printing/ipc/RemotePrintJobChild.cpp
+++ b/layout/printing/ipc/RemotePrintJobChild.cpp
@@ -134,19 +134,18 @@ RemotePrintJobChild::OnStatusChange(nsIW
   if (NS_SUCCEEDED(mInitializationResult) && !mDestroyed) {
     Unused << SendStatusChange(aStatus);
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
-RemotePrintJobChild::OnSecurityChange(
-    nsIWebProgress* aProgress, nsIRequest* aRequest, uint32_t aState,
-    uint32_t aOldState, const nsAString& aContentBlockingLogJSON) {
+RemotePrintJobChild::OnSecurityChange(nsIWebProgress* aProgress,
+                                      nsIRequest* aRequest, uint32_t aState) {
   return NS_OK;
 }
 
 // End of nsIWebProgressListener
 
 RemotePrintJobChild::~RemotePrintJobChild() {}
 
 void RemotePrintJobChild::ActorDestroy(ActorDestroyReason aWhy) {
--- a/layout/printing/nsPrintJob.cpp
+++ b/layout/printing/nsPrintJob.cpp
@@ -2013,18 +2013,17 @@ NS_IMETHODIMP
 nsPrintJob::OnStatusChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
                            nsresult aStatus, const char16_t* aMessage) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsPrintJob::OnSecurityChange(nsIWebProgress* aWebProgress, nsIRequest* aRequest,
-                             uint32_t aState, uint32_t aOldState,
-                             const nsAString& aContentBlockingLogJSON) {
+                             uint32_t aState) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 //-------------------------------------------------------
 
 void nsPrintJob::UpdateZoomRatio(nsPrintObject* aPO, bool aSetPixelScale) {
   // Here is where we set the shrinkage value into the DC
--- a/layout/tools/layout-debug/ui/content/layoutdebug.js
+++ b/layout/tools/layout-debug/ui/content/layoutdebug.js
@@ -72,18 +72,17 @@ nsLDBBrowserContentListener.prototype = 
       this.setButtonEnabled(this.mBackButton, gBrowser.canGoBack);
     },
 
   onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage)
     {
       this.mStatusText.value = aMessage;
     },
 
-  onSecurityChange : function(aWebProgress, aRequest, aOldState, aState,
-                              aContentBlockingLogJSON)
+  onSecurityChange : function(aWebProgress, aRequest, aState)
     {
     },
 
   // non-interface methods
   setButtonEnabled : function(aButtonElement, aEnabled)
     {
       if (aEnabled)
         aButtonElement.removeAttribute("disabled");
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -4720,18 +4720,17 @@ Tab.prototype = {
       Services.obs.notifyObservers(this.browser, "Session:NotifyLocationChange");
     }
   },
 
   // Properties used to cache security state used to update the UI
   _state: null,
   _hostChanged: false, // onLocationChange will flip this bit
 
-  onSecurityChange: function(aWebProgress, aRequest, aOldState, aState,
-                             aContentBlockingLogJSON) {
+  onSecurityChange: function(aWebProgress, aRequest, aState) {
     // Don't need to do anything if the data we use to update the UI hasn't changed
     if (this._state == aState && !this._hostChanged)
       return;
 
     this._state = aState;
     this._hostChanged = false;
 
     let identity = IdentityHandler.checkIdentity(aState, this.browser);
--- a/mobile/android/modules/geckoview/GeckoViewProgress.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewProgress.jsm
@@ -248,18 +248,17 @@ class GeckoViewProgress extends GeckoVie
         type: "GeckoView:PageStop",
         success: isSuccess,
       };
 
       this.eventDispatcher.sendRequest(message);
     }
   }
 
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {
+  onSecurityChange(aWebProgress, aRequest, aState) {
     debug `onSecurityChange`;
 
     // Don't need to do anything if the data we use to update the UI hasn't changed
     if (this._state === aState && !this._hostChanged) {
       return;
     }
 
     this._state = aState;
--- a/mobile/android/modules/geckoview/GeckoViewTrackingProtection.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewTrackingProtection.jsm
@@ -15,18 +15,17 @@ class GeckoViewTrackingProtection extend
     const flags = Ci.nsIWebProgress.NOTIFY_SECURITY;
     this.progressFilter =
       Cc["@mozilla.org/appshell/component/browser-status-filter;1"]
       .createInstance(Ci.nsIWebProgress);
     this.progressFilter.addProgressListener(this, flags);
     this.browser.addProgressListener(this.progressFilter, flags);
   }
 
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {
+  onSecurityChange(aWebProgress, aRequest, aState) {
     debug `onSecurityChange`;
 
     if (!(aState & Ci.nsIWebProgressListener.STATE_BLOCKED_TRACKING_CONTENT) ||
         !aRequest || !(aRequest instanceof Ci.nsIClassifiedChannel)) {
       return;
     }
 
     let channel = aRequest.QueryInterface(Ci.nsIChannel);
--- a/netwerk/base/nsISecureBrowserUI.idl
+++ b/netwerk/base/nsISecureBrowserUI.idl
@@ -9,40 +9,15 @@
 interface nsIDocShell;
 interface nsITransportSecurityInfo;
 
 [scriptable, uuid(718c662a-f810-4a80-a6c9-0b1810ecade2)]
 interface nsISecureBrowserUI : nsISupports
 {
     void init(in nsIDocShell docShell);
 
-    // A value composed of the Security State Flags and the Security
-    // Strength Flags defined in nsIWebProgressListener.
-    // Any undefined bits are reserved for future use.
-    // This represents the security state before the change.
-    readonly attribute unsigned long oldState;
-    // A value composed of the Security State Flags and the Security
-    // Strength Flags defined in nsIWebProgressListener.
-    // Any undefined bits are reserved for future use.
-    // This represents the security state after the change.
     readonly attribute unsigned long state;
-    // An optional JSON string representing a log of the content blocking
-    // events happened so far.  This will be a JSON object containing keys
-    // representing origins that content blocking has acted on, with values
-    // being an array of items, each representing one action.  Each action
-    // itself is an an array containing three elements, the first element
-    // being a blocking code from one of the Security State Flags above, and
-    // the second element being a boolean representing whether the origin
-    // was blocked (if true) or unblocked (if false) in that category, and
-    // the third element being the number of times that combination has been
-    // repeated consecutively.
-    // The reason JSON strings was chosen here was that we needed a format
-    // that is transferrable across processes in JS; and also the consumer
-    // of this data (browser-contentblocking.js) would be able to use the
-    // JSON.parse() API to parse out an object representation of the value.
-    readonly attribute AString contentBlockingLogJSON;
-    // Information about the connection security.
     readonly attribute nsITransportSecurityInfo secInfo;
 };
 
 %{C++
 #define NS_SECURE_BROWSER_UI_CONTRACTID "@mozilla.org/secure_browser_ui;1"
 %}
--- a/netwerk/base/nsISecurityEventSink.idl
+++ b/netwerk/base/nsISecurityEventSink.idl
@@ -1,39 +1,26 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
 /* 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/. */
 
 #include "nsISupports.idl"
-
-%{ C++
-namespace mozilla {
-namespace dom {
-class ContentBlockingLog;
-}
-}
-%}
-
-[ptr] native ContentBlockingLog(mozilla::dom::ContentBlockingLog);
+interface nsIURI;
 
 [builtinclass, uuid(a71aee68-dd38-4736-bd79-035fea1a1ec6)]
 interface nsISecurityEventSink : nsISupports
 {
 
     /**
       * Fired when a security change occurs due to page transitions,
       * or end document load. This interface should be called by
       * a security package (eg Netscape Personal Security Manager)
       * to notify nsIWebProgressListeners that security state has
       * changed. State flags are in nsIWebProgressListener.idl
-      * The old state flags before the change must also be passed in.
-      * cbLog represents the log of the content blocking actions on
-      * the page so far.
       */
 
-    void onSecurityChange(in nsISupports i_Context, in unsigned long oldState,
-                          in unsigned long state, in ContentBlockingLog cbLog);
+    void onSecurityChange(in nsISupports i_Context, in unsigned long state);
 };
 
 
 
 
--- a/security/manager/ssl/nsSecureBrowserUIImpl.cpp
+++ b/security/manager/ssl/nsSecureBrowserUIImpl.cpp
@@ -16,17 +16,17 @@
 #include "nsISecurityEventSink.h"
 #include "nsITransportSecurityInfo.h"
 #include "nsIWebProgress.h"
 
 using namespace mozilla;
 
 LazyLogModule gSecureBrowserUILog("nsSecureBrowserUI");
 
-nsSecureBrowserUIImpl::nsSecureBrowserUIImpl() : mOldState(0), mState(0) {
+nsSecureBrowserUIImpl::nsSecureBrowserUIImpl() : mState(0) {
   MOZ_ASSERT(NS_IsMainThread());
 }
 
 NS_IMPL_ISUPPORTS(nsSecureBrowserUIImpl, nsISecureBrowserUI,
                   nsIWebProgressListener, nsISupportsWeakReference)
 
 NS_IMETHODIMP
 nsSecureBrowserUIImpl::Init(nsIDocShell* aDocShell) {
@@ -53,67 +53,32 @@ nsSecureBrowserUIImpl::Init(nsIDocShell*
   if (NS_FAILED(rv)) {
     return rv;
   }
 
   return wp->AddProgressListener(this, nsIWebProgress::NOTIFY_LOCATION);
 }
 
 NS_IMETHODIMP
-nsSecureBrowserUIImpl::GetOldState(uint32_t* aOldState) {
-  MOZ_ASSERT(NS_IsMainThread());
-  NS_ENSURE_ARG(aOldState);
-
-  MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, ("GetOldState %p", this));
-  // Only sync our state with the docshell in GetState().
-  MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, ("  mOldState: %x", mOldState));
-
-  *aOldState = mOldState;
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsSecureBrowserUIImpl::GetState(uint32_t* aState) {
   MOZ_ASSERT(NS_IsMainThread());
   NS_ENSURE_ARG(aState);
 
   MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, ("GetState %p", this));
   // With respect to mixed content and tracking protection, we won't know when
   // the state of our document (or a subdocument) has changed, so we ask the
   // docShell.
   CheckForBlockedContent();
   MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug, ("  mState: %x", mState));
 
   *aState = mState;
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsSecureBrowserUIImpl::GetContentBlockingLogJSON(
-    nsAString& aContentBlockingLogJSON) {
-  MOZ_ASSERT(NS_IsMainThread());
-
-  MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug,
-          ("GetContentBlockingLogJSON %p", this));
-  aContentBlockingLogJSON.Truncate();
-  nsCOMPtr<nsIDocShell> docShell = do_QueryReferent(mDocShell);
-  if (docShell) {
-    nsIDocument* doc = docShell->GetDocument();
-    if (doc) {
-      aContentBlockingLogJSON = doc->GetContentBlockingLog()->Stringify();
-    }
-  }
-  MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug,
-          ("  ContentBlockingLogJSON: %s",
-           NS_ConvertUTF16toUTF8(aContentBlockingLogJSON).get()));
-
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsSecureBrowserUIImpl::GetSecInfo(nsITransportSecurityInfo** result) {
   MOZ_ASSERT(NS_IsMainThread());
   NS_ENSURE_ARG_POINTER(result);
 
   *result = mTopLevelSecurityInfo;
   NS_IF_ADDREF(*result);
 
   return NS_OK;
@@ -137,18 +102,16 @@ void nsSecureBrowserUIImpl::CheckForBloc
         sameTypeRoot,
         "No document shell root tree item from document shell tree item!");
     docShell = do_QueryInterface(sameTypeRoot);
     if (!docShell) {
       return;
     }
   }
 
-  mOldState = mState;
-
   // Has mixed content been loaded or blocked in nsMixedContentBlocker?
   // This only applies to secure documents even if they're affected by mixed
   // content blocking in which case the STATE_IS_BROKEN bit would be set rather
   // than STATE_IS_SECURE.
   if (((mState & STATE_IS_SECURE) != 0) || ((mState & STATE_IS_BROKEN) != 0)) {
     if (docShell->GetHasMixedActiveContentLoaded()) {
       mState |= STATE_IS_BROKEN | STATE_LOADED_MIXED_ACTIVE_CONTENT;
       mState &= ~STATE_IS_SECURE;
@@ -383,17 +346,16 @@ nsSecureBrowserUIImpl::OnLocationChange(
   }
 
   // If this is a same-document location change, we don't need to update our
   // state or notify anyone.
   if (aFlags & LOCATION_CHANGE_SAME_DOCUMENT) {
     return NS_OK;
   }
 
-  mOldState = 0;
   mState = 0;
   mTopLevelSecurityInfo = nullptr;
 
   if (aFlags & LOCATION_CHANGE_ERROR_PAGE) {
     mState = STATE_IS_INSECURE;
     mTopLevelSecurityInfo = nullptr;
   } else {
     // NB: aRequest may be null. It may also not be QI-able to nsIChannel.
@@ -410,31 +372,22 @@ nsSecureBrowserUIImpl::OnLocationChange(
                 ("  Failed to update security info. "
                  "Setting everything to 'not secure' to be safe."));
         mState = STATE_IS_INSECURE;
         mTopLevelSecurityInfo = nullptr;
       }
     }
   }
 
-  mozilla::dom::ContentBlockingLog* contentBlockingLog = nullptr;
   nsCOMPtr<nsIDocShell> docShell = do_QueryReferent(mDocShell);
-  if (docShell) {
-    nsIDocument* doc = docShell->GetDocument();
-    if (doc) {
-      contentBlockingLog = doc->GetContentBlockingLog();
-    }
-  }
-
   nsCOMPtr<nsISecurityEventSink> eventSink = do_QueryInterface(docShell);
   if (eventSink) {
     MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug,
             ("  calling OnSecurityChange %p %x", aRequest, mState));
-    Unused << eventSink->OnSecurityChange(aRequest, mOldState, mState,
-                                          contentBlockingLog);
+    Unused << eventSink->OnSecurityChange(aRequest, mState);
   } else {
     MOZ_LOG(gSecureBrowserUILog, LogLevel::Debug,
             ("  no docShell or couldn't QI it to nsISecurityEventSink?"));
   }
 
   return NS_OK;
 }
 
@@ -455,13 +408,12 @@ nsSecureBrowserUIImpl::OnProgressChange(
 NS_IMETHODIMP
 nsSecureBrowserUIImpl::OnStatusChange(nsIWebProgress*, nsIRequest*, nsresult,
                                       const char16_t*) {
   MOZ_ASSERT_UNREACHABLE("Should have been excluded in AddProgressListener()");
   return NS_OK;
 }
 
 nsresult nsSecureBrowserUIImpl::OnSecurityChange(nsIWebProgress*, nsIRequest*,
-                                                 uint32_t, uint32_t,
-                                                 const nsAString&) {
+                                                 uint32_t) {
   MOZ_ASSERT_UNREACHABLE("Should have been excluded in AddProgressListener()");
   return NS_OK;
 }
--- a/security/manager/ssl/nsSecureBrowserUIImpl.h
+++ b/security/manager/ssl/nsSecureBrowserUIImpl.h
@@ -29,23 +29,21 @@ class nsSecureBrowserUIImpl : public nsI
 
   NS_DECL_ISUPPORTS
   NS_DECL_NSIWEBPROGRESSLISTENER
   NS_DECL_NSISECUREBROWSERUI
 
  protected:
   virtual ~nsSecureBrowserUIImpl(){};
 
-  // Do mixed content and tracking protection checks. May update mState and
-  // mOldState.
+  // Do mixed content and tracking protection checks. May update mState.
   void CheckForBlockedContent();
   // Given some information about a request from an OnLocationChange event,
-  // update mState, mOldState and mTopLevelSecurityInfo.
+  // update mState and mTopLevelSecurityInfo.
   nsresult UpdateStateAndSecurityInfo(nsIChannel* channel, nsIURI* uri);
 
-  uint32_t mOldState;
   uint32_t mState;
   nsWeakPtr mDocShell;
   nsWeakPtr mWebProgress;
   nsCOMPtr<nsITransportSecurityInfo> mTopLevelSecurityInfo;
 };
 
 #endif  // nsSecureBrowserUIImpl_h
--- a/testing/awsy/awsy/awsy_test_case.py
+++ b/testing/awsy/awsy/awsy_test_case.py
@@ -75,36 +75,41 @@ class AwsyTestCase(MarionetteTestCase):
 
         self.logger.info("areweslimyet run by %d pages, %d iterations, %d perTabPause, %d settleWaitTime"
                          % (self._pages_to_load, self._iterations, self._perTabPause, self._settleWaitTime))
         self.reset_state()
 
     def tearDown(self):
         MarionetteTestCase.tearDown(self)
 
-        self.logger.info("processing data in %s!" % self._resultsDir)
-        perf_blob = process_perf_data.create_perf_data(
-                        self._resultsDir, self.perf_suites(),
-                        self.perf_checkpoints())
-        self.logger.info("PERFHERDER_DATA: %s" % json.dumps(perf_blob))
+        try:
+            self.logger.info("processing data in %s!" % self._resultsDir)
+            perf_blob = process_perf_data.create_perf_data(
+                            self._resultsDir, self.perf_suites(),
+                            self.perf_checkpoints())
+            self.logger.info("PERFHERDER_DATA: %s" % json.dumps(perf_blob))
 
-        perf_file = os.path.join(self._resultsDir, "perfherder_data.json")
-        with open(perf_file, 'w') as fp:
-            json.dump(perf_blob, fp, indent=2)
-        self.logger.info("Perfherder data written to %s" % perf_file)
+            perf_file = os.path.join(self._resultsDir, "perfherder_data.json")
+            with open(perf_file, 'w') as fp:
+                json.dump(perf_blob, fp, indent=2)
+            self.logger.info("Perfherder data written to %s" % perf_file)
+        except:
+            raise
+        finally:
+            # Make sure we cleanup and upload any existing files even if there
+            # were errors processing the perf data.
+            if self._dmd:
+                self.cleanup_dmd()
 
-        if self._dmd:
-            self.cleanup_dmd()
-
-        # copy it to moz upload dir if set
-        if 'MOZ_UPLOAD_DIR' in os.environ:
-            for file in os.listdir(self._resultsDir):
-                file = os.path.join(self._resultsDir, file)
-                if os.path.isfile(file):
-                    shutil.copy2(file, os.environ["MOZ_UPLOAD_DIR"])
+            # copy it to moz upload dir if set
+            if 'MOZ_UPLOAD_DIR' in os.environ:
+                for file in os.listdir(self._resultsDir):
+                    file = os.path.join(self._resultsDir, file)
+                    if os.path.isfile(file):
+                        shutil.copy2(file, os.environ["MOZ_UPLOAD_DIR"])
 
     def cleanup_dmd(self):
         """
         Handles moving DMD reports from the temp dir to our resultsDir.
         """
         from dmd import fixStackTraces
 
         # Move DMD files from temp dir to resultsDir.
deleted file mode 100644
--- a/testing/web-platform/meta/wasm/webapi/abort.any.js.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[abort.any.worker.html]
-  disabled:
-    if os == "android": https://bugzilla.mozilla.org/show_bug.cgi?id=1499003
-
-
-[abort.any.html]
--- a/toolkit/actors/PrintingChild.jsm
+++ b/toolkit/actors/PrintingChild.jsm
@@ -416,11 +416,10 @@ PrintingListener.prototype = {
       maxSelfProgress: aMaxSelfProgress,
       curTotalProgress: aCurTotalProgress,
       maxTotalProgress: aMaxTotalProgress,
     });
   },
 
   onLocationChange(aWebProgress, aRequest, aLocation, aFlags) {},
   onStatusChange(aWebProgress, aRequest, aStatus, aMessage) {},
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {},
+  onSecurityChange(aWebProgress, aRequest, aState) {},
 };
--- a/toolkit/components/antitracking/test/browser/browser_onModifyRequestNotificationForTrackingResources.js
+++ b/toolkit/components/antitracking/test/browser/browser_onModifyRequestNotificationForTrackingResources.js
@@ -12,17 +12,17 @@ ChromeUtils.import("resource://gre/modul
 
 let gExpectedResourcesSeen = 0;
 async function onModifyRequest() {
   return new Promise((resolve, reject) => {
     Services.obs.addObserver(function observer(subject, topic, data) {
       let httpChannel = subject.QueryInterface(Ci.nsIHttpChannel);
       let spec = httpChannel.URI.spec;
       info("Observed channel for " + spec);
-      if (httpChannel.URI.prePath != TEST_3RD_PARTY_DOMAIN_TP) {
+      if (httpChannel.URI.prePath + "/" != TEST_3RD_PARTY_DOMAIN_TP) {
         return;
       }
       if (spec.endsWith("empty.js")) {
         ok(true, "Correct resource observed");
         ++gExpectedResourcesSeen;
       } else if (spec.endsWith("empty.js?redirect")) {
         httpChannel.redirectTo(Services.io.newURI(spec.replace("empty.js?redirect", "head.js")));
       } else if (spec.endsWith("empty.js?redirect2")) {
--- a/toolkit/components/antitracking/test/browser/browser_subResources.js
+++ b/toolkit/components/antitracking/test/browser/browser_subResources.js
@@ -180,17 +180,17 @@ add_task(async function() {
     is(item[1], true,
        "Correct blocking status reported");
     ok(item[2] >= 1,
        "Correct repeat count reported");
   };
 
   let log = JSON.parse(await browser.getContentBlockingLog());
   for (let trackerOrigin in log) {
-    is(trackerOrigin, TEST_3RD_PARTY_DOMAIN, "Correct tracker origin must be reported");
+    is(trackerOrigin + "/", TEST_3RD_PARTY_DOMAIN, "Correct tracker origin must be reported");
     let originLog = log[trackerOrigin];
     is(originLog.length, 4, "We should have 4 entries in the compressed log");
     expectTrackerFound(originLog[0]);
     expectCookiesLoaded(originLog[1]);
     expectTrackerBlocked(originLog[2], true);
     expectTrackerBlocked(originLog[3], false);
   }
 
--- a/toolkit/components/antitracking/test/browser/head.js
+++ b/toolkit/components/antitracking/test/browser/head.js
@@ -1,20 +1,20 @@
-const TEST_DOMAIN = "http://example.net";
-const TEST_DOMAIN_2 = "http://xn--exmple-cua.test";
-const TEST_DOMAIN_3 = "https://xn--hxajbheg2az3al.xn--jxalpdlp";
-const TEST_DOMAIN_4 = "http://prefixexample.com";
-const TEST_DOMAIN_5 = "http://test";
-const TEST_DOMAIN_6 = "http://mochi.test:8888";
-const TEST_3RD_PARTY_DOMAIN = "https://tracking.example.org";
-const TEST_3RD_PARTY_DOMAIN_TP = "https://tracking.example.com";
-const TEST_4TH_PARTY_DOMAIN = "http://not-tracking.example.com";
-const TEST_ANOTHER_3RD_PARTY_DOMAIN = "https://another-tracking.example.net";
+const TEST_DOMAIN = "http://example.net/";
+const TEST_DOMAIN_2 = "http://xn--exmple-cua.test/";
+const TEST_DOMAIN_3 = "https://xn--hxajbheg2az3al.xn--jxalpdlp/";
+const TEST_DOMAIN_4 = "http://prefixexample.com/";
+const TEST_DOMAIN_5 = "http://test/";
+const TEST_DOMAIN_6 = "http://mochi.test:8888/";
+const TEST_3RD_PARTY_DOMAIN = "https://tracking.example.org/";
+const TEST_3RD_PARTY_DOMAIN_TP = "https://tracking.example.com/";
+const TEST_4TH_PARTY_DOMAIN = "http://not-tracking.example.com/";
+const TEST_ANOTHER_3RD_PARTY_DOMAIN = "https://another-tracking.example.net/";
 
-const TEST_PATH = "/browser/toolkit/components/antitracking/test/browser/";
+const TEST_PATH = "browser/toolkit/components/antitracking/test/browser/";
 
 const TEST_TOP_PAGE = TEST_DOMAIN + TEST_PATH + "page.html";
 const TEST_TOP_PAGE_2 = TEST_DOMAIN_2 + TEST_PATH + "page.html";
 const TEST_TOP_PAGE_3 = TEST_DOMAIN_3 + TEST_PATH + "page.html";
 const TEST_TOP_PAGE_4 = TEST_DOMAIN_4 + TEST_PATH + "page.html";
 const TEST_TOP_PAGE_5 = TEST_DOMAIN_5 + TEST_PATH + "page.html";
 const TEST_TOP_PAGE_6 = TEST_DOMAIN_6 + TEST_PATH + "page.html";
 const TEST_EMBEDDER_PAGE = TEST_DOMAIN + TEST_PATH + "embedder.html";
@@ -30,17 +30,17 @@ const BEHAVIOR_ACCEPT         = Ci.nsICo
 const BEHAVIOR_LIMIT_FOREIGN  = Ci.nsICookieService.BEHAVIOR_LIMIT_FOREIGN;
 const BEHAVIOR_REJECT_FOREIGN = Ci.nsICookieService.BEHAVIOR_REJECT_FOREIGN;
 const BEHAVIOR_REJECT_TRACKER = Ci.nsICookieService.BEHAVIOR_REJECT_TRACKER;
 
 var gFeatures = undefined;
 
 let {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm", {});
 
-requestLongerTimeout(5);
+requestLongerTimeout(3);
 
 this.AntiTracking = {
   runTest(name, callbackTracking, callbackNonTracking, cleanupFunction, extraPrefs,
           windowOpenTest = true, userInteractionTest = true,
           expectedBlockingNotifications = Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_TRACKER,
           runInPrivateWindow = false, iframeSandbox = null, accessRemoval = null,
           callbackAfterRemoval = null) {
     // Here we want to test that a 3rd party context is simply blocked.
@@ -225,18 +225,17 @@ this.AntiTracking = {
                                    runInPrivateWindow, iframeSandbox, extraPrefs);
         this._createCleanupTask(cleanupFunction);
       }
 
       // Phase 3: Here we want to test that a third-party context doesn't
       // get blocked with user interaction present
       if (userInteractionTest) {
         this._createUserInteractionTask(name, callbackTracking, callbackNonTracking,
-                                        runInPrivateWindow, iframeSandbox,
-                                        expectedBlockingNotifications, extraPrefs);
+                                        runInPrivateWindow, iframeSandbox, extraPrefs);
         this._createCleanupTask(cleanupFunction);
       }
     }
   },
 
   async interactWithTracker() {
     let windowClosed = new Promise(resolve => {
       Services.ww.registerNotification(function notification(aSubject, aTopic, aData) {
@@ -295,104 +294,20 @@ this.AntiTracking = {
       }
 
       await AntiTracking._setupTest(win, options.cookieBehavior,
                                     options.blockingByContentBlockingRTUI,
                                     options.extraPrefs);
 
       let cookieBlocked = 0;
       let listener = {
-        onSecurityChange(webProgress, request, oldState, state,
-                         contentBlockingLogJSON) {
+        onSecurityChange(webProgress, request, state) {
           if ((state & options.expectedBlockingNotifications)) {
             ++cookieBlocked;
           }
-          let contentBlockingLog = {};
-          try {
-            contentBlockingLog = JSON.parse(contentBlockingLogJSON);
-          } catch (e) {
-          }
-
-          let trackerInteractionHelper = false;
-          if (request) {
-            request.QueryInterface(Ci.nsIChannel);
-            trackerInteractionHelper = request.URI.spec.endsWith("?messageme");
-          }
-
-          // If this is the first cookie to be blocked, our state should have
-          // just changed, otherwise it should have previously contained one of
-          // the blocking flag too.
-          if (options.expectedBlockingNotifications && cookieBlocked &&
-              !options.allowList && !trackerInteractionHelper) {
-            if (cookieBlocked == 1) {
-              is(oldState & options.expectedBlockingNotifications, 0,
-                 "When blocking the first cookie, old state should not have had " +
-                 "one of the blocking flag bit");
-            }
-
-            for (let trackerOrigin in contentBlockingLog) {
-              is(trackerOrigin, TEST_3RD_PARTY_DOMAIN, "Correct tracker origin must be reported");
-              let originLog = contentBlockingLog[trackerOrigin];
-              if (options.expectedBlockingNotifications != Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_BY_PERMISSION)
-              ok(originLog.length > 1, "We should have at least two items in the log");
-              for (let i = 0; i < originLog.length; ++i) {
-                let item = originLog[i];
-                switch (item[0]) {
-                case Ci.nsIWebProgressListener.STATE_LOADED_TRACKING_CONTENT:
-                  is(item[1], true, "Correct blocking status reported");
-                  is(item[2], 1, "Correct repeat count reported");
-                  break;
-                case Ci.nsIWebProgressListener.STATE_BLOCKED_TRACKING_CONTENT:
-                  if (item[1]) {
-                    ok(item[2] >= 1, "Correct repeat count reported");
-                  } else {
-                    // This branch is needed here because of the tests that use the storage
-                    // access API to gain storage access.
-                    is(item[2], 1, "Correct repeat count reported");
-                  }
-                  break;
-                case Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_TRACKER:
-                  if (item[1]) {
-                    ok(item[2] >= 1, "Correct repeat count reported");
-                  } else {
-                    // This branch is needed here because of the tests that use the storage
-                    // access API to gain storage access.
-                    is(item[2], 1, "Correct repeat count reported");
-                  }
-                  break;
-                }
-              }
-            }
-            // Can't assert the number of tracker origins because we may get 0
-            // for web progress navigations coming from the window opening from
-            // storage access API tracker interaction attempts...
-          }
-          if (!options.expectedBlockingNotifications) {
-            is(oldState & Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_TRACKER, 0,
-               "When not blocking, old state should not have had the " +
-               "STATE_COOKIES_BLOCKED_TRACKER bit");
-            // Ensure that if there is something in the content blocking log, it's only
-            // STATE_LOADED_TRACKING_CONTENT notifications.
-            for (let trackerOrigin in contentBlockingLog) {
-              let originLog = contentBlockingLog[trackerOrigin];
-              for (let i = 0; i < originLog.length; ++i) {
-                let item = originLog[i];
-                switch (item[0]) {
-                case Ci.nsIWebProgressListener.STATE_LOADED_TRACKING_CONTENT:
-                  is(item[1], true, "Correct blocking status reported");
-                  ok(item[2] >= 1, "Correct repeat count reported");
-                  break;
-                case Ci.nsIWebProgressListener.STATE_COOKIES_LOADED:
-                  is(item[1], true, "Correct blocking status reported");
-                  ok(item[2] >= 1, "Correct repeat count reported");
-                  break;
-                }
-              }
-            }
-          }
         },
       };
       win.gBrowser.addProgressListener(listener);
 
       info("Creating a new tab");
       let tab = BrowserTestUtils.addTab(win.gBrowser, TEST_TOP_PAGE);
       win.gBrowser.selectedTab = tab;
 
@@ -547,68 +462,16 @@ this.AntiTracking = {
       let win = window;
       if (runInPrivateWindow) {
         win = OpenBrowserWindow({private: true});
         await TestUtils.topicObserved("browser-delayed-startup-finished");
       }
 
       await AntiTracking._setupTest(win, BEHAVIOR_REJECT_TRACKER, true, true, extraPrefs);
 
-      let cookieBlocked = 0;
-      let listener = {
-        onSecurityChange(webProgress, request, oldState, state,
-                         contentBlockingLogJSON) {
-          if (state & Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_TRACKER) {
-            ++cookieBlocked;
-          }
-          let contentBlockingLog = {};
-          try {
-            contentBlockingLog = JSON.parse(contentBlockingLogJSON);
-          } catch (e) {
-          }
-          if (cookieBlocked) {
-            for (let trackerOrigin in contentBlockingLog) {
-              is(trackerOrigin, TEST_3RD_PARTY_DOMAIN, "Correct tracker origin must be reported");
-              let originLog = contentBlockingLog[trackerOrigin];
-              ok(originLog.length >= 1, "We should have at least two items in the log");
-              for (let i = 0; i < originLog.length; ++i) {
-                let item = originLog[i];
-                switch (item[0]) {
-                case Ci.nsIWebProgressListener.STATE_LOADED_TRACKING_CONTENT:
-                  is(item[1], true, "Correct blocking status reported");
-                  ok(item[2] >= 1, "Correct repeat count reported");
-                  break;
-                case Ci.nsIWebProgressListener.STATE_BLOCKED_TRACKING_CONTENT:
-                  if (item[1]) {
-                    ok(item[2] >= 1, "Correct repeat count reported");
-                  } else {
-                    is(item[2], 1, "Correct repeat count reported");
-                  }
-                  break;
-                case Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_TRACKER:
-                  if (item[1]) {
-                    ok(item[2] >= 1, "Correct repeat count reported");
-                  } else {
-                    is(item[2], 1, "Correct repeat count reported");
-                  }
-                  break;
-                case Ci.nsIWebProgressListener.STATE_COOKIES_LOADED:
-                  is(item[1], true, "Correct blocking status reported");
-                  ok(item[2] >= 1, "Correct repeat count reported");
-                  break;
-                }
-              }
-            }
-            // Can't assert the number of tracker origins because we may get 0
-            // for web progress navigations coming from the window opening...
-          }
-        },
-      };
-      win.gBrowser.addProgressListener(listener);
-
       info("Creating a new tab");
       let tab = BrowserTestUtils.addTab(win.gBrowser, TEST_TOP_PAGE);
       win.gBrowser.selectedTab = tab;
 
       let browser = win.gBrowser.getBrowserForTab(tab);
       await BrowserTestUtils.browserLoaded(browser);
 
       let pageURL = TEST_3RD_PARTY_PAGE_WO;
@@ -654,105 +517,38 @@ this.AntiTracking = {
             ok(false, "Unknown message");
           });
 
           content.document.body.appendChild(ifr);
           ifr.src = obj.page;
         });
       });
 
-      win.gBrowser.removeProgressListener(listener);
-
       info("Removing the tab");
       BrowserTestUtils.removeTab(tab);
 
       if (runInPrivateWindow) {
         win.close();
       }
     });
   },
 
   _createUserInteractionTask(name, blockingCallback, nonBlockingCallback,
-                             runInPrivateWindow, iframeSandbox,
-                             expectedBlockingNotifications, extraPrefs) {
+                             runInPrivateWindow, iframeSandbox, extraPrefs) {
     add_task(async function() {
       info("Starting user-interaction test " + name);
 
       let win = window;
       if (runInPrivateWindow) {
         win = OpenBrowserWindow({private: true});
         await TestUtils.topicObserved("browser-delayed-startup-finished");
       }
 
       await AntiTracking._setupTest(win, BEHAVIOR_REJECT_TRACKER, true, true, extraPrefs);
 
-      let cookieBlocked = 0;
-      let listener = {
-        onSecurityChange(webProgress, request, oldState, state,
-                         contentBlockingLogJSON) {
-          if (state & expectedBlockingNotifications) {
-            ++cookieBlocked;
-          }
-          let contentBlockingLog = {};
-          try {
-            contentBlockingLog = JSON.parse(contentBlockingLogJSON);
-          } catch (e) {
-          }
-          // If this is the first cookie to be blocked, our state should have
-          // just changed, otherwise it should have previously contained one of
-          // the blocking flag bit too.
-          if (expectedBlockingNotifications && cookieBlocked) {
-            if (cookieBlocked == 1) {
-              is(oldState & expectedBlockingNotifications, 0,
-                 "When blocking the first cookie, old state should not have had " +
-                 "one of the blocking flag bit");
-            }
-
-            for (let trackerOrigin in contentBlockingLog) {
-              let originLog = contentBlockingLog[trackerOrigin];
-              ok(originLog.length >= 1, "We should have at least two items in the log");
-              for (let i = 0; i < originLog.length; ++i) {
-                let item = originLog[i];
-                switch (item[0]) {
-                case Ci.nsIWebProgressListener.STATE_LOADED_TRACKING_CONTENT:
-                  is(trackerOrigin, TEST_3RD_PARTY_DOMAIN, "Correct tracker origin must be reported");
-                  is(item[1], true, "Correct blocking status reported");
-                  ok(item[2] >= 1, "Correct repeat count reported");
-                  break;
-                case Ci.nsIWebProgressListener.STATE_BLOCKED_TRACKING_CONTENT:
-                  is(trackerOrigin, TEST_3RD_PARTY_DOMAIN, "Correct tracker origin must be reported");
-                  if (item[1]) {
-                    ok(item[2] >= 1, "Correct repeat count reported");
-                  } else {
-                    // This branch is needed here because of the tests that use the storage
-                    // access API to gain storage access.
-                    is(item[2], 1, "Correct repeat count reported");
-                  }
-                  break;
-                case Ci.nsIWebProgressListener.STATE_COOKIES_BLOCKED_TRACKER:
-                  is(trackerOrigin, TEST_3RD_PARTY_DOMAIN, "Correct tracker origin must be reported");
-                  // We can expect 1 or more repeat count whether or not blocking has happened,
-                  // so nothing to assert on item[1].
-                  ok(item[2] >= 1, "Correct repeat count reported");
-                  break;
-                case Ci.nsIWebProgressListener.STATE_COOKIES_LOADED:
-                  // The trackerOrigin here is sometimes TEST_DOMAIN, sometimes TEST_3RD_PARTY_DOMAIN.
-                  is(item[1], true, "Correct blocking status reported");
-                  ok(item[2] >= 1, "Correct repeat count reported");
-                  break;
-                }
-              }
-            }
-            // Can't assert the number of tracker origins because we may get 0
-            // for web progress navigations coming from the window opening...
-          }
-        },
-      };
-      win.gBrowser.addProgressListener(listener);
-
       info("Creating a new tab");
       let tab = BrowserTestUtils.addTab(win.gBrowser, TEST_TOP_PAGE);
       win.gBrowser.selectedTab = tab;
 
       let browser = win.gBrowser.getBrowserForTab(tab);
       await BrowserTestUtils.browserLoaded(browser);
 
       info("Creating a 3rd party content");
@@ -890,18 +686,16 @@ this.AntiTracking = {
             }
 
             ok(false, "Unknown message");
           });
           ifr.contentWindow.postMessage({ callback: obj.nonBlockingCallback }, "*");
         });
       });
 
-      win.gBrowser.removeProgressListener(listener);
-
       info("Removing the tab");
       BrowserTestUtils.removeTab(tab);
 
       if (runInPrivateWindow) {
         win.close();
       }
     });
   },
--- a/toolkit/components/browser/nsWebBrowser.cpp
+++ b/toolkit/components/browser/nsWebBrowser.cpp
@@ -706,22 +706,19 @@ nsWebBrowser::OnStatusChange(nsIWebProgr
     return mProgressListener->OnStatusChange(aWebProgress, aRequest, aStatus,
                                              aMessage);
   }
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsWebBrowser::OnSecurityChange(nsIWebProgress* aWebProgress,
-                               nsIRequest* aRequest, uint32_t aOldState,
-                               uint32_t aState,
-                               const nsAString& aContentBlockingLogJSON) {
+                               nsIRequest* aRequest, uint32_t aState) {
   if (mProgressListener) {
-    return mProgressListener->OnSecurityChange(
-        aWebProgress, aRequest, aOldState, aState, aContentBlockingLogJSON);
+    return mProgressListener->OnSecurityChange(aWebProgress, aRequest, aState);
   }
   return NS_OK;
 }
 
 //*****************************************************************************
 // nsWebBrowser::nsIWebBrowserPersist
 //*****************************************************************************
 
--- a/toolkit/components/printing/content/printPreviewProgress.js
+++ b/toolkit/components/printing/content/printPreviewProgress.js
@@ -54,18 +54,17 @@ var progressListener = {
     if (docURLStr != docURL && dialog.title != null) {
       docURL = docURLStr;
       if (docTitle == "")
         dialog.title.value = docURLStr;
     }
   },
 
   onLocationChange(aWebProgress, aRequest, aLocation, aFlags) {},
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {},
+  onSecurityChange(aWebProgress, aRequest, state) {},
 
   onStatusChange(aWebProgress, aRequest, aStatus, aMessage) {
     if (aMessage)
       dialog.title.setAttribute("value", aMessage);
   },
 
   QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener",
                                           "nsISupportsWeakReference"]),
--- a/toolkit/components/printing/content/printProgress.js
+++ b/toolkit/components/printing/content/printProgress.js
@@ -135,18 +135,17 @@ var progressListener = {
       // we can ignore this notification
     },
 
     onStatusChange(aWebProgress, aRequest, aStatus, aMessage) {
       if (aMessage != "")
         dialog.title.setAttribute("value", aMessage);
     },
 
-    onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                     aContentBlockingLogJSON) {
+    onSecurityChange(aWebProgress, aRequest, state) {
       // we can ignore this notification
     },
 
     QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener",
                                             "nsISupportsWeakReference"]),
 };
 
 function getString( stringId ) {
--- a/toolkit/components/printingui/ipc/PrintProgressDialogChild.cpp
+++ b/toolkit/components/printingui/ipc/PrintProgressDialogChild.cpp
@@ -77,19 +77,19 @@ PrintProgressDialogChild::OnLocationChan
 NS_IMETHODIMP
 PrintProgressDialogChild::OnStatusChange(nsIWebProgress* aProgress,
                                          nsIRequest* aRequest, nsresult aStatus,
                                          const char16_t* aMessage) {
   return NS_OK;
 }
 
 NS_IMETHODIMP
-PrintProgressDialogChild::OnSecurityChange(
-    nsIWebProgress* aProgress, nsIRequest* aRequest, uint32_t aOldState,
-    uint32_t aState, const nsAString& aContentBlockingLogJSON) {
+PrintProgressDialogChild::OnSecurityChange(nsIWebProgress* aProgress,
+                                           nsIRequest* aRequest,
+                                           uint32_t aState) {
   return NS_OK;
 }
 
 // nsIPrintProgressParams
 
 NS_IMETHODIMP
 PrintProgressDialogChild::GetDocTitle(nsAString& aDocTitle) {
   aDocTitle = mDocTitle;
--- a/toolkit/components/printingui/nsPrintProgress.cpp
+++ b/toolkit/components/printingui/nsPrintProgress.cpp
@@ -238,19 +238,19 @@ NS_IMETHODIMP nsPrintProgress::OnStatusC
     if (progressListener)
       progressListener->OnStatusChange(aWebProgress, aRequest, aStatus,
                                        aMessage);
   }
 
   return NS_OK;
 }
 
-NS_IMETHODIMP nsPrintProgress::OnSecurityChange(
-    nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t aOldState,
-    uint32_t aState, const nsAString &aContentBlockingLogJSON) {
+NS_IMETHODIMP nsPrintProgress::OnSecurityChange(nsIWebProgress *aWebProgress,
+                                                nsIRequest *aRequest,
+                                                uint32_t state) {
   return NS_OK;
 }
 
 nsresult nsPrintProgress::ReleaseListeners() {
   m_listenerList.Clear();
 
   return NS_OK;
 }
--- a/toolkit/components/printingui/nsPrintingPromptService.cpp
+++ b/toolkit/components/printingui/nsPrintingPromptService.cpp
@@ -198,19 +198,19 @@ nsPrintingPromptService::OnStatusChange(
     return mWebProgressListener->OnStatusChange(aWebProgress, aRequest, aStatus,
                                                 aMessage);
   }
 #endif
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsPrintingPromptService::OnSecurityChange(
-    nsIWebProgress* aWebProgress, nsIRequest* aRequest, uint32_t aOldState,
-    uint32_t aState, const nsAString& aContentBlockingLogJSON) {
+nsPrintingPromptService::OnSecurityChange(nsIWebProgress* aWebProgress,
+                                          nsIRequest* aRequest,
+                                          uint32_t state) {
 #if !defined(XP_MACOSX)
   if (mWebProgressListener) {
-    return mWebProgressListener->OnSecurityChange(
-        aWebProgress, aRequest, aOldState, aState, aContentBlockingLogJSON);
+    return mWebProgressListener->OnSecurityChange(aWebProgress, aRequest,
+                                                  state);
   }
 #endif
   return NS_OK;
 }
--- a/toolkit/components/statusfilter/nsBrowserStatusFilter.cpp
+++ b/toolkit/components/statusfilter/nsBrowserStatusFilter.cpp
@@ -229,23 +229,21 @@ nsBrowserStatusFilter::OnStatusChange(ns
   }
 
   mDelayedStatus = true;
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsBrowserStatusFilter::OnSecurityChange(
-    nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t aOldState,
-    uint32_t aState, const nsAString &aContentBlockingLogJSON) {
+nsBrowserStatusFilter::OnSecurityChange(nsIWebProgress *aWebProgress,
+                                        nsIRequest *aRequest, uint32_t aState) {
   if (!mListener) return NS_OK;
 
-  return mListener->OnSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                                     aContentBlockingLogJSON);
+  return mListener->OnSecurityChange(aWebProgress, aRequest, aState);
 }
 
 //-----------------------------------------------------------------------------
 // nsBrowserStatusFilter::nsIWebProgressListener2
 //-----------------------------------------------------------------------------
 NS_IMETHODIMP
 nsBrowserStatusFilter::OnProgressChange64(nsIWebProgress *aWebProgress,
                                           nsIRequest *aRequest,
--- a/toolkit/components/url-classifier/tests/mochitest/test_threathit_report.html
+++ b/toolkit/components/url-classifier/tests/mochitest/test_threathit_report.html
@@ -189,18 +189,17 @@ function testOnWindow(aTestData) {
 
     (async function() {
       await new Promise(rs => whenDelayedStartupFinished(win, rs));
 
       let expected;
       let browser = win.gBrowser.selectedBrowser;
       let wp = win.gBrowser.contentWindow.docShell.QueryInterface(Ci.nsIWebProgress);
       let progressListener = {
-        onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                         aContentBlockingLogJSON) {
+        onSecurityChange(aWebProgress, aRequest, aState) {
           expected = aTestData.reportUrl;
         },
         QueryInterface: ChromeUtils.generateQI(["nsISupportsWeakReference"]),
       };
       wp.addProgressListener(progressListener, wp.NOTIFY_SECURITY);
 
       await BrowserTestUtils.loadURI(browser, aTestData.url);
       await BrowserTestUtils.waitForContentEvent(browser, "DOMContentLoaded");
--- a/toolkit/locales/en-US/toolkit/about/aboutNetworking.ftl
+++ b/toolkit/locales/en-US/toolkit/about/aboutNetworking.ftl
@@ -1,61 +1,61 @@
-# 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/.
-
-title = About Networking
-warning = This is very experimental. Do not use without adult supervision.
-show-next-time-checkbox = Show this warning next time
-ok = OK
-http = HTTP
-sockets = Sockets
-dns = DNS
-websockets = WebSockets
-refresh = Refresh
-auto-refresh = Autorefresh every 3 seconds
-hostname = Hostname
-port = Port
-http2 = HTTP/2
-ssl = SSL
-active = Active
-idle = Idle
-host = Host
-tcp = TCP
-sent = Sent
-received = Received
-family = Family
-trr = TRR
-addresses = Addresses
-expires = Expires (Seconds)
-messages-sent = Messages Sent
-messages-received = Messages Received
-bytes-sent = Bytes Sent
-bytes-received = Bytes Received
-logging = Logging
-log-tutorial =
-    See <a data-l10n-name="logging">HTTP Logging</a>
-    for instructions on how to use this tool.
-current-log-file = Current Log File:
-current-log-modules = Current Log Modules:
-set-log-file = Set Log File
-set-log-modules = Set Log Modules
-start-logging = Start Logging
-stop-logging = Stop Logging
-dns-lookup = DNS Lookup
-dns-lookup-button = Resolve
-dns-domain = Domain:
-dns-lookup-table-column = IPs
-rcwn = RCWN Stats
-rcwn-status = RCWN Status
-rcwn-cache-won-count = Cache won count
-rcwn-net-won-count = Net won count
-total-network-requests = Total network request count
-rcwn-operation = Cache Operation
-rcwn-perf-open = Open
-rcwn-perf-read = Read
-rcwn-perf-write = Write
-rcwn-perf-entry-open = Entry Open
-rcwn-avg-short = Short Average
-rcwn-avg-long = Long Average
-rcwn-std-dev-long = Long Standard Deviation
-rcwn-cache-slow = Cache slow count
-rcwn-cache-not-slow = Cache not slow count
+# 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/.
+
+title = About Networking
+warning = This is very experimental. Do not use without adult supervision.
+show-next-time-checkbox = Show this warning next time
+ok = OK
+http = HTTP
+sockets = Sockets
+dns = DNS
+websockets = WebSockets
+refresh = Refresh
+auto-refresh = Autorefresh every 3 seconds
+hostname = Hostname
+port = Port
+http2 = HTTP/2
+ssl = SSL
+active = Active
+idle = Idle
+host = Host
+tcp = TCP
+sent = Sent
+received = Received
+family = Family
+trr = TRR
+addresses = Addresses
+expires = Expires (Seconds)
+messages-sent = Messages Sent
+messages-received = Messages Received
+bytes-sent = Bytes Sent
+bytes-received = Bytes Received
+logging = Logging
+log-tutorial =
+    See <a data-l10n-name="logging">HTTP Logging</a>
+    for instructions on how to use this tool.
+current-log-file = Current Log File:
+current-log-modules = Current Log Modules:
+set-log-file = Set Log File
+set-log-modules = Set Log Modules
+start-logging = Start Logging
+stop-logging = Stop Logging
+dns-lookup = DNS Lookup
+dns-lookup-button = Resolve
+dns-domain = Domain:
+dns-lookup-table-column = IPs
+rcwn = RCWN Stats
+rcwn-status = RCWN Status
+rcwn-cache-won-count = Cache won count
+rcwn-net-won-count = Net won count
+total-network-requests = Total network request count
+rcwn-operation = Cache Operation
+rcwn-perf-open = Open
+rcwn-perf-read = Read
+rcwn-perf-write = Write
+rcwn-perf-entry-open = Entry Open
+rcwn-avg-short = Short Average
+rcwn-avg-long = Long Average
+rcwn-std-dev-long = Long Standard Deviation
+rcwn-cache-slow = Cache slow count
+rcwn-cache-not-slow = Cache not slow count
--- a/toolkit/modules/RemoteSecurityUI.jsm
+++ b/toolkit/modules/RemoteSecurityUI.jsm
@@ -2,30 +2,24 @@
 // 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/.
 
 var EXPORTED_SYMBOLS = ["RemoteSecurityUI"];
 
 function RemoteSecurityUI() {
     this._secInfo = null;
-    this._oldState = 0;
     this._state = 0;
-    this._contentBlockingLogJSON = "";
 }
 
 RemoteSecurityUI.prototype = {
   QueryInterface: ChromeUtils.generateQI([Ci.nsISecureBrowserUI]),
 
   // nsISecureBrowserUI
-  get oldState() { return this._oldState; },
   get state() { return this._state; },
-  get contentBlockingLogJSON() { return this._contentBlockingLogJSON; },
   get tooltipText() { return ""; },
   get secInfo() { return this._secInfo; },
 
-  _update(aSecInfo, aOldState, aState, aContentBlockingLogJSON) {
+  _update(aSecInfo, aState) {
     this._secInfo = aSecInfo;
-    this._oldState = aOldState;
     this._state = aState;
-    this._contentBlockingLogJSON = aContentBlockingLogJSON;
   },
 };
--- a/toolkit/modules/RemoteWebProgress.jsm
+++ b/toolkit/modules/RemoteWebProgress.jsm
@@ -114,27 +114,27 @@ RemoteWebProgressManager.prototype = {
     });
   },
 
   removeProgressListener(aListener) {
     this._progressListeners =
       this._progressListeners.filter(l => l.listener != aListener);
   },
 
-  _fixSecInfo(aSecInfo) {
+  _fixSecInfoAndState(aSecInfo, aState) {
     let deserialized = null;
     if (aSecInfo) {
       let helper = Cc["@mozilla.org/network/serialization-helper;1"]
                     .getService(Ci.nsISerializationHelper);
 
       deserialized = helper.deserializeObject(aSecInfo);
       deserialized.QueryInterface(Ci.nsITransportSecurityInfo);
     }
 
-    return deserialized;
+    return [deserialized, aState];
   },
 
   setCurrentURI(aURI) {
     // This function is simpler than nsDocShell::SetCurrentURI since
     // it doesn't have to deal with child docshells.
     let remoteWebNav = this._browser._remoteWebNavigationImpl;
     remoteWebNav._currentURI = aURI;
 
@@ -239,33 +239,29 @@ RemoteWebProgressManager.prototype = {
 
       this._callProgressListeners(
         Ci.nsIWebProgress.NOTIFY_LOCATION, "onLocationChange", webProgress,
         request, location, flags
       );
       break;
 
     case "Content:SecurityChange":
-      let secInfo = this._fixSecInfo(json.secInfo);
-      let oldState = json.oldState;
-      let state = json.state;
-      let contentBlockingLogJSON = json.contentBlockingLogJSON;
+      let [secInfo, state] = this._fixSecInfoAndState(json.secInfo, json.state);
 
       if (isTopLevel) {
         // Invoking this getter triggers the generation of the underlying object,
         // which we need to access with ._securityUI, because .securityUI returns
         // a wrapper that makes _update inaccessible.
         void this._browser.securityUI;
-        this._browser._securityUI._update(secInfo, oldState, state,
-                                          contentBlockingLogJSON);
+        this._browser._securityUI._update(secInfo, state);
       }
 
       this._callProgressListeners(
         Ci.nsIWebProgress.NOTIFY_SECURITY, "onSecurityChange", webProgress,
-        request, oldState, state, contentBlockingLogJSON
+        request, state
       );
       break;
 
     case "Content:StatusChange":
       this._callProgressListeners(
         Ci.nsIWebProgress.NOTIFY_STATUS, "onStatusChange", webProgress, request,
         json.status, json.message
       );
--- a/toolkit/modules/WebProgressChild.jsm
+++ b/toolkit/modules/WebProgressChild.jsm
@@ -183,24 +183,21 @@ class WebProgressChild {
     let secInfo = this.mm.docShell.securityUI.secInfo;
     if (secInfo) {
       return serializationHelper.serializeToString(secInfo);
     }
 
     return null;
   }
 
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {
+  onSecurityChange(aWebProgress, aRequest, aState) {
     let json = this._setupJSON(aWebProgress, aRequest);
 
-    json.oldState = aOldState;
     json.state = aState;
     json.secInfo = this.getSecInfoAsString();
-    json.contentBlockingLogJSON = aContentBlockingLogJSON;
 
     json.matchedList = null;
     if (aRequest && aRequest instanceof Ci.nsIClassifiedChannel) {
       json.matchedList = aRequest.matchedList;
     }
 
     this._send("Content:SecurityChange", json);
   }
--- a/toolkit/mozapps/downloads/nsHelperAppDlg.js
+++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js
@@ -65,18 +65,17 @@ nsUnknownContentTypeDialogProgressListen
 
 
   onStateChange(aWebProgress, aRequest, aStateFlags, aStatus) {
   },
 
   onLocationChange(aWebProgress, aRequest, aLocation, aFlags) {
   },
 
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {
+  onSecurityChange(aWebProgress, aRequest, state) {
   },
 
   onRefreshAttempted(aWebProgress, aURI, aDelay, aSameURI) {
     return true;
   },
 };
 
 // /////////////////////////////////////////////////////////////////////////////
--- a/toolkit/mozapps/extensions/content/extensions.js
+++ b/toolkit/mozapps/extensions/content/extensions.js
@@ -2181,18 +2181,17 @@ var gDiscoverView = {
         (!this.homepageURL.schemeIs("https") || aLocation.schemeIs("https")))
       return;
 
     // Canceling the request will send an error to onStateChange which will show
     // the error page
     aRequest.cancel(Cr.NS_BINDING_ABORTED);
   },
 
-  onSecurityChange(aWebProgress, aRequest, aOldState, aState,
-                   aContentBlockingLogJSON) {
+  onSecurityChange(aWebProgress, aRequest, aState) {
     // Don't care about security if the page is not https
     if (!this.homepageURL.schemeIs("https"))
       return;
 
     // If the request was secure then it is ok
     if (aState & Ci.nsIWebProgressListener.STATE_IS_SECURE)
       return;
 
--- a/uriloader/base/nsDocLoader.cpp
+++ b/uriloader/base/nsDocLoader.cpp
@@ -35,17 +35,16 @@
 #include "nsIDocument.h"
 #include "nsPresContext.h"
 #include "nsIAsyncVerifyRedirectCallback.h"
 #include "nsILoadURIDelegate.h"
 #include "nsIBrowserDOMWindow.h"
 
 using mozilla::DebugOnly;
 using mozilla::LogLevel;
-using mozilla::dom::ContentBlockingLog;
 
 //
 // Log module for nsIDocumentLoader logging...
 //
 // To enable logging (see mozilla/Logging.h for full details):
 //
 //    set MOZ_LOG=DocLoader:5
 //    set MOZ_LOG_FILE=debug.log
@@ -1389,35 +1388,31 @@ NS_IMETHODIMP nsDocLoader::AsyncOnChanne
   cb->OnRedirectVerifyCallback(NS_OK);
   return NS_OK;
 }
 
 /*
  * Implementation of nsISecurityEventSink method...
  */
 
-NS_IMETHODIMP nsDocLoader::OnSecurityChange(
-    nsISupports* aContext, uint32_t aOldState, uint32_t aState,
-    ContentBlockingLog* aContentBlockingLog) {
+NS_IMETHODIMP nsDocLoader::OnSecurityChange(nsISupports* aContext,
+                                            uint32_t aState) {
   //
   // Fire progress notifications out to any registered nsIWebProgressListeners.
   //
 
   nsCOMPtr<nsIRequest> request = do_QueryInterface(aContext);
   nsIWebProgress* webProgress = static_cast<nsIWebProgress*>(this);
-  nsAutoString contentBlockingLogJSON(
-      aContentBlockingLog ? aContentBlockingLog->Stringify() : EmptyString());
 
   NOTIFY_LISTENERS(nsIWebProgress::NOTIFY_SECURITY,
-                   listener->OnSecurityChange(webProgress, request, aOldState,
-                                              aState, contentBlockingLogJSON););
+                   listener->OnSecurityChange(webProgress, request, aState););
 
   // Pass the notification up to the parent...
   if (mParent) {
-    mParent->OnSecurityChange(aContext, aOldState, aState, aContentBlockingLog);
+    mParent->OnSecurityChange(aContext, aState);
   }
   return NS_OK;
 }
 
 /*
  * Implementation of nsISupportsPriority methods...
  *
  * The priority of the DocLoader _is_ the priority of its LoadGroup.
--- a/uriloader/base/nsIWebProgressListener.idl
+++ b/uriloader/base/nsIWebProgressListener.idl
@@ -466,37 +466,20 @@ interface nsIWebProgressListener : nsISu
    * security transitions (eg HTTP -> HTTPS, HTTPS -> HTTP, FOO -> HTTPS) and
    * after document load completion.  It might also be called if an error
    * occurs during network loading.
    *
    * @param aWebProgress
    *        The nsIWebProgress instance that fired the notification.
    * @param aRequest
    *        The nsIRequest that has new security state.
-   * @param aOldState
-   *        A value composed of the Security State Flags and the Security
-   *        Strength Flags listed above.  Any undefined bits are reserved for
-   *        future use.  This represents the security state before the change.
    * @param aState
    *        A value composed of the Security State Flags and the Security
    *        Strength Flags listed above.  Any undefined bits are reserved for
-   *        future use.  This represents the security state after the change.
-   * @param aContentBlockingLog
-   *        An optional JSON string representing a log of the content blocking
-   *        events happened so far.  This will be a JSON object containing keys
-   *        representing origins that content blocking has acted on, with values
-   *        being an array of items, each representing one action.  Each action
-   *        itself is an an array containing three elements, the first element
-   *        being a blocking code from one of the Security State Flags above, and
-   *        the second element being a boolean representing whether the origin
-   *        was blocked (if true) or unblocked (if false) in that category, and
-   *        the third element being the number of times that combination has been
-   *        repeated consecutively.
+   *        future use.
    *
    * NOTE: These notifications will only occur if a security package is
    * installed.
    */
   void onSecurityChange(in nsIWebProgress aWebProgress,
                         in nsIRequest aRequest,
-                        in unsigned long aOldState,
-                        in unsigned long aState,
-                        in AString aContentBlockingLogJSON);
+                        in unsigned long aState);
 };
--- a/uriloader/prefetch/nsOfflineCacheUpdateService.cpp
+++ b/uriloader/prefetch/nsOfflineCacheUpdateService.cpp
@@ -207,19 +207,19 @@ nsOfflineCachePendingUpdate::OnStatusCha
                                             nsIRequest *aRequest,
                                             nsresult aStatus,
                                             const char16_t *aMessage) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsOfflineCachePendingUpdate::OnSecurityChange(
-    nsIWebProgress *aWebProgress, nsIRequest *aRequest, uint32_t aOldState,
-    uint32_t aState, const nsAString &aContentBlockingLogJSON) {
+nsOfflineCachePendingUpdate::OnSecurityChange(nsIWebProgress *aWebProgress,
+                                              nsIRequest *aRequest,
+                                              uint32_t state) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 //-----------------------------------------------------------------------------
 // nsOfflineCacheUpdateService::nsISupports
 //-----------------------------------------------------------------------------
 
--- a/uriloader/prefetch/nsPrefetchService.cpp
+++ b/uriloader/prefetch/nsPrefetchService.cpp
@@ -914,19 +914,17 @@ nsPrefetchService::OnStatusChange(nsIWeb
                                   nsIRequest *aRequest, nsresult aStatus,
                                   const char16_t *aMessage) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsPrefetchService::OnSecurityChange(nsIWebProgress *aWebProgress,
-                                    nsIRequest *aRequest, uint32_t aOldState,
-                                    uint32_t aState,
-                                    const nsAString &aContentBlockingLogJSON) {
+                                    nsIRequest *aRequest, uint32_t state) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 //-----------------------------------------------------------------------------
 // nsPrefetchService::nsIObserver
 //-----------------------------------------------------------------------------
 
--- a/xpcom/io/NonBlockingAsyncInputStream.cpp
+++ b/xpcom/io/NonBlockingAsyncInputStream.cpp
@@ -163,17 +163,18 @@ NonBlockingAsyncInputStream::Close() {
   return NS_OK;
 }
 
 // nsIInputStream interface
 
 NS_IMETHODIMP
 NonBlockingAsyncInputStream::Available(uint64_t* aLength) {
   nsresult rv = mInputStream->Available(aLength);
-  if (NS_WARN_IF(NS_FAILED(rv))) {
+  // Don't issue warnings for legal condition NS_BASE_STREAM_CLOSED.
+  if (rv == NS_BASE_STREAM_CLOSED || NS_WARN_IF(NS_FAILED(rv))) {
     return rv;
   }
 
   // Nothing more to read. Let's close the stream now.
   if (*aLength == 0) {
     mInputStream->Close();
     mClosed = true;
     return NS_BASE_STREAM_CLOSED;
--- a/xpfe/appshell/nsChromeTreeOwner.cpp
+++ b/xpfe/appshell/nsChromeTreeOwner.cpp
@@ -440,19 +440,17 @@ NS_IMETHODIMP
 nsChromeTreeOwner::OnStatusChange(nsIWebProgress* aWebProgress,
                                   nsIRequest* aRequest, nsresult aStatus,
                                   const char16_t* aMessage) {
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsChromeTreeOwner::OnSecurityChange(nsIWebProgress* aWebProgress,
-                                    nsIRequest* aRequest, uint32_t aOldState,
-                                    uint32_t aState,
-                                    const nsAString& aContentBlockingLogJSON) {
+                                    nsIRequest* aRequest, uint32_t state) {
   return NS_OK;
 }
 
 //*****************************************************************************
 // nsChromeTreeOwner: Helpers
 //*****************************************************************************
 
 //*****************************************************************************
--- a/xpfe/appshell/nsWebShellWindow.cpp
+++ b/xpfe/appshell/nsWebShellWindow.cpp
@@ -624,19 +624,17 @@ nsWebShellWindow::OnStatusChange(nsIWebP
                                  nsIRequest* aRequest, nsresult aStatus,
                                  const char16_t* aMessage) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsWebShellWindow::OnSecurityChange(nsIWebProgress* aWebProgress,
-                                   nsIRequest* aRequest, uint32_t aOldState,
-                                   uint32_t aState,
-                                   const nsAString& aContentBlockingLogJSON) {
+                                   nsIRequest* aRequest, uint32_t state) {
   MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
   return NS_OK;
 }
 
 /**
  * ExecuteCloseHandler - Run the close handler, if any.
  * @return true iff we found a close handler to run.
  */