Bug 1190325 - Test coverage for runtime extension API, r?kmag draft
authorbsilverberg <bsilverberg@mozilla.com>
Wed, 06 Apr 2016 09:36:45 -0400
changeset 348238 ede7044edc9dfcfdbfa202d753513d8aeb6198a7
parent 347336 43360777775c3049b405168c2b303941cd74b9de
child 517814 2e61a9ed682276ab971aeb75b74e08d3602971ec
push id14785
push userbmo:bob.silverberg@gmail.com
push dateThu, 07 Apr 2016 01:45:55 +0000
reviewerskmag
bugs1190325
milestone48.0a1
Bug 1190325 - Test coverage for runtime extension API, r?kmag Add coverage for: * The |openOptionsPage| method when |options_ui| is missing from the manifest. MozReview-Commit-ID: BwVMzDOECl3
browser/components/extensions/test/browser/browser_ext_runtime_openOptionsPage.js
--- a/browser/components/extensions/test/browser/browser_ext_runtime_openOptionsPage.js
+++ b/browser/components/extensions/test/browser/browser_ext_runtime_openOptionsPage.js
@@ -221,8 +221,39 @@ add_task(function* test_tab_options() {
     },
   });
 
   yield extension.awaitFinish("options-ui-tab");
   yield extension.unload();
 
   yield BrowserTestUtils.removeTab(tab);
 });
+
+add_task(function* test_options_no_manifest() {
+  let extension = yield loadExtension({
+    manifest: {},
+
+    background: function() {
+      browser.test.log("Try to open options page when not specified in the manifest.");
+
+      browser.runtime.openOptionsPage().then(
+        () => {
+          browser.test.fail("Opening options page without one specified in the manifest generated an error");
+          browser.test.notifyFail("options-no-manifest");
+        },
+        error => {
+          let expected = "No `options_ui` declared";
+          browser.test.assertTrue(
+            error.message.includes(expected),
+            `Got expected error (got: '${error.message}', expected: '${expected}'`);
+        }
+      ).then(() => {
+        browser.test.notifyPass("options-no-manifest");
+      }).catch(error => {
+        browser.test.log(`Error: ${error} :: ${error.stack}`);
+        browser.test.notifyFail("options-no-manifest");
+      });
+    },
+  });
+
+  yield extension.awaitFinish("options-no-manifest");
+  yield extension.unload();
+});