Bug 587523: remove branching logic; comment fixups r=valentin
MozReview-Commit-ID: J8LGTUMehZA
--- 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);