Bug 1513039 - part9 : remove autoplayMediaCombobox. r=daleharvey,flod

Use CheckedBox instead.

Differential Revision: https://phabricator.services.mozilla.com/D14334

--HG--
extra : moz-landing-system : lando
This commit is contained in:
alwu 2019-01-07 18:39:35 +00:00
Родитель 3e5817542c
Коммит 99419e95dd
6 изменённых файлов: 12 добавлений и 209 удалений

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

@ -77,8 +77,6 @@ Preferences.addAll([
// Media // Media
{ id: "media.autoplay.default", type: "int" }, { id: "media.autoplay.default", type: "int" },
{ id: "media.autoplay.enabled.ask-permission", type: "bool" },
{ id: "media.autoplay.enabled.user-gestures-needed", type: "bool" },
// Popups // Popups
{ id: "dom.disable_open_during_load", type: "bool" }, { id: "dom.disable_open_during_load", type: "bool" },
@ -271,8 +269,6 @@ var gPrivacyPane = {
init() { init() {
this._updateSanitizeSettingsButton(); this._updateSanitizeSettingsButton();
this.initializeHistoryMode(); this.initializeHistoryMode();
this.initAutoplay();
this.updateAutoplayMediaControlsVisibility();
this.updateHistoryModePane(); this.updateHistoryModePane();
this.updatePrivacyMicroControls(); this.updatePrivacyMicroControls();
this.initAutoStartPrivateBrowsingReverter(); this.initAutoStartPrivateBrowsingReverter();
@ -281,10 +277,14 @@ var gPrivacyPane = {
/* Initialize Content Blocking */ /* Initialize Content Blocking */
this.initContentBlocking(); this.initContentBlocking();
this.blockAutoplayReadPrefs();
this.trackingProtectionReadPrefs(); this.trackingProtectionReadPrefs();
this.networkCookieBehaviorReadPrefs(); this.networkCookieBehaviorReadPrefs();
this._initTrackingProtectionExtensionControl(); this._initTrackingProtectionExtensionControl();
Preferences.get("media.autoplay.default").on("change",
gPrivacyPane.blockAutoplayReadPrefs.bind(gPrivacyPane));
Preferences.get("privacy.trackingprotection.enabled").on("change", Preferences.get("privacy.trackingprotection.enabled").on("change",
gPrivacyPane.trackingProtectionReadPrefs.bind(gPrivacyPane)); gPrivacyPane.trackingProtectionReadPrefs.bind(gPrivacyPane));
Preferences.get("privacy.trackingprotection.pbmode.enabled").on("change", Preferences.get("privacy.trackingprotection.pbmode.enabled").on("change",
@ -305,10 +305,6 @@ var gPrivacyPane = {
gPrivacyPane._updateSanitizeSettingsButton.bind(gPrivacyPane)); gPrivacyPane._updateSanitizeSettingsButton.bind(gPrivacyPane));
Preferences.get("browser.privatebrowsing.autostart").on("change", Preferences.get("browser.privatebrowsing.autostart").on("change",
gPrivacyPane.updatePrivacyMicroControls.bind(gPrivacyPane)); gPrivacyPane.updatePrivacyMicroControls.bind(gPrivacyPane));
Preferences.get("media.autoplay.enabled.ask-permission").on("change",
gPrivacyPane.updateAutoplayMediaControlsVisibility.bind(gPrivacyPane));
Preferences.get("media.autoplay.enabled.user-gestures-needed").on("change",
gPrivacyPane.updateAutoplayMediaControlsVisibility.bind(gPrivacyPane));
setEventListener("historyMode", "command", function() { setEventListener("historyMode", "command", function() {
gPrivacyPane.updateHistoryModePane(); gPrivacyPane.updateHistoryModePane();
gPrivacyPane.updateHistoryModePrefs(); gPrivacyPane.updateHistoryModePrefs();
@ -366,8 +362,6 @@ var gPrivacyPane = {
gPrivacyPane.toggleAutoplayMedia); gPrivacyPane.toggleAutoplayMedia);
setEventListener("autoplayMediaPolicyButton", "command", setEventListener("autoplayMediaPolicyButton", "command",
gPrivacyPane.showAutoplayMediaExceptions); gPrivacyPane.showAutoplayMediaExceptions);
setEventListener("autoplayMediaPolicyComboboxButton", "command",
gPrivacyPane.showAutoplayMediaExceptions);
setEventListener("notificationsDoNotDisturb", "command", setEventListener("notificationsDoNotDisturb", "command",
gPrivacyPane.toggleDoNotDisturbNotifications); gPrivacyPane.toggleDoNotDisturbNotifications);
@ -1109,10 +1103,10 @@ var gPrivacyPane = {
// MEDIA // MEDIA
initAutoplay() { blockAutoplayReadPrefs() {
let url = Services.urlFormatter.formatURLPref("app.support.baseURL") + let blocked =
"block-autoplay"; Preferences.get("media.autoplay.default").value == Ci.nsIAutoplay.BLOCKED;
document.getElementById("autoplayLearnMoreLink").setAttribute("href", url); document.getElementById("autoplayMediaCheckbox").checked = blocked;
}, },
/** /**
@ -1123,29 +1117,6 @@ var gPrivacyPane = {
Services.prefs.setIntPref("media.autoplay.default", blocked); Services.prefs.setIntPref("media.autoplay.default", blocked);
}, },
/**
* If user-gestures-needed is false we do not show any UI for configuring autoplay,
* if user-gestures-needed is false and ask-permission is false we show a checkbox
* which only allows the user to block autoplay
* if user-gestures-needed and ask-permission are true we show a combobox that
* allows the user to block / allow or prompt for autoplay
* We will be performing a shield study to determine the behaviour to be
* shipped, at which point we can remove these pref switches.
* https://bugzilla.mozilla.org/show_bug.cgi?id=1475099
*/
updateAutoplayMediaControlsVisibility() {
let askPermission =
Services.prefs.getBoolPref("media.autoplay.ask-permission", false);
let userGestures =
Services.prefs.getBoolPref("media.autoplay.enabled.user-gestures-needed", false);
// Hide the combobox if we don't let the user ask for permission.
document.getElementById("autoplayMediaComboboxWrapper").hidden =
!userGestures || !askPermission;
// If the user may ask for permission, hide the checkbox instead.
document.getElementById("autoplayMediaCheckboxWrapper").hidden =
!userGestures || askPermission;
},
/** /**
* Displays the autoplay exceptions dialog where specific site autoplay preferences * Displays the autoplay exceptions dialog where specific site autoplay preferences
* can be set. * can be set.

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

@ -558,7 +558,7 @@
<separator flex="1"/> <separator flex="1"/>
<hbox align="start" id="autoplayMediaCheckboxWrapper" hidden="true"> <hbox align="start" id="autoplayMediaCheckboxWrapper">
<checkbox id="autoplayMediaCheckbox" <checkbox id="autoplayMediaCheckbox"
data-l10n-id="permissions-block-autoplay-media" data-l10n-id="permissions-block-autoplay-media"
flex="1" /> flex="1" />
@ -631,38 +631,6 @@
</hbox> </hbox>
</vbox> </vbox>
<hbox align="center" id="autoplayMediaComboboxWrapper" hidden="true">
<hbox align="center" flex="1">
<label id="autoplayMediaPolicy"
control="autoplayMediaPolicyMenu"
data-l10n-id="permissions-block-autoplay-media-menu"/>
<menulist id="autoplayMediaPolicyMenu"
sizetopopup="always"
preference="media.autoplay.default">
<menupopup>
<!-- Defined in dom/media/nsIAutoplay.idl -->
<menuitem data-l10n-id="autoplay-option-allow" value="0"/>
<menuitem data-l10n-id="autoplay-option-ask" value="2"/>
<menuitem data-l10n-id="autoplay-option-dont" value="1"/>
</menupopup>
</menulist>
<label id="autoplayLearnMoreLink" class="learnMore text-link"
data-l10n-id="permissions-autoplay-link"/>
</hbox>
<hbox pack="end">
<button id="autoplayMediaPolicyComboboxButton"
class="accessory-button"
data-l10n-id="permissions-block-autoplay-media-exceptions"
search-l10n-ids="permissions-address,
permissions-button-cancel.label,
permissions-button-ok.label,
permissions-exceptions-autoplay-media-window2.title,
permissions-exceptions-autoplay-media-desc2
" />
</hbox>
</hbox>
</groupbox> </groupbox>
<!-- Firefox Data Collection and Use --> <!-- Firefox Data Collection and Use -->

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

@ -84,7 +84,6 @@ run-if = nightly_build
[browser_spotlight.js] [browser_spotlight.js]
[browser_site_login_exceptions.js] [browser_site_login_exceptions.js]
[browser_site_autoplay_media_exceptions.js] [browser_site_autoplay_media_exceptions.js]
[browser_site_autoplay_media_prompt.js]
[browser_permissions_dialog.js] [browser_permissions_dialog.js]
[browser_subdialogs.js] [browser_subdialogs.js]
support-files = support-files =

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

@ -8,14 +8,10 @@ const PRINCIPAL = Services.scriptSecurityManager
const PERMISSIONS_URL = "chrome://browser/content/preferences/permissions.xul"; const PERMISSIONS_URL = "chrome://browser/content/preferences/permissions.xul";
const AUTOPLAY_ENABLED_KEY = "media.autoplay.default"; const AUTOPLAY_ENABLED_KEY = "media.autoplay.default";
const GESTURES_NEEDED_KEY = "media.autoplay.enabled.user-gestures-needed";
const ASK_PERMISSIONS_KEY = "media.autoplay.enabled.ask-permissions";
var exceptionsDialog; var exceptionsDialog;
Services.prefs.setIntPref(AUTOPLAY_ENABLED_KEY, Ci.nsIAutoplay.ALLOWED); Services.prefs.setIntPref(AUTOPLAY_ENABLED_KEY, Ci.nsIAutoplay.ALLOWED);
Services.prefs.setBoolPref(GESTURES_NEEDED_KEY, false);
Services.prefs.setBoolPref(ASK_PERMISSIONS_KEY, true);
async function openExceptionsDialog() { async function openExceptionsDialog() {
let dialogOpened = promiseLoadSubDialog(PERMISSIONS_URL); let dialogOpened = promiseLoadSubDialog(PERMISSIONS_URL);
@ -26,25 +22,19 @@ async function openExceptionsDialog() {
exceptionsDialog = await dialogOpened; exceptionsDialog = await dialogOpened;
} }
add_task(async function ensureCheckboxHidden() { add_task(async function ensureCheckboxVisible() {
registerCleanupFunction(async function() { registerCleanupFunction(async function() {
Services.prefs.clearUserPref(AUTOPLAY_ENABLED_KEY); Services.prefs.clearUserPref(AUTOPLAY_ENABLED_KEY);
Services.prefs.clearUserPref(GESTURES_NEEDED_KEY);
Services.prefs.clearUserPref(ASK_PERMISSIONS_KEY);
gBrowser.removeCurrentTab(); gBrowser.removeCurrentTab();
}); });
await openPreferencesViaOpenPreferencesAPI("privacy", {leaveOpen: true}); await openPreferencesViaOpenPreferencesAPI("privacy", {leaveOpen: true});
let win = gBrowser.selectedBrowser.contentWindow; let win = gBrowser.selectedBrowser.contentWindow;
is_element_hidden(win.document.getElementById("autoplayMediaPolicy"), is_element_visible(win.document.getElementById("autoplayMediaCheckbox"),
"Ensure checkbox is hidden when preffed off"); "Ensure checkbox is visible");
}); });
add_task(async function enableBlockingAutoplay() { add_task(async function enableBlockingAutoplay() {
Services.prefs.setBoolPref(GESTURES_NEEDED_KEY, true);
await ContentTask.spawn(gBrowser.selectedBrowser, null, function() { await ContentTask.spawn(gBrowser.selectedBrowser, null, function() {
let doc = content.document; let doc = content.document;
let autoplayCheckBox = doc.getElementById("autoplayMediaCheckbox"); let autoplayCheckBox = doc.getElementById("autoplayMediaCheckbox");

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

@ -1,114 +0,0 @@
"use strict";
ChromeUtils.import("resource:///modules/SitePermissions.jsm");
const URL = "http://www.example.com";
const PRINCIPAL = Services.scriptSecurityManager
.createCodebasePrincipal(Services.io.newURI(URL), {});
const PERMISSIONS_URL = "chrome://browser/content/preferences/permissions.xul";
const AUTOPLAY_ENABLED_KEY = "media.autoplay.default";
const GESTURES_NEEDED_KEY = "media.autoplay.enabled.user-gestures-needed";
const ASK_PERMISSIONS_KEY = "media.autoplay.enabled.ask-permissions";
var exceptionsDialog;
Services.prefs.setIntPref(AUTOPLAY_ENABLED_KEY, Ci.nsIAutoplay.ALLOWED);
Services.prefs.setBoolPref(GESTURES_NEEDED_KEY, false);
Services.prefs.setBoolPref(ASK_PERMISSIONS_KEY, true);
async function openExceptionsDialog() {
let dialogOpened = promiseLoadSubDialog(PERMISSIONS_URL);
await ContentTask.spawn(gBrowser.selectedBrowser, null, function() {
let exceptionsButton = content.document.getElementById("autoplayMediaPolicyButton");
exceptionsButton.click();
});
exceptionsDialog = await dialogOpened;
}
add_task(async function ensureMenuHidden() {
registerCleanupFunction(async function() {
Services.prefs.clearUserPref(AUTOPLAY_ENABLED_KEY);
Services.prefs.clearUserPref(GESTURES_NEEDED_KEY);
Services.prefs.clearUserPref(ASK_PERMISSIONS_KEY);
gBrowser.removeCurrentTab();
});
await openPreferencesViaOpenPreferencesAPI("privacy", {leaveOpen: true});
let win = gBrowser.selectedBrowser.contentWindow;
is_element_hidden(win.document.getElementById("autoplayMediaPolicy"),
"Ensure checkbox is hidden when preffed off");
});
add_task(async function enableBlockingAutoplay() {
Services.prefs.setBoolPref(GESTURES_NEEDED_KEY, true);
await ContentTask.spawn(gBrowser.selectedBrowser, null, function() {
let doc = content.document;
let autoplayMenu = doc.getElementById("autoplayMediaPolicyMenu");
autoplayMenu.click();
let askMenuItem = autoplayMenu.children[0].children[1];
askMenuItem.click();
});
Assert.equal(Services.prefs.getIntPref(AUTOPLAY_ENABLED_KEY),
Ci.nsIAutoplay.PROMPT,
"Ensure we have set autoplay to false");
});
add_task(async function addException() {
await openExceptionsDialog();
let doc = exceptionsDialog.document;
let richlistbox = doc.getElementById("permissionsBox");
Assert.equal(richlistbox.itemCount, 0, "Row count should initially be 0");
let inputBox = doc.getElementById("url");
inputBox.focus();
EventUtils.sendString(URL, exceptionsDialog);
let btnAllow = doc.getElementById("btnAllow");
btnAllow.click();
await TestUtils.waitForCondition(() => richlistbox.itemCount == 1);
Assert.equal(richlistbox.getItemAtIndex(0).getAttribute("origin"), URL);
let permChanged = TestUtils.topicObserved("perm-changed");
let btnApplyChanges = doc.getElementById("btnApplyChanges");
btnApplyChanges.click();
await permChanged;
is(Services.perms.testPermissionFromPrincipal(PRINCIPAL, "autoplay-media"),
Ci.nsIPermissionManager.ALLOW_ACTION, "Correctly added the exception");
});
add_task(async function deleteException() {
await openExceptionsDialog();
let doc = exceptionsDialog.document;
let richlistbox = doc.getElementById("permissionsBox");
Assert.equal(richlistbox.itemCount, 1, "Row count should initially be 1");
richlistbox.focus();
richlistbox.selectedIndex = 0;
if (AppConstants.platform == "macosx") {
EventUtils.synthesizeKey("KEY_Backspace");
} else {
EventUtils.synthesizeKey("KEY_Delete");
}
await TestUtils.waitForCondition(() => richlistbox.itemCount == 0);
is_element_visible(content.gSubDialog._dialogs[0]._box,
"Subdialog is visible after deleting an element");
let permChanged = TestUtils.topicObserved("perm-changed");
let btnApplyChanges = doc.getElementById("btnApplyChanges");
btnApplyChanges.click();
await permChanged;
is(Services.perms.testPermissionFromPrincipal(PRINCIPAL, "autoplay-media"),
Ci.nsIPermissionManager.UNKNOWN_ACTION, "Correctly removed the exception");
});

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

@ -900,21 +900,10 @@ permissions-block-autoplay-media =
.label = Block websites from automatically playing media with sound .label = Block websites from automatically playing media with sound
.accesskey = B .accesskey = B
permissions-block-autoplay-media-menu = For websites that autoplay sound
permissions-block-autoplay-media-exceptions = permissions-block-autoplay-media-exceptions =
.label = Exceptions… .label = Exceptions…
.accesskey = E .accesskey = E
autoplay-option-ask =
.label = Always Ask
autoplay-option-allow =
.label = Allow Autoplay
autoplay-option-dont =
.label = Don't Autoplay
permissions-autoplay-link = Learn more
permissions-block-popups = permissions-block-popups =
.label = Block pop-up windows .label = Block pop-up windows
.accesskey = B .accesskey = B