From 4586a4f350dc0c41b44dce65d3684941b9424262 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Thu, 21 Feb 2019 08:28:38 +0000 Subject: [PATCH] Bug 1529248 - Clear-Site-Data header should consider executioncontexts flag only for 2xx response status, r=farre Differential Revision: https://phabricator.services.mozilla.com/D20502 --HG-- extra : moz-landing-system : lando --- .../clearsitedata/ClearSiteData.cpp | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/toolkit/components/clearsitedata/ClearSiteData.cpp b/toolkit/components/clearsitedata/ClearSiteData.cpp index a9409aa7175c..faf57d6d0538 100644 --- a/toolkit/components/clearsitedata/ClearSiteData.cpp +++ b/toolkit/components/clearsitedata/ClearSiteData.cpp @@ -179,17 +179,6 @@ void ClearSiteData::ClearDataFromChannel(nsIHttpChannel* aChannel) { nsresult rv; nsCOMPtr uri; - uint32_t status; - rv = aChannel->GetResponseStatus(&status); - if (NS_WARN_IF(NS_FAILED(rv))) { - return; - } - - // We just care about 2xx response status. - if (status < 200 || status >= 300) { - return; - } - nsIScriptSecurityManager* ssm = nsContentUtils::GetSecurityManager(); if (NS_WARN_IF(!ssm)) { return; @@ -258,9 +247,18 @@ void ClearSiteData::ClearDataFromChannel(nsIHttpChannel* aChannel) { } } + // We consider eExecutionContexts only for 2xx response status. if (flags & eExecutionContexts) { - LogOpToConsole(aChannel, uri, eExecutionContexts); - BrowsingContextsReload(holder, principal); + uint32_t status; + rv = aChannel->GetResponseStatus(&status); + if (NS_WARN_IF(NS_FAILED(rv))) { + return; + } + + if (status >= 200 && status < 300) { + LogOpToConsole(aChannel, uri, eExecutionContexts); + BrowsingContextsReload(holder, principal); + } } }