Bug 587523: remove branching logic; comment fixups r=valentin draft
authorLuke Crouch <lcrouch@mozilla.com>
Thu, 18 Jan 2018 09:57:14 -0600
changeset 722204 a8cc7e42dee28043b7884ff21973efdc8a0ac95b
parent 721674 daea9211ad97da8483ed88887b113d0e3ae8903e
child 746556 11499c60bef392d1784b4c2fc4191fe95e19e9b5
push id96086
push userbmo:lcrouch@mozilla.com
push dateThu, 18 Jan 2018 16:42:05 +0000
reviewersvalentin
bugs587523
milestone59.0a1
Bug 587523: remove branching logic; comment fixups r=valentin MozReview-Commit-ID: J8LGTUMehZA
dom/base/test/referrer_testserver.sjs
dom/fetch/FetchDriver.cpp
modules/libpref/init/all.js
netwerk/protocol/http/HttpBaseChannel.cpp
netwerk/test/unit/test_referrer.js
--- a/dom/base/test/referrer_testserver.sjs
+++ b/dom/base/test/referrer_testserver.sjs
@@ -24,17 +24,17 @@ function createTestUrl(aPolicy, aAction,
   var url = schemeTo + "://";
   url += (crossOrigin ? CROSS_ORIGIN_URL : BASE_URL);
   url +=
          "ACTION=" + aAction + "&" +
          "policy=" + aPolicy + "&" +
          "NAME=" + aName + "&" +
          "type=" + aType + "&" +
          "SCHEME_FROM=" + schemeFrom;
-  return url
+  return url;
   }
 
 // test page using iframe referrer attribute
 // if aParams are set this creates a test where the iframe url is a redirect
 function createIframeTestPageUsingRefferer(aMetaPolicy, aAttributePolicy, aNewAttributePolicy, aName, aParams,
                                            aSchemeFrom, aSchemeTo, aChangingMethod) {
   var metaString = "";
   if (aMetaPolicy) {
--- a/dom/fetch/FetchDriver.cpp
+++ b/dom/fetch/FetchDriver.cpp
@@ -561,39 +561,33 @@ FetchDriver::HttpFetch(const nsACString&
     nsAutoCString method;
     mRequest->GetMethod(method);
     rv = httpChan->SetRequestMethod(method);
     NS_ENSURE_SUCCESS(rv, rv);
 
     // Set the same headers.
     SetRequestHeaders(httpChan);
 
-    // Step 5 of
-    // https://fetch.spec.whatwg.org/#main-fetch
+    // Step 5 of https://fetch.spec.whatwg.org/#main-fetch
     // If request's referrer policy is the empty string and request's client is
     // non-null, then set request's referrer policy to request's client's
     // associated referrer policy.
     // Basically, "client" is not in our implementation, we use
     // EnvironmentReferrerPolicy of the worker or document context
     net::ReferrerPolicy net_referrerPolicy = mRequest->GetEnvironmentReferrerPolicy();
     if (mRequest->ReferrerPolicy_() == ReferrerPolicy::_empty) {
       mRequest->SetReferrerPolicy(net_referrerPolicy);
     }
-    // Step 6 of
-    // https://fetch.spec.whatwg.org/#main-fetch
+    // Step 6 of https://fetch.spec.whatwg.org/#main-fetch
     // If request’s referrer policy is the empty string,
     // then set request’s referrer policy to the user-set default policy.
     if (mRequest->ReferrerPolicy_() == ReferrerPolicy::_empty) {
       nsCOMPtr<nsILoadInfo> loadInfo = httpChan->GetLoadInfo();
-      net::ReferrerPolicy referrerPolicy;
-      if (loadInfo->GetOriginAttributes().mPrivateBrowsingId > 0){
-        referrerPolicy = static_cast<net::ReferrerPolicy>(NS_GetDefaultReferrerPolicy(true));
-      } else {
-        referrerPolicy = static_cast<net::ReferrerPolicy>(NS_GetDefaultReferrerPolicy());
-      }
+      bool isPrivate = loadInfo->GetOriginAttributes().mPrivateBrowsingId > 0;
+      net::ReferrerPolicy referrerPolicy = static_cast<net::ReferrerPolicy>(NS_GetDefaultReferrerPolicy(isPrivate));
       mRequest->SetReferrerPolicy(referrerPolicy);
     }
 
     rv = FetchUtil::SetRequestReferrer(mPrincipal,
                                        mDocument,
                                        httpChan,
                                        mRequest);
     NS_ENSURE_SUCCESS(rv, rv);
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1674,17 +1674,17 @@ pref("network.http.accept.default", "tex
 
 // Prefs allowing granular control of referers
 // 0=don't send any, 1=send only on clicks, 2=send on image requests as well
 pref("network.http.sendRefererHeader",      2);
 // Set the default Referrer Policy; to be used unless overriden by the site
 // 0=no-referrer, 1=same-origin, 2=strict-origin-when-cross-origin,
 // 3=no-referrer-when-downgrade
 pref("network.http.referer.defaultPolicy", 3);
-// Set the Private Browsing Defaul Referrer Policy;
+// Set the Private Browsing Default Referrer Policy;
 // to be used unless overriden by the site;
 // values are identical to defaultPolicy above
 pref("network.http.referer.defaultPolicy.pbmode", 2);
 // false=real referer, true=spoof referer (use target URI as referer)
 pref("network.http.referer.spoofSource", false);
 // false=allow onion referer, true=hide onion referer (use empty referer)
 pref("network.http.referer.hideOnionSource", false);
 // 0=full URI, 1=scheme+host+port+path, 2=scheme+host+port
--- a/netwerk/protocol/http/HttpBaseChannel.cpp
+++ b/netwerk/protocol/http/HttpBaseChannel.cpp
@@ -1562,20 +1562,18 @@ HttpBaseChannel::GetReferrer(nsIURI **re
   *referrer = mReferrer;
   NS_IF_ADDREF(*referrer);
   return NS_OK;
 }
 
 NS_IMETHODIMP
 HttpBaseChannel::SetReferrer(nsIURI *referrer)
 {
-  if (mLoadInfo->GetOriginAttributes().mPrivateBrowsingId > 0) {
-    return SetReferrerWithPolicy(referrer, NS_GetDefaultReferrerPolicy(true));
-  }
-  return SetReferrerWithPolicy(referrer, NS_GetDefaultReferrerPolicy());
+  bool isPrivate = mLoadInfo->GetOriginAttributes().mPrivateBrowsingId > 0;
+  return SetReferrerWithPolicy(referrer, NS_GetDefaultReferrerPolicy(isPrivate));
 }
 
 NS_IMETHODIMP
 HttpBaseChannel::GetReferrerPolicy(uint32_t *referrerPolicy)
 {
   NS_ENSURE_ARG_POINTER(referrerPolicy);
   *referrerPolicy = mReferrerPolicy;
   return NS_OK;
@@ -1622,21 +1620,18 @@ HttpBaseChannel::SetReferrerWithPolicy(n
   // clear existing referrer, if any
   mReferrer = nullptr;
   nsresult rv = mRequestHead.ClearHeader(nsHttp::Referer);
   if(NS_FAILED(rv)) {
     return rv;
   }
 
   if (mReferrerPolicy == REFERRER_POLICY_UNSET) {
-    if (mLoadInfo->GetOriginAttributes().mPrivateBrowsingId > 0) {
-      mReferrerPolicy = NS_GetDefaultReferrerPolicy(true);
-    } else {
-      mReferrerPolicy = NS_GetDefaultReferrerPolicy();
-    }
+    bool isPrivate = mLoadInfo->GetOriginAttributes().mPrivateBrowsingId > 0;
+    mReferrerPolicy = NS_GetDefaultReferrerPolicy(isPrivate);
   }
 
   if (!referrer) {
     return NS_OK;
   }
 
   // Don't send referrer at all when the meta referrer setting is "no-referrer"
   if (mReferrerPolicy == REFERRER_POLICY_NO_REFERRER) {
--- a/netwerk/test/unit/test_referrer.js
+++ b/netwerk/test/unit/test_referrer.js
@@ -57,17 +57,17 @@ function run_test() {
   Assert.equal(getTestReferrer(server_uri_https, referer_uri_https), referer_uri_https);
   Assert.equal(getTestReferrer(server_uri_https, referer_uri_2_https), "https://bar.examplesite.com/");
   Assert.equal(getTestReferrer(server_uri, referer_uri_2), referer_uri_2);
   Assert.equal(getTestReferrer(server_uri, referer_uri), "http://foo.example.com/");
   prefs.setIntPref("network.http.referer.defaultPolicy", 3);
   Assert.equal(getTestReferrer(server_uri, referer_uri), referer_uri);
   Assert.equal(null, getTestReferrer(server_uri_2, referer_uri_https));
 
-  // tests for referer.defaultPolicy
+  // tests for referer.defaultPolicy.pbmode
   prefs.setIntPref("network.http.referer.defaultPolicy.pbmode", 0);
   Assert.equal(null, getTestReferrer(server_uri, referer_uri, true));
   prefs.setIntPref("network.http.referer.defaultPolicy.pbmode", 1);
   Assert.equal(null, getTestReferrer(server_uri, referer_uri, true));
   Assert.equal(getTestReferrer(server_uri, referer_uri_2, true), referer_uri_2);
   prefs.setIntPref("network.http.referer.defaultPolicy.pbmode", 2);
   Assert.equal(null, getTestReferrer(server_uri, referer_uri_https, true));
   Assert.equal(getTestReferrer(server_uri_https, referer_uri_https, true), referer_uri_https);