Bug 1316780: Part 2 - Remove ext-test.js. r?aswan draft
authorKris Maglione <maglione.k@gmail.com>
Thu, 10 Nov 2016 18:11:33 -0800
changeset 437584 36c5a5c4c3f045bd4dbfda9c2fc07328c0b088de
parent 437583 266991c11385ca8517be3744dd0e3818fa2e1a02
child 437585 4d5406ba3424e3502ffedc22ed552934ba587e38
push id35454
push usermaglione.k@gmail.com
push dateFri, 11 Nov 2016 04:34:52 +0000
reviewersaswan
bugs1316780
milestone52.0a1
Bug 1316780: Part 2 - Remove ext-test.js. r?aswan MozReview-Commit-ID: HGv8t0LZK4K
toolkit/components/extensions/ext-c-test.js
toolkit/components/extensions/ext-test.js
toolkit/components/extensions/extensions-toolkit.manifest
toolkit/components/extensions/jar.mn
--- a/toolkit/components/extensions/ext-c-test.js
+++ b/toolkit/components/extensions/ext-c-test.js
@@ -1,10 +1,15 @@
 "use strict";
 
+Components.utils.import("resource://gre/modules/ExtensionUtils.jsm");
+var {
+  SingletonEventManager,
+} = ExtensionUtils;
+
 /**
  * Checks whether the given error matches the given expectations.
  *
  * @param {*} error
  *        The error to check.
  * @param {string|RegExp|function|null} expectedError
  *        The expectation to check against. If this parameter is:
  *
@@ -66,58 +71,66 @@ function toSource(value) {
   try {
     return String(value.toSource());
   } catch (e) {
     return "<unknown>";
   }
 }
 
 function makeTestAPI(context) {
-  function assertTrue(...args) {
-    context.childManager.callParentFunctionNoReturn("test.assertTrue", args);
+  const {extension} = context;
+
+  function assertTrue(value, msg) {
+    extension.emit("test-result", Boolean(value), String(msg));
   }
 
   return {
     test: {
-      // These functions accept arbitrary values. Convert the parameters to
-      // make sure that the values can be cloned structurally for IPC.
+      sendMessage: function(...args) {
+        extension.emit("test-message", ...args);
+      },
 
-      sendMessage(...args) {
-        args = Cu.cloneInto(args, context.cloneScope);
-        context.childManager.callParentFunctionNoReturn("test.sendMessage", args);
+      notifyPass: function(msg) {
+        extension.emit("test-done", true, msg);
       },
 
-      assertTrue(value, msg) {
-        context.childManager.callParentFunctionNoReturn("test.assertTrue", [
-          Boolean(value),
-          String(msg),
-        ]);
+      notifyFail: function(msg) {
+        extension.emit("test-done", false, msg);
+      },
+
+      log: function(msg) {
+        extension.emit("test-log", true, msg);
+      },
+
+      fail: function(msg) {
+        assertTrue(false, msg);
       },
 
-      assertFalse(value, msg) {
-        context.childManager.callParentFunctionNoReturn("test.assertFalse", [
-          Boolean(value),
-          String(msg),
-        ]);
+      succeed: function(msg) {
+        assertTrue(true, msg);
+      },
+
+      assertTrue: function(value, msg) {
+        assertTrue(value, msg);
       },
 
-      assertEq(expected, actual, msg) {
+      assertFalse: function(value, msg) {
+        assertTrue(!value, msg);
+      },
+
+      assertEq: function(expected, actual, msg) {
         let equal = expected === actual;
-        expected += "";
-        actual += "";
+
+        expected = String(expected);
+        actual = String(actual);
+
         if (!equal && expected === actual) {
-          // Add an extra tag so that "expected === actual" in the parent is
-          // also false, despite the fact that the serialization is equal.
           actual += " (different)";
         }
-        context.childManager.callParentFunctionNoReturn("test.assertEq", [
-          expected,
-          actual,
-          String(msg),
-        ]);
+        extension.emit("test-eq", equal, String(msg), expected, actual);
       },
 
       assertRejects(promise, expectedError, msg) {
         // Wrap in a native promise for consistency.
         promise = Promise.resolve(promise);
 
         if (msg) {
           msg = `: ${msg}`;
@@ -146,14 +159,26 @@ function makeTestAPI(context) {
         } catch (error) {
           let errorMessage = toSource(error && error.message);
 
           assertTrue(errorMatches(error, expectedError, context),
                      `Promise rejected, expecting rejection to match ${toSource(expectedError)}` +
                      `got ${errorMessage}${msg}`);
         }
       },
+
+      onMessage: new SingletonEventManager(context, "test.onMessage", fire => {
+        let handler = (event, ...args) => {
+          context.runSafe(fire, ...args);
+        };
+
+        extension.on("test-harness-message", handler);
+        return () => {
+          extension.off("test-harness-message", handler);
+        };
+      }).api(),
     },
   };
 }
+
 extensions.registerSchemaAPI("test", "addon_child", makeTestAPI);
 extensions.registerSchemaAPI("test", "content_child", makeTestAPI);
 
deleted file mode 100644
--- a/toolkit/components/extensions/ext-test.js
+++ /dev/null
@@ -1,68 +0,0 @@
-"use strict";
-
-Components.utils.import("resource://gre/modules/ExtensionUtils.jsm");
-var {
-  EventManager,
-} = ExtensionUtils;
-
-function makeTestAPI(context) {
-  let {extension} = context;
-  return {
-    test: {
-      sendMessage: function(...args) {
-        extension.emit("test-message", ...args);
-      },
-
-      notifyPass: function(msg) {
-        extension.emit("test-done", true, msg);
-      },
-
-      notifyFail: function(msg) {
-        extension.emit("test-done", false, msg);
-      },
-
-      log: function(msg) {
-        extension.emit("test-log", true, msg);
-      },
-
-      fail: function(msg) {
-        extension.emit("test-result", false, msg);
-      },
-
-      succeed: function(msg) {
-        extension.emit("test-result", true, msg);
-      },
-
-      assertTrue: function(value, msg) {
-        extension.emit("test-result", Boolean(value), String(msg));
-      },
-
-      assertFalse: function(value, msg) {
-        extension.emit("test-result", !value, String(msg));
-      },
-
-      assertEq: function(expected, actual, msg) {
-        let equal = expected === actual;
-        expected += "";
-        actual += "";
-        if (!equal && expected === actual) {
-          actual += " (different)";
-        }
-        extension.emit("test-eq", equal, String(msg), expected, actual);
-      },
-
-      onMessage: new EventManager(context, "test.onMessage", fire => {
-        let handler = (event, ...args) => {
-          context.runSafe(fire, ...args);
-        };
-
-        extension.on("test-harness-message", handler);
-        return () => {
-          extension.off("test-harness-message", handler);
-        };
-      }).api(),
-    },
-  };
-}
-extensions.registerSchemaAPI("test", "addon_parent", makeTestAPI);
-extensions.registerSchemaAPI("test", "content_parent", makeTestAPI);
--- a/toolkit/components/extensions/extensions-toolkit.manifest
+++ b/toolkit/components/extensions/extensions-toolkit.manifest
@@ -7,17 +7,16 @@ category webextension-scripts management
 category webextension-scripts notifications chrome://extensions/content/ext-notifications.js
 category webextension-scripts i18n chrome://extensions/content/ext-i18n.js
 category webextension-scripts idle chrome://extensions/content/ext-idle.js
 category webextension-scripts webRequest chrome://extensions/content/ext-webRequest.js
 category webextension-scripts webNavigation chrome://extensions/content/ext-webNavigation.js
 category webextension-scripts runtime chrome://extensions/content/ext-runtime.js
 category webextension-scripts extension chrome://extensions/content/ext-extension.js
 category webextension-scripts storage chrome://extensions/content/ext-storage.js
-category webextension-scripts test chrome://extensions/content/ext-test.js
 category webextension-scripts topSites chrome://extensions/content/ext-topSites.js
 
 # scripts specific for content process.
 category webextension-scripts-content extension chrome://extensions/content/ext-c-extension.js
 category webextension-scripts-content i18n chrome://extensions/content/ext-i18n.js
 category webextension-scripts-content runtime chrome://extensions/content/ext-c-runtime.js
 category webextension-scripts-content test chrome://extensions/content/ext-c-test.js
 category webextension-scripts-content storage chrome://extensions/content/ext-c-storage.js
--- a/toolkit/components/extensions/jar.mn
+++ b/toolkit/components/extensions/jar.mn
@@ -13,15 +13,14 @@ toolkit.jar:
     content/extensions/ext-notifications.js
     content/extensions/ext-i18n.js
     content/extensions/ext-idle.js
     content/extensions/ext-webRequest.js
     content/extensions/ext-webNavigation.js
     content/extensions/ext-runtime.js
     content/extensions/ext-extension.js
     content/extensions/ext-storage.js
-    content/extensions/ext-test.js
     content/extensions/ext-topSites.js
     content/extensions/ext-c-backgroundPage.js
     content/extensions/ext-c-extension.js
     content/extensions/ext-c-runtime.js
     content/extensions/ext-c-storage.js
     content/extensions/ext-c-test.js