зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
3e5817542c
Коммит
99419e95dd
|
@ -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
|
||||||
|
|
Загрузка…
Ссылка в новой задаче