mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
Bug 765398 - Add a "yes, I allow tracking" option to DNT. (r=dolske)
--HG-- extra : rebase_source : 1a0ce8dc9086dc501d9f5a183af8a5a3360ee8a9
This commit is contained in:
parent
88de345330
commit
d4170e5094
@ -1001,6 +1001,7 @@ pref("services.sync.prefs.sync.privacy.clearOnShutdown.passwords", true);
|
||||
pref("services.sync.prefs.sync.privacy.clearOnShutdown.sessions", true);
|
||||
pref("services.sync.prefs.sync.privacy.clearOnShutdown.siteSettings", true);
|
||||
pref("services.sync.prefs.sync.privacy.donottrackheader.enabled", true);
|
||||
pref("services.sync.prefs.sync.privacy.donottrackheader.value", true);
|
||||
pref("services.sync.prefs.sync.privacy.sanitize.sanitizeOnShutdown", true);
|
||||
pref("services.sync.prefs.sync.security.OCSP.disable_button.managecrl", true);
|
||||
pref("services.sync.prefs.sync.security.OCSP.enabled", true);
|
||||
|
@ -123,6 +123,56 @@ var gPrivacyPane = {
|
||||
document.getElementById("historyPane").selectedIndex = selectedIndex;
|
||||
},
|
||||
|
||||
/**
|
||||
* Open up the DNT "learn more" link.
|
||||
*/
|
||||
openTrackingInfoSite: function PPP_openTrackingInfoSite()
|
||||
{
|
||||
let thisDocEl = document.documentElement,
|
||||
openerDocEl = window.opener && window.opener.document.documentElement,
|
||||
url = "https://www.mozilla.org/dnt";
|
||||
if (thisDocEl.id == "BrowserPreferences" && !thisDocEl.instantApply)
|
||||
openUILinkIn(url, "window");
|
||||
else
|
||||
openUILinkIn(url, "tab");
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the Tracking preferences based on controls.
|
||||
*/
|
||||
setTrackingPrefs: function PPP_setTrackingPrefs()
|
||||
{
|
||||
let dntRadioGroup = document.getElementById("doNotTrackSelection"),
|
||||
dntValuePref = document.getElementById("privacy.donottrackheader.value"),
|
||||
dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled");
|
||||
|
||||
// if the selected radio button says "no preference", set on/off pref to
|
||||
// false and don't change the value pref.
|
||||
if (dntRadioGroup.selectedItem.value == -1) {
|
||||
dntEnabledPref.value = false;
|
||||
return dntValuePref.value;
|
||||
}
|
||||
|
||||
dntEnabledPref.value = true;
|
||||
return dntRadioGroup.selectedItem.value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Obtain the tracking preference value and reflect it in the UI.
|
||||
*/
|
||||
getTrackingPrefs: function PPP_getTrackingPrefs()
|
||||
{
|
||||
let dntValuePref = document.getElementById("privacy.donottrackheader.value"),
|
||||
dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled");
|
||||
|
||||
// if DNT is enbaled, select the value from the selected radio
|
||||
// button, otherwise choose the "no preference" radio button
|
||||
if (dntEnabledPref.value)
|
||||
return dntValuePref.value;
|
||||
|
||||
return document.getElementById("dntnopref").value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the private browsing auto-start pref and the history mode
|
||||
* micro-management prefs based on the history mode menulist
|
||||
|
@ -11,6 +11,9 @@
|
||||
<preference id="privacy.donottrackheader.enabled"
|
||||
name="privacy.donottrackheader.enabled"
|
||||
type="bool"/>
|
||||
<preference id="privacy.donottrackheader.value"
|
||||
name="privacy.donottrackheader.value"
|
||||
type="int"/>
|
||||
|
||||
<!-- XXX button prefs -->
|
||||
<preference id="pref.privacy.disable_button.cookie_exceptions"
|
||||
@ -79,11 +82,20 @@
|
||||
<!-- Tracking -->
|
||||
<groupbox id="trackingGroup" data-category="panePrivacy" hidden="true">
|
||||
<caption label="&tracking.label;"/>
|
||||
|
||||
<checkbox id="privacyDoNotTrackPrefs"
|
||||
label="&doNotTrack.label;"
|
||||
accesskey="&doNotTrack.accesskey;"
|
||||
preference="privacy.donottrackheader.enabled"/>
|
||||
<radiogroup id="doNotTrackSelection" orient="vertical"
|
||||
preference="privacy.donottrackheader.value"
|
||||
onsynctopreference="return gPrivacyPane.setTrackingPrefs()"
|
||||
onsyncfrompreference="return gPrivacyPane.getTrackingPrefs()">
|
||||
<radio id="dntnotrack" value="1" label="&dntTrackingNotOkay.label;"
|
||||
accesskey="&dntTrackingNotOkay.accesskey;" />
|
||||
<radio id="dntdotrack" value="0" label="&dntTrackingOkay.label;"
|
||||
accesskey="&dntTrackingOkay.accesskey;" />
|
||||
<radio id="dntnopref" value="-1" label="&dntTrackingNopref.label;"
|
||||
accesskey="&dntTrackingNopref.accesskey;" />
|
||||
</radiogroup>
|
||||
<label class="text-link" id="doNotTrackInfo"
|
||||
onclick="event.stopPropagation();gPrivacyPane.openTrackingInfoSite();"
|
||||
value="&doNotTrackInfo.label;"/>
|
||||
</groupbox>
|
||||
|
||||
<!-- History -->
|
||||
|
@ -126,6 +126,56 @@ var gPrivacyPane = {
|
||||
document.getElementById("historyPane").selectedIndex = selectedIndex;
|
||||
},
|
||||
|
||||
/**
|
||||
* Open up the DNT "learn more" link.
|
||||
*/
|
||||
openTrackingInfoSite: function PPP_openTrackingInfoSite()
|
||||
{
|
||||
let thisDocEl = document.documentElement,
|
||||
openerDocEl = window.opener && window.opener.document.documentElement,
|
||||
url = "https://www.mozilla.org/dnt";
|
||||
if (thisDocEl.id == "BrowserPreferences" && !thisDocEl.instantApply)
|
||||
openUILinkIn(url, "window");
|
||||
else
|
||||
openUILinkIn(url, "tab");
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the Tracking preferences based on controls.
|
||||
*/
|
||||
setTrackingPrefs: function PPP_setTrackingPrefs()
|
||||
{
|
||||
let dntRadioGroup = document.getElementById("doNotTrackSelection"),
|
||||
dntValuePref = document.getElementById("privacy.donottrackheader.value"),
|
||||
dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled");
|
||||
|
||||
// if the selected radio button says "no preference", set on/off pref to
|
||||
// false and don't change the value pref.
|
||||
if (dntRadioGroup.selectedItem.value == -1) {
|
||||
dntEnabledPref.value = false;
|
||||
return dntValuePref.value;
|
||||
}
|
||||
|
||||
dntEnabledPref.value = true;
|
||||
return dntRadioGroup.selectedItem.value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Obtain the tracking preference value and reflect it in the UI.
|
||||
*/
|
||||
getTrackingPrefs: function PPP_getTrackingPrefs()
|
||||
{
|
||||
let dntValuePref = document.getElementById("privacy.donottrackheader.value"),
|
||||
dntEnabledPref = document.getElementById("privacy.donottrackheader.enabled");
|
||||
|
||||
// if DNT is enbaled, select the value from the selected radio
|
||||
// button, otherwise choose the "no preference" radio button
|
||||
if (dntEnabledPref.value)
|
||||
return dntValuePref.value;
|
||||
|
||||
return document.getElementById("dntnopref").value;
|
||||
},
|
||||
|
||||
/**
|
||||
* Update the private browsing auto-start pref and the history mode
|
||||
* micro-management prefs based on the history mode menulist
|
||||
|
@ -26,6 +26,9 @@
|
||||
<preference id="privacy.donottrackheader.enabled"
|
||||
name="privacy.donottrackheader.enabled"
|
||||
type="bool"/>
|
||||
<preference id="privacy.donottrackheader.value"
|
||||
name="privacy.donottrackheader.value"
|
||||
type="int"/>
|
||||
|
||||
<!-- XXX button prefs -->
|
||||
<preference id="pref.privacy.disable_button.cookie_exceptions"
|
||||
@ -90,11 +93,21 @@
|
||||
<!-- Tracking -->
|
||||
<groupbox id="trackingGroup">
|
||||
<caption label="&tracking.label;"/>
|
||||
<radiogroup id="doNotTrackSelection" orient="vertical"
|
||||
preference="privacy.donottrackheader.value"
|
||||
onsynctopreference="return gPrivacyPane.setTrackingPrefs()"
|
||||
onsyncfrompreference="return gPrivacyPane.getTrackingPrefs()">
|
||||
<radio id="dntnotrack" value="1" label="&dntTrackingNotOkay.label;"
|
||||
accesskey="&dntTrackingNotOkay.accesskey;" />
|
||||
<radio id="dntdotrack" value="0" label="&dntTrackingOkay.label;"
|
||||
accesskey="&dntTrackingOkay.accesskey;" />
|
||||
<radio id="dntnopref" value="-1" label="&dntTrackingNopref.label;"
|
||||
accesskey="&dntTrackingNopref.accesskey;" />
|
||||
</radiogroup>
|
||||
<label class="text-link" id="doNotTrackInfo"
|
||||
onclick="event.stopPropagation();gPrivacyPane.openTrackingInfoSite();"
|
||||
value="&doNotTrackInfo.label;"/>
|
||||
|
||||
<checkbox id="privacyDoNotTrackPrefs"
|
||||
label="&doNotTrack.label;"
|
||||
accesskey="&doNotTrack.accesskey;"
|
||||
preference="privacy.donottrackheader.enabled"/>
|
||||
</groupbox>
|
||||
|
||||
<!-- History -->
|
||||
|
@ -4,8 +4,13 @@
|
||||
|
||||
<!ENTITY tracking.label "Tracking">
|
||||
|
||||
<!ENTITY doNotTrack.label "Tell websites I do not want to be tracked">
|
||||
<!ENTITY doNotTrack.accesskey "d">
|
||||
<!ENTITY dntTrackingNopref.label "Do not tell sites anything about my tracking preferences.">
|
||||
<!ENTITY dntTrackingNopref.accesskey "o">
|
||||
<!ENTITY dntTrackingNotOkay.label "Tell sites that I do not want to be tracked.">
|
||||
<!ENTITY dntTrackingNotOkay.accesskey "n">
|
||||
<!ENTITY dntTrackingOkay.label "Tell sites that I want to be tracked.">
|
||||
<!ENTITY dntTrackingOkay.accesskey "t">
|
||||
<!ENTITY doNotTrackInfo.label "Learn More">
|
||||
|
||||
<!ENTITY history.label "History">
|
||||
|
||||
|
@ -545,6 +545,7 @@ pref("services.sync.prefs.sync.lightweightThemes.usedThemes", true);
|
||||
pref("services.sync.prefs.sync.network.cookie.cookieBehavior", true);
|
||||
pref("services.sync.prefs.sync.permissions.default.image", true);
|
||||
pref("services.sync.prefs.sync.privacy.donottrackheader.enabled", true);
|
||||
pref("services.sync.prefs.sync.privacy.donottrackheader.value", true);
|
||||
pref("services.sync.prefs.sync.signon.rememberSignons", true);
|
||||
#endif
|
||||
|
||||
|
@ -712,6 +712,9 @@ pref("privacy.popups.disable_from_plugins", 2);
|
||||
|
||||
// "do not track" HTTP header, disabled by default
|
||||
pref("privacy.donottrackheader.enabled", false);
|
||||
// 0 = tracking is acceptable
|
||||
// 1 = tracking is unacceptable
|
||||
pref("privacy.donottrackheader.value", 1);
|
||||
|
||||
pref("dom.event.contextmenu.enabled", true);
|
||||
pref("dom.event.clipboardevents.enabled", true);
|
||||
|
@ -86,6 +86,7 @@ static NS_DEFINE_CID(kSocketProviderServiceCID, NS_SOCKETPROVIDERSERVICE_CID);
|
||||
#define NETWORK_ENABLEIDN "network.enableIDN"
|
||||
#define BROWSER_PREF_PREFIX "browser.cache."
|
||||
#define DONOTTRACK_HEADER_ENABLED "privacy.donottrackheader.enabled"
|
||||
#define DONOTTRACK_HEADER_VALUE "privacy.donottrackheader.value"
|
||||
#ifdef MOZ_TELEMETRY_ON_BY_DEFAULT
|
||||
#define TELEMETRY_ENABLED "toolkit.telemetry.enabledPreRelease"
|
||||
#else
|
||||
@ -170,6 +171,7 @@ nsHttpHandler::nsHttpHandler()
|
||||
, mSendSecureXSiteReferrer(true)
|
||||
, mEnablePersistentHttpsCaching(false)
|
||||
, mDoNotTrackEnabled(false)
|
||||
, mDoNotTrackValue(1)
|
||||
, mTelemetryEnabled(false)
|
||||
, mAllowExperiments(true)
|
||||
, mHandlerActive(false)
|
||||
@ -249,6 +251,7 @@ nsHttpHandler::Init()
|
||||
prefBranch->AddObserver(NETWORK_ENABLEIDN, this, true);
|
||||
prefBranch->AddObserver(BROWSER_PREF("disk_cache_ssl"), this, true);
|
||||
prefBranch->AddObserver(DONOTTRACK_HEADER_ENABLED, this, true);
|
||||
prefBranch->AddObserver(DONOTTRACK_HEADER_VALUE, this, true);
|
||||
prefBranch->AddObserver(TELEMETRY_ENABLED, this, true);
|
||||
|
||||
PrefsChanged(prefBranch, nullptr);
|
||||
@ -381,7 +384,7 @@ nsHttpHandler::AddStandardRequestHeaders(nsHttpHeaderArray *request)
|
||||
// Add the "Do-Not-Track" header
|
||||
if (mDoNotTrackEnabled) {
|
||||
rv = request->SetHeader(nsHttp::DoNotTrack,
|
||||
NS_LITERAL_CSTRING("1"));
|
||||
nsPrintfCString("%d", mDoNotTrackValue));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
}
|
||||
|
||||
@ -1215,6 +1218,13 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
|
||||
mDoNotTrackEnabled = cVar;
|
||||
}
|
||||
}
|
||||
if (PREF_CHANGED(DONOTTRACK_HEADER_VALUE)) {
|
||||
val = 1;
|
||||
rv = prefs->GetIntPref(DONOTTRACK_HEADER_VALUE, &val);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
mDoNotTrackValue = val;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Telemetry
|
||||
|
@ -376,9 +376,10 @@ private:
|
||||
// Persistent HTTPS caching flag
|
||||
bool mEnablePersistentHttpsCaching;
|
||||
|
||||
// For broadcasting the preference to not be tracked
|
||||
// For broadcasting tracking preference
|
||||
bool mDoNotTrackEnabled;
|
||||
|
||||
PRUint8 mDoNotTrackValue;
|
||||
|
||||
// Whether telemetry is reported or not
|
||||
bool mTelemetryEnabled;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user