mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 16:58:38 +09:00
Move WebExtensions enabled Add-ons Manager
This commit is contained in:
parent
d7d16e7fbb
commit
358cd0404a
1100 changed files with 133 additions and 106 deletions
|
|
@ -1,172 +0,0 @@
|
|||
const gHttpTestRoot = "http://127.0.0.1:8888/" + RELATIVE_DIR + "/";
|
||||
|
||||
function updateBlocklist(aCallback) {
|
||||
var blocklistNotifier = Cc["@mozilla.org/extensions/blocklist;1"]
|
||||
.getService(Ci.nsITimerCallback);
|
||||
var observer = function() {
|
||||
Services.obs.removeObserver(observer, "blocklist-updated");
|
||||
SimpleTest.executeSoon(aCallback);
|
||||
};
|
||||
Services.obs.addObserver(observer, "blocklist-updated", false);
|
||||
blocklistNotifier.notify(null);
|
||||
}
|
||||
|
||||
var _originalBlocklistURL = null;
|
||||
function setAndUpdateBlocklist(aURL, aCallback) {
|
||||
if (!_originalBlocklistURL) {
|
||||
_originalBlocklistURL = Services.prefs.getCharPref("extensions.blocklist.url");
|
||||
}
|
||||
Services.prefs.setCharPref("extensions.blocklist.url", aURL);
|
||||
updateBlocklist(aCallback);
|
||||
}
|
||||
|
||||
function resetBlocklist(aCallback) {
|
||||
Services.prefs.setCharPref("extensions.blocklist.url", _originalBlocklistURL);
|
||||
}
|
||||
|
||||
add_task(function*() {
|
||||
SpecialPowers.pushPrefEnv({"set": [
|
||||
["plugins.click_to_play", true],
|
||||
["extensions.blocklist.suppressUI", true]
|
||||
]});
|
||||
registerCleanupFunction(function*() {
|
||||
let pluginTag = getTestPluginTag();
|
||||
pluginTag.enabledState = Ci.nsIPluginTag.STATE_ENABLED;
|
||||
yield new Promise(resolve => {
|
||||
setAndUpdateBlocklist(gHttpTestRoot + "blockNoPlugins.xml", resolve);
|
||||
});
|
||||
resetBlocklist();
|
||||
});
|
||||
|
||||
let pluginTag = getTestPluginTag();
|
||||
pluginTag.enabledState = Ci.nsIPluginTag.STATE_CLICKTOPLAY;
|
||||
let managerWindow = yield new Promise(resolve => open_manager("addons://list/plugin", resolve));
|
||||
|
||||
let plugins = yield new Promise(resolve => AddonManager.getAddonsByTypes(["plugin"], resolve));
|
||||
|
||||
let testPluginId;
|
||||
for (let plugin of plugins) {
|
||||
if (plugin.name == "Test Plug-in") {
|
||||
testPluginId = plugin.id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
ok(testPluginId, "part2: Test Plug-in should exist");
|
||||
|
||||
let testPlugin = yield new Promise(resolve => AddonManager.getAddonByID(testPluginId, resolve));
|
||||
|
||||
let pluginEl = get_addon_element(managerWindow, testPluginId);
|
||||
pluginEl.parentNode.ensureElementIsVisible(pluginEl);
|
||||
let enableButton = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "enable-btn");
|
||||
is_element_hidden(enableButton, "part3: enable button should not be visible");
|
||||
let disableButton = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "enable-btn");
|
||||
is_element_hidden(disableButton, "part3: disable button should not be visible");
|
||||
let menu = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "state-menulist");
|
||||
is_element_visible(menu, "part3: state menu should be visible");
|
||||
let askToActivateItem = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "ask-to-activate-menuitem");
|
||||
is(menu.selectedItem, askToActivateItem, "part3: state menu should have 'Ask To Activate' selected");
|
||||
|
||||
let pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html");
|
||||
let pluginBrowser = pluginTab.linkedBrowser;
|
||||
|
||||
let condition = () => PopupNotifications.getNotification("click-to-play-plugins", pluginBrowser);
|
||||
yield BrowserTestUtils.waitForCondition(condition, "part4: should have a click-to-play notification");
|
||||
|
||||
yield BrowserTestUtils.removeTab(pluginTab);
|
||||
|
||||
let alwaysActivateItem = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "always-activate-menuitem");
|
||||
menu.selectedItem = alwaysActivateItem;
|
||||
alwaysActivateItem.doCommand();
|
||||
|
||||
pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html");
|
||||
|
||||
yield ContentTask.spawn(pluginTab.linkedBrowser, null, function*() {
|
||||
let testPlugin = content.document.getElementById("test");
|
||||
ok(testPlugin, "part5: should have a plugin element in the page");
|
||||
let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent);
|
||||
let condition = () => objLoadingContent.activated;
|
||||
yield ContentTaskUtils.waitForCondition(condition, "part5: waited too long for plugin to activate");
|
||||
ok(objLoadingContent.activated, "part6: plugin should be activated");
|
||||
});
|
||||
|
||||
yield BrowserTestUtils.removeTab(pluginTab);
|
||||
|
||||
let neverActivateItem = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "never-activate-menuitem");
|
||||
menu.selectedItem = neverActivateItem;
|
||||
neverActivateItem.doCommand();
|
||||
|
||||
pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html");
|
||||
pluginBrowser = pluginTab.linkedBrowser;
|
||||
|
||||
yield ContentTask.spawn(pluginTab.linkedBrowser, null, function*() {
|
||||
let testPlugin = content.document.getElementById("test");
|
||||
ok(testPlugin, "part7: should have a plugin element in the page");
|
||||
let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent);
|
||||
ok(!objLoadingContent.activated, "part7: plugin should not be activated");
|
||||
});
|
||||
|
||||
yield BrowserTestUtils.removeTab(pluginTab);
|
||||
|
||||
let details = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "details-btn");
|
||||
is_element_visible(details, "part7: details link should be visible");
|
||||
EventUtils.synthesizeMouseAtCenter(details, {}, managerWindow);
|
||||
yield BrowserTestUtils.waitForEvent(managerWindow.document, "ViewChanged");
|
||||
|
||||
is_element_hidden(enableButton, "part8: detail enable button should be hidden");
|
||||
is_element_hidden(disableButton, "part8: detail disable button should be hidden");
|
||||
is_element_visible(menu, "part8: detail state menu should be visible");
|
||||
is(menu.selectedItem, neverActivateItem, "part8: state menu should have 'Never Activate' selected");
|
||||
|
||||
menu.selectedItem = alwaysActivateItem;
|
||||
alwaysActivateItem.doCommand();
|
||||
|
||||
pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html");
|
||||
pluginBrowser = pluginTab.linkedBrowser;
|
||||
|
||||
yield ContentTask.spawn(pluginTab.linkedBrowser, null, function*() {
|
||||
let testPlugin = content.document.getElementById("test");
|
||||
ok(testPlugin, "part9: should have a plugin element in the page");
|
||||
let objLoadingContent = testPlugin.QueryInterface(Ci.nsIObjectLoadingContent);
|
||||
let condition = () => objLoadingContent.activated;
|
||||
yield ContentTaskUtils.waitForCondition(condition, "part9: waited too long for plugin to activate");
|
||||
ok(objLoadingContent.activated, "part10: plugin should be activated");
|
||||
});
|
||||
|
||||
yield BrowserTestUtils.removeTab(pluginTab);
|
||||
|
||||
menu.selectedItem = askToActivateItem;
|
||||
askToActivateItem.doCommand();
|
||||
|
||||
pluginTab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gHttpTestRoot + "plugin_test.html");
|
||||
pluginBrowser = pluginTab.linkedBrowser;
|
||||
|
||||
condition = () => PopupNotifications.getNotification("click-to-play-plugins", pluginBrowser);
|
||||
yield BrowserTestUtils.waitForCondition(condition, "part11: should have a click-to-play notification");
|
||||
|
||||
yield BrowserTestUtils.removeTab(pluginTab);
|
||||
|
||||
// causes appDisabled to be set
|
||||
managerWindow = yield new Promise(resolve => {
|
||||
setAndUpdateBlocklist(gHttpTestRoot + "blockPluginHard.xml",
|
||||
() => {
|
||||
close_manager(managerWindow, function() {
|
||||
open_manager("addons://list/plugin", resolve);
|
||||
});
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
pluginEl = get_addon_element(managerWindow, testPluginId);
|
||||
pluginEl.parentNode.ensureElementIsVisible(pluginEl);
|
||||
menu = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "state-menulist");
|
||||
is(menu.disabled, true, "part12: state menu should be disabled");
|
||||
|
||||
details = managerWindow.document.getAnonymousElementByAttribute(pluginEl, "anonid", "details-btn");
|
||||
EventUtils.synthesizeMouseAtCenter(details, {}, managerWindow);
|
||||
yield BrowserTestUtils.waitForEvent(managerWindow.document, "ViewChanged");
|
||||
|
||||
menu = managerWindow.document.getElementById("detail-state-menulist");
|
||||
is(menu.disabled, true, "part13: detail state menu should be disabled");
|
||||
|
||||
managerWindow.close();
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue