From a090b3590264b30ade5f5a911bd1be66950e2129 Mon Sep 17 00:00:00 2001 From: Rodrigo Silveira Date: Sat, 13 Apr 2013 18:21:27 -0700 Subject: [PATCH] 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 --- .../base/content/bindings/toggleswitch.xml | 4 +- browser/metro/base/content/browser.css | 6 ++- browser/metro/base/content/browser.xul | 11 +++- browser/metro/base/content/preferences.js | 6 +++ .../metro/base/tests/mochitest/Makefile.in | 2 +- ...ser_sanitize_ui.js => browser_prefs_ui.js} | 54 +++++++++++++++++-- .../locales/en-US/chrome/preferences.dtd | 10 ++-- browser/metro/theme/browser.css | 5 ++ 8 files changed, 84 insertions(+), 14 deletions(-) rename browser/metro/base/tests/mochitest/{browser_sanitize_ui.js => browser_prefs_ui.js} (61%) diff --git a/browser/metro/base/content/bindings/toggleswitch.xml b/browser/metro/base/content/bindings/toggleswitch.xml index 2bcdf4d506e..48b503b2097 100644 --- a/browser/metro/base/content/bindings/toggleswitch.xml +++ b/browser/metro/base/content/bindings/toggleswitch.xml @@ -20,8 +20,8 @@ - - + + diff --git a/browser/metro/base/content/browser.css b/browser/metro/base/content/browser.css index a30cbc4bddb..e97123f2199 100644 --- a/browser/metro/base/content/browser.css +++ b/browser/metro/base/content/browser.css @@ -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"); } diff --git a/browser/metro/base/content/browser.xul b/browser/metro/base/content/browser.xul index 5bb1616c2d3..25fedd3611f 100644 --- a/browser/metro/base/content/browser.xul +++ b/browser/metro/base/content/browser.xul @@ -461,8 +461,15 @@ - - + + &doNotTrack.desc; + + + + + + + diff --git a/browser/metro/base/content/preferences.js b/browser/metro/base/content/preferences.js index a6bd1b3d8da..3b92112857e 100644 --- a/browser/metro/base/content/preferences.js +++ b/browser/metro/base/content/preferences.js @@ -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); } }; diff --git a/browser/metro/base/tests/mochitest/Makefile.in b/browser/metro/base/tests/mochitest/Makefile.in index bc3ce41e58e..852fa3f04f5 100644 --- a/browser/metro/base/tests/mochitest/Makefile.in +++ b/browser/metro/base/tests/mochitest/Makefile.in @@ -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) diff --git a/browser/metro/base/tests/mochitest/browser_sanitize_ui.js b/browser/metro/base/tests/mochitest/browser_prefs_ui.js similarity index 61% rename from browser/metro/base/tests/mochitest/browser_sanitize_ui.js rename to browser/metro/base/tests/mochitest/browser_prefs_ui.js index 374d9bb8fa1..97c1fea0533 100644 --- a/browser/metro/base/tests/mochitest/browser_sanitize_ui.js +++ b/browser/metro/base/tests/mochitest/browser_prefs_ui.js @@ -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; } }); diff --git a/browser/metro/locales/en-US/chrome/preferences.dtd b/browser/metro/locales/en-US/chrome/preferences.dtd index c41c5f1fac8..9449150ced9 100644 --- a/browser/metro/locales/en-US/chrome/preferences.dtd +++ b/browser/metro/locales/en-US/chrome/preferences.dtd @@ -35,8 +35,12 @@ - - + + + + + - + + diff --git a/browser/metro/theme/browser.css b/browser/metro/theme/browser.css index 34fa534a9d2..5797334552b 100644 --- a/browser/metro/theme/browser.css +++ b/browser/metro/theme/browser.css @@ -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; }