mirror of
https://github.com/Feodor2/Mypal68.git
synced 2025-06-18 23:05:40 -04:00
475 lines
10 KiB
JavaScript
475 lines
10 KiB
JavaScript
"use strict";
|
|
|
|
let contextMenu;
|
|
let hasPocket = Services.prefs.getBoolPref("extensions.pocket.enabled");
|
|
|
|
add_task(async function test_setup() {
|
|
const example_base =
|
|
"http://example.com/browser/browser/base/content/test/contextMenu/";
|
|
const url = example_base + "subtst_contextmenu_input.html";
|
|
await BrowserTestUtils.openNewForegroundTab(gBrowser, url);
|
|
|
|
const chrome_base =
|
|
"chrome://mochitests/content/browser/browser/base/content/test/contextMenu/";
|
|
const contextmenu_common = chrome_base + "contextmenu_common.js";
|
|
/* import-globals-from contextmenu_common.js */
|
|
Services.scriptloader.loadSubScript(contextmenu_common, this);
|
|
|
|
// Ensure screenshots is really disabled (bug 1498738)
|
|
const addon = await AddonManager.getAddonByID("screenshots@mozilla.org");
|
|
await addon.disable({ allowSystemAddons: true });
|
|
});
|
|
|
|
add_task(async function test_text_input() {
|
|
await test_contextmenu("#input_text", [
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
false,
|
|
"---",
|
|
null,
|
|
"spell-check-enabled",
|
|
true,
|
|
]);
|
|
});
|
|
|
|
add_task(async function test_text_input_spellcheck() {
|
|
await test_contextmenu(
|
|
"#input_spellcheck_no_value",
|
|
[
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
false,
|
|
"---",
|
|
null,
|
|
"spell-check-enabled",
|
|
true,
|
|
"spell-dictionaries",
|
|
true,
|
|
[
|
|
"spell-check-dictionary-en-US",
|
|
true,
|
|
"---",
|
|
null,
|
|
"spell-add-dictionaries",
|
|
true,
|
|
],
|
|
null,
|
|
],
|
|
{
|
|
waitForSpellCheck: true,
|
|
// Need to dynamically add/remove the "password" type or LoginManager
|
|
// will think that the form inputs on the page are part of a login
|
|
// and will add fill-login context menu items.
|
|
async preCheckContextMenuFn() {
|
|
await ContentTask.spawn(
|
|
gBrowser.selectedBrowser,
|
|
null,
|
|
async function() {
|
|
let doc = content.document;
|
|
let input = doc.getElementById("input_spellcheck_no_value");
|
|
input.setAttribute("spellcheck", "true");
|
|
input.clientTop; // force layout flush
|
|
}
|
|
);
|
|
},
|
|
}
|
|
);
|
|
});
|
|
|
|
add_task(async function test_text_input_spellcheckwrong() {
|
|
await test_contextmenu(
|
|
"#input_spellcheck_incorrect",
|
|
[
|
|
"*prodigality",
|
|
true, // spelling suggestion
|
|
"spell-add-to-dictionary",
|
|
true,
|
|
"---",
|
|
null,
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
true,
|
|
"---",
|
|
null,
|
|
"spell-check-enabled",
|
|
true,
|
|
"spell-dictionaries",
|
|
true,
|
|
[
|
|
"spell-check-dictionary-en-US",
|
|
true,
|
|
"---",
|
|
null,
|
|
"spell-add-dictionaries",
|
|
true,
|
|
],
|
|
null,
|
|
],
|
|
{ waitForSpellCheck: true }
|
|
);
|
|
});
|
|
|
|
add_task(async function test_text_input_spellcheckcorrect() {
|
|
await test_contextmenu(
|
|
"#input_spellcheck_correct",
|
|
[
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
true,
|
|
"---",
|
|
null,
|
|
"spell-check-enabled",
|
|
true,
|
|
"spell-dictionaries",
|
|
true,
|
|
[
|
|
"spell-check-dictionary-en-US",
|
|
true,
|
|
"---",
|
|
null,
|
|
"spell-add-dictionaries",
|
|
true,
|
|
],
|
|
null,
|
|
],
|
|
{ waitForSpellCheck: true }
|
|
);
|
|
});
|
|
|
|
add_task(async function test_text_input_disabled() {
|
|
await test_contextmenu(
|
|
"#input_disabled",
|
|
[
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
true,
|
|
"---",
|
|
null,
|
|
"spell-check-enabled",
|
|
true,
|
|
],
|
|
{ skipFocusChange: true }
|
|
);
|
|
});
|
|
|
|
add_task(async function test_password_input() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [["signon.generation.enabled", false]],
|
|
});
|
|
todo(
|
|
false,
|
|
"context-selectall is enabled on osx-e10s, and windows when" +
|
|
" it should be disabled"
|
|
);
|
|
await test_contextmenu(
|
|
"#input_password",
|
|
[
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
null,
|
|
"---",
|
|
null,
|
|
"fill-login",
|
|
null,
|
|
[
|
|
"fill-login-no-logins",
|
|
false,
|
|
"---",
|
|
null,
|
|
"fill-login-saved-passwords",
|
|
true,
|
|
],
|
|
null,
|
|
],
|
|
{
|
|
skipFocusChange: true,
|
|
// Need to dynamically add/remove the "password" type or LoginManager
|
|
// will think that the form inputs on the page are part of a login
|
|
// and will add fill-login context menu items.
|
|
async preCheckContextMenuFn() {
|
|
await ContentTask.spawn(
|
|
gBrowser.selectedBrowser,
|
|
null,
|
|
async function() {
|
|
let doc = content.document;
|
|
let input = doc.getElementById("input_password");
|
|
input.type = "password";
|
|
input.clientTop; // force layout flush
|
|
}
|
|
);
|
|
},
|
|
async postCheckContextMenuFn() {
|
|
await ContentTask.spawn(
|
|
gBrowser.selectedBrowser,
|
|
null,
|
|
async function() {
|
|
let doc = content.document;
|
|
let input = doc.getElementById("input_password");
|
|
input.type = "text";
|
|
input.clientTop; // force layout flush
|
|
}
|
|
);
|
|
},
|
|
}
|
|
);
|
|
await SpecialPowers.popPrefEnv();
|
|
});
|
|
|
|
add_task(async function test_tel_email_url_number_input() {
|
|
todo(
|
|
false,
|
|
"context-selectall is enabled on osx-e10s, and windows when" +
|
|
" it should be disabled"
|
|
);
|
|
for (let selector of [
|
|
"#input_email",
|
|
"#input_url",
|
|
"#input_tel",
|
|
"#input_number",
|
|
]) {
|
|
await test_contextmenu(
|
|
selector,
|
|
[
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
null,
|
|
],
|
|
{
|
|
skipFocusChange: true,
|
|
}
|
|
);
|
|
}
|
|
});
|
|
|
|
add_task(
|
|
async function test_date_time_color_range_month_week_datetimelocal_input() {
|
|
for (let selector of [
|
|
"#input_date",
|
|
"#input_time",
|
|
"#input_color",
|
|
"#input_range",
|
|
"#input_month",
|
|
"#input_week",
|
|
"#input_datetime-local",
|
|
]) {
|
|
await test_contextmenu(
|
|
selector,
|
|
[
|
|
"context-navigation",
|
|
null,
|
|
[
|
|
"context-back",
|
|
false,
|
|
"context-forward",
|
|
false,
|
|
"context-reload",
|
|
true,
|
|
"context-bookmarkpage",
|
|
true,
|
|
],
|
|
null,
|
|
"---",
|
|
null,
|
|
"context-savepage",
|
|
true,
|
|
...(hasPocket ? ["context-pocket", true] : []),
|
|
"---",
|
|
null,
|
|
"context-sendpagetodevice",
|
|
null,
|
|
[],
|
|
null,
|
|
"---",
|
|
null,
|
|
"context-viewbgimage",
|
|
false,
|
|
"context-selectall",
|
|
null,
|
|
"---",
|
|
null,
|
|
"context-viewsource",
|
|
true,
|
|
"context-viewinfo",
|
|
true,
|
|
],
|
|
{
|
|
// XXX Bug 1345081. Currently the Screenshots menu option is shown for
|
|
// various text elements even though it is set to type "page". That bug
|
|
// should remove the need for next line.
|
|
maybeScreenshotsPresent: true,
|
|
skipFocusChange: true,
|
|
}
|
|
);
|
|
}
|
|
}
|
|
);
|
|
|
|
add_task(async function test_search_input() {
|
|
todo(
|
|
false,
|
|
"context-selectall is enabled on osx-e10s, and windows when" +
|
|
" it should be disabled"
|
|
);
|
|
await test_contextmenu(
|
|
"#input_search",
|
|
[
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
null,
|
|
"---",
|
|
null,
|
|
"spell-check-enabled",
|
|
true,
|
|
],
|
|
{ skipFocusChange: true }
|
|
);
|
|
});
|
|
|
|
add_task(async function test_text_input_readonly() {
|
|
todo(
|
|
false,
|
|
"context-selectall is enabled on osx-e10s, and windows when" +
|
|
" it should be disabled"
|
|
);
|
|
todo(
|
|
false,
|
|
"spell-check should not be enabled for input[readonly]. see bug 1246296"
|
|
);
|
|
await test_contextmenu(
|
|
"#input_readonly",
|
|
[
|
|
"context-undo",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-cut",
|
|
true,
|
|
"context-copy",
|
|
true,
|
|
"context-paste",
|
|
null, // ignore clipboard state
|
|
"context-delete",
|
|
false,
|
|
"---",
|
|
null,
|
|
"context-selectall",
|
|
null,
|
|
],
|
|
{
|
|
// XXX Bug 1345081. Currently the Screenshots menu option is shown for
|
|
// various text elements even though it is set to type "page". That bug
|
|
// should remove the need for next line.
|
|
maybeScreenshotsPresent: true,
|
|
skipFocusChange: true,
|
|
}
|
|
);
|
|
});
|
|
|
|
add_task(async function test_cleanup() {
|
|
BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
});
|