diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /browser/base/content/test/general/browser_contextmenu_input.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'browser/base/content/test/general/browser_contextmenu_input.js')
-rw-r--r-- | browser/base/content/test/general/browser_contextmenu_input.js | 243 |
1 files changed, 243 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_contextmenu_input.js b/browser/base/content/test/general/browser_contextmenu_input.js new file mode 100644 index 000000000..cfc7b7529 --- /dev/null +++ b/browser/base/content/test/general/browser_contextmenu_input.js @@ -0,0 +1,243 @@ +"use strict"; + +let contextMenu; +let hasPocket = Services.prefs.getBoolPref("extensions.pocket.enabled"); + +add_task(function* test_setup() { + const example_base = "http://example.com/browser/browser/base/content/test/general/"; + const url = example_base + "subtst_contextmenu_input.html"; + yield BrowserTestUtils.openNewForegroundTab(gBrowser, url); + + const chrome_base = "chrome://mochitests/content/browser/browser/base/content/test/general/"; + const contextmenu_common = chrome_base + "contextmenu_common.js"; + Services.scriptloader.loadSubScript(contextmenu_common, this); +}); + +add_task(function* test_text_input() { + yield 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(function* test_text_input_spellcheck() { + yield 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. + *preCheckContextMenuFn() { + yield ContentTask.spawn(gBrowser.selectedBrowser, null, function*() { + let doc = content.document; + let input = doc.getElementById("input_spellcheck_no_value"); + input.setAttribute("spellcheck", "true"); + input.clientTop; // force layout flush + }); + }, + } + ); +}); + +add_task(function* test_text_input_spellcheckwrong() { + yield 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(function* test_text_input_spellcheckcorrect() { + yield 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(function* test_text_input_disabled() { + yield 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(function* test_password_input() { + todo(false, "context-selectall is enabled on osx-e10s, and windows when" + + " it should be disabled"); + yield 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. + *preCheckContextMenuFn() { + yield ContentTask.spawn(gBrowser.selectedBrowser, null, function*() { + let doc = content.document; + let input = doc.getElementById("input_password"); + input.type = "password"; + input.clientTop; // force layout flush + }); + }, + *postCheckContextMenuFn() { + yield ContentTask.spawn(gBrowser.selectedBrowser, null, function*() { + let doc = content.document; + let input = doc.getElementById("input_password"); + input.type = "text"; + input.clientTop; // force layout flush + }); + }, + } + ); +}); + +add_task(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"]) { + yield 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(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"]) { + yield 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-viewbgimage", false, + "context-selectall", null, + "---", null, + "context-viewsource", true, + "context-viewinfo", true], + {skipFocusChange: true} + ); + } +}); + +add_task(function* test_search_input() { + todo(false, "context-selectall is enabled on osx-e10s, and windows when" + + " it should be disabled"); + yield 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(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"); + yield 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], + {skipFocusChange: true} + ); +}); + +add_task(function* test_cleanup() { + yield BrowserTestUtils.removeTab(gBrowser.selectedTab); +}); |