summaryrefslogtreecommitdiffstats
path: root/browser/components/extensions/test/browser/browser_ext_lastError.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/components/extensions/test/browser/browser_ext_lastError.js')
-rw-r--r--browser/components/extensions/test/browser/browser_ext_lastError.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/browser/components/extensions/test/browser/browser_ext_lastError.js b/browser/components/extensions/test/browser/browser_ext_lastError.js
new file mode 100644
index 0000000000..f7015f131b
--- /dev/null
+++ b/browser/components/extensions/test/browser/browser_ext_lastError.js
@@ -0,0 +1,61 @@
+"use strict";
+
+async function sendMessage(options) {
+ function background(options) {
+ browser.runtime.sendMessage(result => {
+ browser.test.assertEq(undefined, result, "Argument value");
+ if (options.checkLastError) {
+ browser.test.assertEq(
+ "runtime.sendMessage's message argument is missing",
+ browser.runtime.lastError?.message,
+ "lastError value"
+ );
+ }
+ browser.test.sendMessage("done");
+ });
+ }
+
+ let extension = ExtensionTestUtils.loadExtension({
+ background: `(${background})(${JSON.stringify(options)})`,
+ });
+
+ await extension.startup();
+
+ await extension.awaitMessage("done");
+
+ await extension.unload();
+}
+
+add_task(async function testLastError() {
+ // Not necessary in browser-chrome tests, but monitorConsole gripes
+ // if we don't call it.
+ SimpleTest.waitForExplicitFinish();
+
+ // Check that we have no unexpected console messages when lastError is
+ // checked.
+ let waitForConsole = new Promise(resolve => {
+ SimpleTest.monitorConsole(resolve, [
+ { message: /message argument is missing/, forbid: true },
+ ]);
+ });
+
+ await sendMessage({ checkLastError: true });
+
+ SimpleTest.endMonitorConsole();
+ await waitForConsole;
+
+ // Check that we do have a console message when lastError is not checked.
+ waitForConsole = new Promise(resolve => {
+ SimpleTest.monitorConsole(resolve, [
+ {
+ message:
+ /Unchecked lastError value: Error: runtime.sendMessage's message argument is missing/,
+ },
+ ]);
+ });
+
+ await sendMessage({});
+
+ SimpleTest.endMonitorConsole();
+ await waitForConsole;
+});