Bug 1335829 Add mozAddonManager.permissionPromptsEnabled r=qdot

MozReview-Commit-ID: FldFilY24kf

--HG--
extra : rebase_source : 19a8996a443098fbe095cd14653d10dc80f30b68
This commit is contained in:
Andrew Swan 2017-02-02 10:59:54 -08:00
Родитель 95470fc250
Коммит 9e4e48131a
3 изменённых файлов: 26 добавлений и 0 удалений

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

@ -77,6 +77,9 @@ interface AddonManager : EventTarget {
*/
Promise<AddonInstall> createInstall(optional addonInstallOptions options);
// Indicator to content whether permissions prompts are enabled
readonly attribute boolean permissionPromptsEnabled;
/* Hooks for managing event listeners */
[ChromeOnly]
void eventListenerWasAdded(DOMString type);

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

@ -10,6 +10,9 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/Task.jsm");
XPCOMUtils.defineLazyPreferenceGetter(this, "WEBEXT_PERMISSION_PROMPTS",
"extensions.webextPermissionPrompts", false);
const MSG_PROMISE_REQUEST = "WebAPIPromiseRequest";
const MSG_PROMISE_RESULT = "WebAPIPromiseResult";
const MSG_INSTALL_EVENT = "WebAPIInstallEvent";
@ -239,6 +242,10 @@ class WebAPI extends APIObject {
});
}
get permissionPromptsEnabled() {
return WEBEXT_PERMISSION_PROMPTS;
}
eventListenerWasAdded(type) {
if (this.listenerCount == 0) {
this.broker.setAddonListener(data => {

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

@ -104,3 +104,19 @@ add_task(testWithAPI(function*(browser) {
compareObjects(w2, a2);
compareObjects(w3, a3);
}));
add_task(testWithAPI(function*(browser) {
function* check(value, message) {
let enabled = yield ContentTask.spawn(browser, null, function*() {
return content.navigator.mozAddonManager.permissionPromptsEnabled;
});
is(enabled, value, message);
}
const PERM = "extensions.webextPermissionPrompts";
yield SpecialPowers.pushPrefEnv({clear: [[PERM]]});
yield check(false, `mozAddonManager.permissionPromptsEnabled is false when ${PERM} is unset`);
yield SpecialPowers.pushPrefEnv({set: [[PERM, true]]});
yield check(true, `mozAddonManager.permissionPromptsEnabled is true when ${PERM} is set`);
}));