summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/mochitest/test_ext_pageAction_onClicked.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /toolkit/components/extensions/test/mochitest/test_ext_pageAction_onClicked.html
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/extensions/test/mochitest/test_ext_pageAction_onClicked.html')
-rw-r--r--toolkit/components/extensions/test/mochitest/test_ext_pageAction_onClicked.html111
1 files changed, 111 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/mochitest/test_ext_pageAction_onClicked.html b/toolkit/components/extensions/test/mochitest/test_ext_pageAction_onClicked.html
new file mode 100644
index 0000000000..5fce66159d
--- /dev/null
+++ b/toolkit/components/extensions/test/mochitest/test_ext_pageAction_onClicked.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>pageAction.onClicked test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
+ <script type="text/javascript" src="head.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
+</head>
+<body>
+
+<script type="text/javascript">
+"use strict";
+
+function createExtension(background = {}) {
+ return ExtensionTestUtils.loadExtension({
+ manifest: {
+ background,
+ page_action: { show_matches: ["<all_urls>"] },
+ },
+ async background() {
+ async function checkIsHandlingUserInput() {
+ try {
+ // permissions.request is declared with requireUserInput,
+ // so it would reject if inputHandling is false.
+ let granted = await browser.permissions.request({});
+ // We haven't requested any permissions, so the API call grants the
+ // requested permissions without actually prompting the user.
+ browser.test.assertTrue(granted, "empty permissions granted");
+ return true;
+ } catch (e) {
+ browser.test.assertEq(
+ e?.message,
+ "permissions.request may only be called from a user input handler",
+ "Expected error when permissions.request rejects"
+ );
+ return false;
+ }
+ }
+ browser.pageAction.onClicked.addListener(async () => {
+ browser.test.assertTrue(
+ await checkIsHandlingUserInput(),
+ "pageAction.onClicked is handling user input"
+ );
+ browser.test.notifyPass("action-clicked");
+ });
+
+ // Sanity check: Verify that pageAction is shown (because it needs to be
+ // in order to trigger pageAction.onClicked).
+ let [tab] = await browser.tabs.query({
+ active: true,
+ currentWindow: true,
+ });
+ browser.test.assertTrue(
+ await browser.pageAction.isShown({ tabId: tab.id }),
+ "pageAction should be visible (due to page_action.show_matches)"
+ );
+
+ browser.test.assertFalse(
+ await checkIsHandlingUserInput(),
+ "not handling user input by default"
+ );
+ browser.test.sendMessage("background-ready");
+ },
+ });
+}
+
+add_task(async function test_pageAction_onClicked_and_inputHandling() {
+ const extension = createExtension();
+
+ await extension.startup();
+ await extension.awaitMessage("background-ready");
+
+ await AppTestDelegate.clickPageAction(window, extension);
+ await extension.awaitFinish("action-clicked");
+ await AppTestDelegate.closePageAction(window, extension);
+
+ await extension.unload();
+});
+
+add_task(async function test_pageAction_onClicked_persistent_event() {
+ const extension = createExtension({ persistent: false });
+
+ await extension.startup();
+ await extension.awaitMessage("background-ready");
+
+ assertPersistentListeners(extension, "pageAction", ["onClicked"], {
+ primed: false,
+ });
+
+ await extension.terminateBackground();
+ assertPersistentListeners(extension, "pageAction", ["onClicked"], {
+ primed: true,
+ });
+
+ await AppTestDelegate.clickPageAction(window, extension);
+
+ // Background script will run again.
+ await extension.awaitMessage("background-ready");
+ await extension.awaitFinish("action-clicked");
+
+ await AppTestDelegate.closePageAction(window, extension);
+
+ await extension.unload();
+});
+
+</script>
+
+</body>
+</html>