Bug 854077 - Use radio buttons for "Do Not Track" options and add a neutral option r=ally

--HG--
rename : browser/metro/base/tests/mochitest/browser_sanitize_ui.js => browser/metro/base/tests/mochitest/browser_prefs_ui.js
extra : rebase_source : 331345b81ff030f6cd6fa2f2e1bf20f276c82ce7
This commit is contained in:
Rodrigo Silveira 2013-04-13 18:21:27 -07:00
parent 93fd95ba5e
commit a090b35902
8 changed files with 84 additions and 14 deletions

View File

@ -20,8 +20,8 @@
<xul:description anonid="onlabel" class="onlabel" value="&checkbox.on.label;" xbl:inherits="value=onlabel"/>
<xul:description anonid="offlabel" class="offlabel" value="&checkbox.off.label;" xbl:inherits="value=offlabel"/>
<xul:radiogroup anonid="group" xbl:inherits="disabled">
<xul:radio anonid="on" class="checkbox-radio-on"/>
<xul:radio anonid="off" class="checkbox-radio-off"/>
<xul:radio type="toggle" anonid="on" class="checkbox-radio-on"/>
<xul:radio type="toggle" anonid="off" class="checkbox-radio-off"/>
</xul:radiogroup>
</xul:hbox>
</content>

View File

@ -118,10 +118,14 @@ placelabel {
-moz-binding: url("chrome://browser/content/bindings/bindings.xml#place-label");
}
radio {
radio[type="toggle"] {
-moz-binding: url("chrome://global/content/bindings/radio.xml#radio");
}
radiogroup {
-moz-binding: url("chrome://global/content/bindings/radio.xml#radiogroup");
}
checkbox.toggleswitch {
-moz-binding: url("chrome://browser/content/bindings/toggleswitch.xml#checkbox-toggleswitch");
}

View File

@ -461,8 +461,15 @@
</hbox>
</settings>
<setting pref="signon.rememberSignons" title="&optionsHeader.privacy.passwords.label;" type="bool"/>
<settings id="prefs-donottrack" label="&optionsHeader.privacy.doNotTrack.title;">
<setting pref="privacy.donottrackheader.enabled" title="&optionsHeader.privacy.doNotTrack.label;" type="bool"/>
<settings id="prefs-dnt" label="&doNotTrack.title;">
<description>&doNotTrack.desc;</description>
<setting id="prefs-dnt-value" pref="privacy.donottrackheader.value" onpreferencechanged="PreferencesPanelView.onDNTPreferenceChanged()" type="radio" >
<radiogroup id="prefs-dnt-options">
<radio id="prefs-dnt-notrack" label="&doNotTrack.options.trackingNotOkay;" value="1"/>
<radio id="prefs-dnt-nopref" label="&doNotTrack.options.noPreference;" value="-1"/>
<radio id="prefs-dnt-oktrack" label="&doNotTrack.options.trackingOkay;" value="0"/>
</radiogroup>
</setting>
</settings>
</flyoutpanel>

View File

@ -12,5 +12,11 @@ var PreferencesPanelView = {
SanitizeUI.init();
}
}, false);
},
onDNTPreferenceChanged: function onDNTPreferenceChanged() {
let dntNoPref = document.getElementById("prefs-dnt-nopref");
// When "tell sites nothing about my preferences" is selected, disable do not track.
Services.prefs.setBoolPref("privacy.donottrackheader.enabled", !dntNoPref.selected);
}
};

View File

@ -29,7 +29,7 @@ BROWSER_TESTS = \
browser_context_menu_tests_02.html \
browser_context_menu_tests_03.html \
text-block.html \
browser_sanitize_ui.js \
browser_prefs_ui.js \
browser_topsites.js \
browser_tabs.js \
$(NULL)

View File

@ -39,11 +39,8 @@ gTests.push({
// Show options flyout
let promise = waitForEvent(Elements.prefsFlyout, "PopupChanged", 2000);
Elements.prefsFlyout.show();
yield promise;
ok(promise && !(promise instanceof Error), "Wait for PopupChanged");
// Make sure it's opened
yield waitForEvent(Elements.prefsFlyout, "transitionend", 1000);
@ -93,12 +90,59 @@ gTests.push({
});
// hide options flyout
promise = waitForEvent(Elements.prefsFlyout, "PopupChanged", 2000);
let promise = waitForEvent(Elements.prefsFlyout, "PopupChanged", 2000);
Elements.prefsFlyout.hide();
yield promise;
}
});
function checkDNTPrefs(aExpectedEnabled, aExpectedValue) {
let currentEnabled = Services.prefs.getBoolPref("privacy.donottrackheader.enabled");
let currentValue = Services.prefs.getIntPref("privacy.donottrackheader.value");
let enabledTestMsg = "testing privacy.donottrackheader.enabled, expected "
+ aExpectedEnabled + " got " + currentEnabled;
ok(aExpectedEnabled === currentEnabled, enabledTestMsg);
let valueTestMsg = "testing privacy.donottrackheader.value, expected "
+ aExpectedValue + " got " + currentValue;
ok(aExpectedValue === currentValue, valueTestMsg);
}
gTests.push({
desc: "Test do not track settings",
run: function testDNT() {
let noTrack = document.getElementById("prefs-dnt-notrack");
let noPref = document.getElementById("prefs-dnt-nopref");
let okTrack = document.getElementById("prefs-dnt-oktrack");
// Show options flyout
let promise = waitForEvent(Elements.prefsFlyout, "PopupChanged", 2000);
Elements.prefsFlyout.show();
yield promise;
ok(promise && !(promise instanceof Error), "Wait for PopupChanged");
noPref.click();
// See https://mxr.mozilla.org/mozilla-central/source/modules/libpref/src/init/all.js?rev=0aab2bb76b45#755
// -1 - tell sites nothing about preferences
yield waitForCondition(() => Services.prefs.getIntPref("privacy.donottrackheader.value") === -1);
checkDNTPrefs(false, -1);
noTrack.click();
// 1 - tell sites tracking is unacceptable
yield waitForCondition(() => Services.prefs.getIntPref("privacy.donottrackheader.value") === 1);
checkDNTPrefs(true, 1);
okTrack.click();
// 0 - tell sites tracking is acceptable
yield waitForCondition(() => Services.prefs.getIntPref("privacy.donottrackheader.value") === 0);
checkDNTPrefs(true, 0);
// hide options flyout
let promise = waitForEvent(Elements.prefsFlyout, "PopupChanged", 2000);
Elements.prefsFlyout.hide();
yield promise;
}
});

View File

@ -35,8 +35,12 @@
<!ENTITY clearPrivateData.logins "Active logins">
<!ENTITY optionsHeader.privacy.passwords.label "Remember Passwords">
<!ENTITY optionsHeader.privacy.doNotTrack.title "Tracking">
<!ENTITY optionsHeader.privacy.doNotTrack.label "Tell websites not to track me">
<!ENTITY doNotTrack.title "Do Not Track">
<!ENTITY doNotTrack.desc "Tell sites:">
<!ENTITY doNotTrack.options.trackingNotOkay "I do not want to be tracked">
<!ENTITY doNotTrack.options.noPreference "Nothing about my tracking preferences">
<!ENTITY doNotTrack.options.trackingOkay "I want to be tracked">
<!-- ## Sync Flyout Panel ## -->
<!-- ## Sync Flyout Panel ## -->
<!-- see sync.dtd -->

View File

@ -790,6 +790,11 @@ setting[type="directory"] > .preferences-alignment {
-moz-box-align: center;
}
/* Removes the left side title vbox on radio setting */
setting[type="radio"] > vbox {
display: none;
}
#prefs-homepage-options, #prefs-homepage-popup {
min-width: 200px;
}