Back out 3 changesets (bug 1042135) for robocop bustage

CLOSED TREE

Backed out changeset dffed5d2a799 (bug 1042135)
Backed out changeset b80a02b929cc (bug 1042135)
Backed out changeset 093ea94a1697 (bug 1042135)
This commit is contained in:
Phil Ringnalda 2014-10-21 23:11:11 -07:00
Родитель 4b52f9fa07
Коммит ab8d3a5d34
19 изменённых файлов: 248 добавлений и 72 удалений

Просмотреть файл

@ -1277,6 +1277,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.privacy.trackingprotection.enabled", true);
pref("services.sync.prefs.sync.security.OCSP.enabled", true);

Просмотреть файл

@ -1369,7 +1369,7 @@ BrowserGlue.prototype = {
},
_migrateUI: function BG__migrateUI() {
const UI_VERSION = 25;
const UI_VERSION = 24;
const BROWSER_DOCURL = "chrome://browser/content/browser.xul";
let currentUIVersion = 0;
try {
@ -1617,20 +1617,6 @@ BrowserGlue.prototype = {
}
}
if (currentUIVersion < 25) {
// Make sure the doNotTrack value conforms to the conversion from
// three-state to two-state. (This reverts a setting of "please track me"
// to the default "don't say anything").
try {
if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled") &&
Services.prefs.getIntPref("privacy.donottrackheader.value") != 1) {
Services.prefs.clearUserPref("privacy.donottrackheader.enabled");
Services.prefs.clearUserPref("privacy.donottrackheader.value");
}
}
catch (ex) {}
}
// Update the migration version.
Services.prefs.setIntPref("browser.migration.version", UI_VERSION);
},

Просмотреть файл

@ -162,6 +162,43 @@ var gPrivacyPane = {
document.getElementById("historyPane").selectedIndex = selectedIndex;
},
/**
* 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()
{
// XXX avoid using bindings that might not be attached, see bug 859982
let dntValue = Services.prefs.getIntPref("privacy.donottrackheader.value"),
dntEnabled = Services.prefs.getBoolPref("privacy.donottrackheader.enabled");
// if DNT is enbaled, select the value from the selected radio
// button, otherwise choose the "no preference" radio button
if (dntEnabled)
return dntValue;
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

Просмотреть файл

@ -13,6 +13,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"
@ -71,20 +74,21 @@
<!-- Tracking -->
<groupbox id="trackingGroup" data-category="panePrivacy" hidden="true" align="start">
<caption><label>&tracking.label;</label></caption>
<checkbox id="privacyDoNotTrackCheckbox"
label="&dntTrackingNotOkay.label2;"
accesskey="&dntTrackingNotOkay.accesskey;"
preference="privacy.donottrackheader.enabled"/>
<separator class="thin"/>
<vbox>
<hbox pack="end">
<spacer flex="1"/>
<radiogroup id="doNotTrackSelection" orient="vertical" align="start"
preference="privacy.donottrackheader.value"
onsynctopreference="return gPrivacyPane.setTrackingPrefs()"
onsyncfrompreference="return gPrivacyPane.getTrackingPrefs()">
<radio id="dntnotrack" value="1" label="&dntTrackingNotOkay.label2;"
accesskey="&dntTrackingNotOkay.accesskey;" />
<radio id="dntdotrack" value="0" label="&dntTrackingOkay.label2;"
accesskey="&dntTrackingOkay.accesskey;" />
<radio id="dntnopref" value="-1" label="&dntTrackingNopref.label2;"
accesskey="&dntTrackingNopref.accesskey;" />
</radiogroup>
<label class="text-link" id="doNotTrackInfo"
href="https://www.mozilla.org/dnt">
&doNotTrackInfo.label;
</label>
</hbox>
</vbox>
</groupbox>
<!-- History -->

Просмотреть файл

@ -124,6 +124,42 @@ var gPrivacyPane = {
document.getElementById("historyPane").selectedIndex = selectedIndex;
},
/**
* 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"
@ -81,19 +84,20 @@
<!-- Tracking -->
<groupbox id="trackingGroup" align="start">
<caption label="&tracking.label;"/>
<checkbox id="privacyDoNotTrackCheckbox"
label="&dntTrackingNotOkay.label2;"
accesskey="&dntTrackingNotOkay.accesskey;"
preference="privacy.donottrackheader.enabled"/>
<separator class="thin"/>
<vbox>
<hbox pack="end">
<spacer flex="1"/>
<radiogroup id="doNotTrackSelection" orient="vertical"
preference="privacy.donottrackheader.value"
onsynctopreference="return gPrivacyPane.setTrackingPrefs()"
onsyncfrompreference="return gPrivacyPane.getTrackingPrefs()">
<radio id="dntnotrack" value="1" label="&dntTrackingNotOkay.label2;"
accesskey="&dntTrackingNotOkay.accesskey;" />
<radio id="dntdotrack" value="0" label="&dntTrackingOkay.label2;"
accesskey="&dntTrackingOkay.accesskey;" />
<radio id="dntnopref" value="-1" label="&dntTrackingNopref.label2;"
accesskey="&dntTrackingNopref.accesskey;" />
</radiogroup>
<label class="text-link" id="doNotTrackInfo"
href="https://www.mozilla.org/dnt"
value="&doNotTrackInfo.label;"/>
</hbox>
</vbox>
</groupbox>

Просмотреть файл

@ -4,8 +4,12 @@
<!ENTITY tracking.label "Tracking">
<!ENTITY dntTrackingNopref.label2 "Do not tell sites anything about my tracking preferences">
<!ENTITY dntTrackingNopref.accesskey "o">
<!ENTITY dntTrackingNotOkay.label2 "Tell sites that I do not want to be tracked">
<!ENTITY dntTrackingNotOkay.accesskey "n">
<!ENTITY dntTrackingOkay.label2 "Tell sites that I want to be tracked">
<!ENTITY dntTrackingOkay.accesskey "h">
<!ENTITY trackingProtection.label "Prevent sites from tracking me">
<!ENTITY trackingProtection.accesskey "m">
<!ENTITY trackingProtectionLearnMore.label "Learn more">

Просмотреть файл

@ -137,7 +137,8 @@ let DirectoryLinksProvider = {
let enhanced = true;
try {
// Default to not enhanced if DNT is set to tell websites to not track
if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled")) {
if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled") &&
Services.prefs.getIntPref("privacy.donottrackheader.value") == 1) {
enhanced = false;
}
}

Просмотреть файл

@ -614,14 +614,19 @@ add_task(function test_DirectoryLinksProvider_setDefaultEnhanced() {
do_check_eq(Services.prefs.getBoolPref(kNewtabEnhancedPref), expected);
}
// Use the default donottrack prefs (enabled = false)
// Use the default donottrack prefs (enabled = false, value = 1)
Services.prefs.clearUserPref("privacy.donottrackheader.enabled");
Services.prefs.clearUserPref("privacy.donottrackheader.value");
checkDefault(true);
// Turn on DNT - no track
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", true);
checkDefault(false);
// Set DNT - do track
Services.prefs.setIntPref("privacy.donottrackheader.value", 0);
checkDefault(true);
// Turn off DNT header
Services.prefs.clearUserPref("privacy.donottrackheader.enabled");
checkDefault(true);

Просмотреть файл

@ -112,6 +112,7 @@ namespace mozilla {
namespace dom {
static bool sDoNotTrackEnabled = false;
static uint32_t sDoNotTrackValue = 1;
static bool sVibratorEnabled = false;
static uint32_t sMaxVibrateMS = 0;
static uint32_t sMaxVibrateListLen = 0;
@ -123,6 +124,9 @@ Navigator::Init()
Preferences::AddBoolVarCache(&sDoNotTrackEnabled,
"privacy.donottrackheader.enabled",
false);
Preferences::AddUintVarCache(&sDoNotTrackValue,
"privacy.donottrackheader.value",
1);
Preferences::AddBoolVarCache(&sVibratorEnabled,
"dom.vibrator.enabled", true);
Preferences::AddUintVarCache(&sMaxVibrateMS,
@ -624,7 +628,11 @@ NS_IMETHODIMP
Navigator::GetDoNotTrack(nsAString &aResult)
{
if (sDoNotTrackEnabled) {
if (sDoNotTrackValue == 0) {
aResult.AssignLiteral("0");
} else {
aResult.AssignLiteral("1");
}
} else {
aResult.AssignLiteral("unspecified");
}

Просмотреть файл

@ -14,6 +14,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=629535
<script type="application/javascript">
const dntPref = 'privacy.donottrackheader.enabled';
const dntValuePref = 'privacy.donottrackheader.value';
SimpleTest.waitForExplicitFinish();
@ -38,6 +39,8 @@ tests.push(function testDefaultValues() {
'DNT should be disabled by default');
is(navigator.doNotTrack, 'unspecified',
'navigator.doNotTrack should initially be "unspecified".');
is(SpecialPowers.getIntPref(dntValuePref), isB2G ? -1 : 1,
'DNT value should be "1" by default');
nextTest();
});
@ -56,6 +59,34 @@ tests.push(function setEnabled() {
});
});
tests.push(function clearedValue() {
SpecialPowers.pushPrefEnv({"clear": [[dntValuePref]]}, function() {
is(navigator.doNotTrack, "1", 'after clearing value pref');
nextTest();
});
});
tests.push(function setValue0() {
SpecialPowers.pushPrefEnv({"set": [[dntValuePref, 0]]}, function() {
is(navigator.doNotTrack, "0", 'after setting value pref');
nextTest();
});
});
tests.push(function setValue42() {
SpecialPowers.pushPrefEnv({"set": [[dntValuePref, 42]]}, function() {
is(navigator.doNotTrack, "1", 'after setting value pref');
nextTest();
});
});
tests.push(function clearValueAgain() {
SpecialPowers.pushPrefEnv({"clear": [[dntValuePref]]}, function() {
is(navigator.doNotTrack, "1", 'after clearing value pref');
nextTest();
});
});
tests.push(function setDisabled() {
SpecialPowers.pushPrefEnv({"set": [[dntPref, false]]}, function() {
is(navigator.doNotTrack, "unspecified", 'after setting pref to false');

Просмотреть файл

@ -172,8 +172,10 @@
<!ENTITY pref_cookies_not_accept_foreign "Enabled, excluding 3rd party">
<!ENTITY pref_cookies_disabled "Disabled">
<!ENTITY pref_donottrack_title "Do not track">
<!ENTITY pref_donottrack_summary "&brandShortName; will tell sites that you do not want to be tracked">
<!ENTITY pref_donottrack_menu "Tracking">
<!ENTITY pref_donottrack_disallow_tracking "Tell sites that I do not want to be tracked">
<!ENTITY pref_donottrack_allow_tracking "Tell sites that I want to be tracked">
<!ENTITY pref_donottrack_no_pref "Do not tell sites anything about my tracking preferences">
<!ENTITY pref_char_encoding "Character encoding">
<!ENTITY pref_char_encoding_on "Show menu">

Просмотреть файл

@ -55,6 +55,16 @@
<item>1</item>
<item>2</item>
</string-array>
<string-array name="pref_donottrack_entries">
<item>@string/pref_donottrack_disallow_tracking</item>
<item>@string/pref_donottrack_allow_tracking</item>
<item>@string/pref_donottrack_no_pref</item>
</string-array>
<string-array name="pref_donottrack_values">
<item>1</item>
<item>2</item>
<item>0</item>
</string-array>
<string-array name="pref_import_android_entries">
<item>@string/bookmarks_title</item>
<item>@string/history_title</item>

Просмотреть файл

@ -8,10 +8,10 @@
android:title="@string/pref_category_privacy_short"
android:enabled="false">
<CheckBoxPreference android:key="privacy.donottrackheader.enabled"
android:title="@string/pref_donottrack_title"
android:summary="@string/pref_donottrack_summary"
android:defaultValue="false"
<ListPreference android:key="privacy.donottrackheader"
android:title="@string/pref_donottrack_menu"
android:entries="@array/pref_donottrack_entries"
android:entryValues="@array/pref_donottrack_values"
android:persistent="false" />
<ListPreference android:key="network.cookie.cookieBehavior"

Просмотреть файл

@ -181,8 +181,10 @@
<string name="pref_cookies_not_accept_foreign">&pref_cookies_not_accept_foreign;</string>
<string name="pref_cookies_disabled">&pref_cookies_disabled;</string>
<string name="pref_donottrack_title">&pref_donottrack_title;</string>
<string name="pref_donottrack_summary">&pref_donottrack_summary;</string>
<string name="pref_donottrack_menu">&pref_donottrack_menu;</string>
<string name="pref_donottrack_disallow_tracking">&pref_donottrack_disallow_tracking;</string>
<string name="pref_donottrack_allow_tracking">&pref_donottrack_allow_tracking;</string>
<string name="pref_donottrack_no_pref">&pref_donottrack_no_pref;</string>
<string name="pref_char_encoding">&pref_char_encoding;</string>
<string name="pref_char_encoding_on">&pref_char_encoding_on;</string>

Просмотреть файл

@ -198,6 +198,12 @@ const kDefaultCSSViewportHeight = 480;
const kViewportRemeasureThrottle = 500;
const kDoNotTrackPrefState = Object.freeze({
NO_PREF: "0",
DISALLOW_TRACKING: "1",
ALLOW_TRACKING: "2",
});
let Log = Cu.import("resource://gre/modules/AndroidLog.jsm", {}).AndroidLog;
// Define the "dump" function as a binding of the Log.d function so it specifies
@ -832,20 +838,6 @@ var BrowserApp = {
Services.prefs.clearUserPref("plugins.click_to_play");
}
// Migrate the "privacy.donottrackheader.value" pref. See bug 1042135.
if (Services.prefs.prefHasUserValue("privacy.donottrackheader.value")) {
// Make sure the doNotTrack value conforms to the conversion from
// three-state to two-state. (This reverts a setting of "please track me"
// to the default "don't say anything").
if (Services.prefs.getBoolPref("privacy.donottrackheader.enabled") &&
(Services.prefs.getIntPref("privacy.donottrackheader.value") != 1)) {
Services.prefs.clearUserPref("privacy.donottrackheader.enabled");
}
// This pref has been removed, so always clear it.
Services.prefs.clearUserPref("privacy.donottrackheader.value");
}
// Set the search activity default pref on app upgrade if it has not been set already.
if (this._startupStatus === "upgrade" &&
!Services.prefs.prefHasUserValue("searchActivity.default.migrated")) {
@ -1289,6 +1281,21 @@ var BrowserApp = {
case "privacy.masterpassword.enabled":
pref.type = "bool";
pref.value = MasterPassword.enabled;
prefs.push(pref);
continue;
// Handle do-not-track preference
case "privacy.donottrackheader":
pref.type = "string";
let enableDNT = Services.prefs.getBoolPref("privacy.donottrackheader.enabled");
if (!enableDNT) {
pref.value = kDoNotTrackPrefState.NO_PREF;
} else {
let dntState = Services.prefs.getIntPref("privacy.donottrackheader.value");
pref.value = (dntState === 0) ? kDoNotTrackPrefState.ALLOW_TRACKING :
kDoNotTrackPrefState.DISALLOW_TRACKING;
}
prefs.push(pref);
continue;
#ifdef MOZ_CRASHREPORTER
@ -1372,6 +1379,27 @@ var BrowserApp = {
MasterPassword.setPassword(json.value);
return;
// "privacy.donottrackheader" is not "real" pref name, it's used in the setting menu.
case "privacy.donottrackheader":
switch (json.value) {
// Don't tell anything about tracking me
case kDoNotTrackPrefState.NO_PREF:
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", false);
Services.prefs.clearUserPref("privacy.donottrackheader.value");
break;
// Accept tracking me
case kDoNotTrackPrefState.ALLOW_TRACKING:
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", true);
Services.prefs.setIntPref("privacy.donottrackheader.value", 0);
break;
// Not accept tracking me
case kDoNotTrackPrefState.DISALLOW_TRACKING:
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", true);
Services.prefs.setIntPref("privacy.donottrackheader.value", 1);
break;
}
return;
// Enabling or disabling suggestions will prevent future prompts
case SearchEngines.PREF_SUGGEST_ENABLED:
Services.prefs.setBoolPref(SearchEngines.PREF_SUGGEST_PROMPTED, true);

Просмотреть файл

@ -940,8 +940,11 @@ pref("content.sink.pending_event_mode", 0);
// 2 = openAbused
pref("privacy.popups.disable_from_plugins", 2);
// send "do not track" HTTP header, disabled by default
// "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);
// Enforce tracking protection
pref("privacy.trackingprotection.enabled", false);

Просмотреть файл

@ -83,6 +83,8 @@ extern PRThread *gSocketThread;
#define INTL_ACCEPT_LANGUAGES "intl.accept_languages"
#define BROWSER_PREF_PREFIX "browser.cache."
#define DONOTTRACK_HEADER_ENABLED "privacy.donottrackheader.enabled"
#define DONOTTRACK_HEADER_VALUE "privacy.donottrackheader.value"
#define DONOTTRACK_VALUE_UNSET 2
#define TELEMETRY_ENABLED "toolkit.telemetry.enabled"
#define ALLOW_EXPERIMENTS "network.allow-experiments"
#define SAFE_HINT_HEADER_VALUE "safeHint.enabled"
@ -173,6 +175,7 @@ nsHttpHandler::nsHttpHandler()
, mSendSecureXSiteReferrer(true)
, mEnablePersistentHttpsCaching(false)
, mDoNotTrackEnabled(false)
, mDoNotTrackValue(1)
, mSafeHintEnabled(false)
, mParentalControlEnabled(false)
, mTelemetryEnabled(false)
@ -271,6 +274,7 @@ nsHttpHandler::Init()
prefBranch->AddObserver(INTL_ACCEPT_LANGUAGES, 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);
prefBranch->AddObserver(HTTP_PREF("tcp_keepalive.short_lived_connections"), this, true);
prefBranch->AddObserver(HTTP_PREF("tcp_keepalive.long_lived_connections"), this, true);
@ -423,7 +427,8 @@ nsHttpHandler::AddStandardRequestHeaders(nsHttpHeaderArray *request)
// Add the "Do-Not-Track" header
if (mDoNotTrackEnabled) {
rv = request->SetHeader(nsHttp::DoNotTrack, NS_LITERAL_CSTRING("1"));
rv = request->SetHeader(nsHttp::DoNotTrack,
nsPrintfCString("%d", mDoNotTrackValue));
if (NS_FAILED(rv)) return rv;
}
@ -1351,6 +1356,14 @@ 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;
}
}
// Hint option
if (PREF_CHANGED(SAFE_HINT_HEADER_VALUE)) {
cVar = false;
@ -1847,9 +1860,9 @@ nsHttpHandler::Observe(nsISupports *subject,
mSessionStartTime = NowInSeconds();
if (!mDoNotTrackEnabled) {
Telemetry::Accumulate(Telemetry::DNT_USAGE, 2);
Telemetry::Accumulate(Telemetry::DNT_USAGE, DONOTTRACK_VALUE_UNSET);
} else {
Telemetry::Accumulate(Telemetry::DNT_USAGE, 1);
Telemetry::Accumulate(Telemetry::DNT_USAGE, mDoNotTrackValue);
}
} else if (!strcmp(topic, "profile-change-net-restore")) {
// initialize connection manager

Просмотреть файл

@ -450,6 +450,7 @@ private:
// For broadcasting tracking preference
bool mDoNotTrackEnabled;
uint8_t mDoNotTrackValue;
// for broadcasting safe hint;
bool mSafeHintEnabled;