summaryrefslogtreecommitdiffstats
path: root/b2g/components/test/mochitest/systemapp_helper.js
diff options
context:
space:
mode:
Diffstat (limited to 'b2g/components/test/mochitest/systemapp_helper.js')
-rw-r--r--b2g/components/test/mochitest/systemapp_helper.js173
1 files changed, 0 insertions, 173 deletions
diff --git a/b2g/components/test/mochitest/systemapp_helper.js b/b2g/components/test/mochitest/systemapp_helper.js
deleted file mode 100644
index 768b221fe..000000000
--- a/b2g/components/test/mochitest/systemapp_helper.js
+++ /dev/null
@@ -1,173 +0,0 @@
-var Cu = Components.utils;
-
-const { Services } = Cu.import("resource://gre/modules/Services.jsm");
-
-// Load a duplicated copy of the jsm to prevent messing with the currently running one
-var scope = {};
-Services.scriptloader.loadSubScript("resource://gre/modules/SystemAppProxy.jsm", scope);
-const { SystemAppProxy } = scope;
-
-var frame;
-var customEventTarget;
-
-var index = -1;
-function next() {
- index++;
- if (index >= steps.length) {
- assert.ok(false, "Shouldn't get here!");
- return;
- }
- try {
- steps[index]();
- } catch(ex) {
- assert.ok(false, "Caught exception: " + ex);
- }
-}
-
-// Listen for events received by the system app document
-// to ensure that we receive all of them, in an expected order and time
-var isLoaded = false;
-var isReady = false;
-var n = 0;
-function listener(event) {
- if (!isLoaded) {
- assert.ok(false, "Received event before the iframe is loaded");
- return;
- }
- n++;
- if (n == 1) {
- assert.equal(event.type, "mozChromeEvent");
- assert.equal(event.detail.name, "first");
- } else if (n == 2) {
- assert.equal(event.type, "custom");
- assert.equal(event.detail.name, "second");
-
- next(); // call checkEventPendingBeforeLoad
- } else if (n == 3) {
- if (!isReady) {
- assert.ok(false, "Received event before the iframe is loaded");
- return;
- }
-
- assert.equal(event.type, "custom");
- assert.equal(event.detail.name, "third");
- } else if (n == 4) {
- if (!isReady) {
- assert.ok(false, "Received event before the iframe is loaded");
- return;
- }
-
- assert.equal(event.type, "mozChromeEvent");
- assert.equal(event.detail.name, "fourth");
-
- next(); // call checkEventDispatching
- } else if (n == 5) {
- assert.equal(event.type, "custom");
- assert.equal(event.detail.name, "fifth");
- } else if (n === 6) {
- assert.equal(event.type, "mozChromeEvent");
- assert.equal(event.detail.name, "sixth");
- } else if (n === 7) {
- assert.equal(event.type, "custom");
- assert.equal(event.detail.name, "seventh");
- assert.equal(event.target, customEventTarget);
-
- next(); // call checkEventListening();
- } else {
- assert.ok(false, "Unexpected event of type " + event.type);
- }
-}
-
-
-var steps = [
- function earlyEvents() {
- // Immediately try to send events
- SystemAppProxy._sendCustomEvent("mozChromeEvent", { name: "first" }, true);
- SystemAppProxy._sendCustomEvent("custom", { name: "second" }, true);
- next();
- },
-
- function createFrame() {
- // Create a fake system app frame
- let win = Services.wm.getMostRecentWindow("navigator:browser");
- let doc = win.document;
- frame = doc.createElement("iframe");
- doc.documentElement.appendChild(frame);
-
- customEventTarget = frame.contentDocument.body;
-
- // Ensure that events are correctly sent to the frame.
- // `listener` is going to call next()
- frame.contentWindow.addEventListener("mozChromeEvent", listener);
- frame.contentWindow.addEventListener("custom", listener);
-
- // Ensure that listener being registered before the system app is ready
- // are correctly removed from the pending list
- function removedListener() {
- assert.ok(false, "Listener isn't correctly removed from the pending list");
- }
- SystemAppProxy.addEventListener("mozChromeEvent", removedListener);
- SystemAppProxy.removeEventListener("mozChromeEvent", removedListener);
-
- // Register it to the JSM
- SystemAppProxy.registerFrame(frame);
- assert.ok(true, "Frame created and registered");
-
- frame.contentWindow.addEventListener("load", function onload() {
- frame.contentWindow.removeEventListener("load", onload);
- assert.ok(true, "Frame document loaded");
-
- // Declare that the iframe is now loaded.
- // That should dispatch early events
- isLoaded = true;
- SystemAppProxy.setIsLoaded();
- assert.ok(true, "Frame declared as loaded");
-
- let gotFrame = SystemAppProxy.getFrame();
- assert.equal(gotFrame, frame, "getFrame returns the frame we passed");
-
- // Once pending events are received,
- // we will run checkEventDispatching from `listener` function
- });
-
- frame.setAttribute("src", "data:text/html,system app");
- },
-
- function checkEventPendingBeforeLoad() {
- // Frame is loaded but not ready,
- // these events should queue before the System app is ready.
- SystemAppProxy._sendCustomEvent("custom", { name: "third" });
- SystemAppProxy.dispatchEvent({ name: "fourth" });
-
- isReady = true;
- SystemAppProxy.setIsReady();
- // Once this 4th event is received, we will run checkEventDispatching
- },
-
- function checkEventDispatching() {
- // Send events after the iframe is ready,
- // they should be dispatched right away
- SystemAppProxy._sendCustomEvent("custom", { name: "fifth" });
- SystemAppProxy.dispatchEvent({ name: "sixth" });
- SystemAppProxy._sendCustomEvent("custom", { name: "seventh" }, false, customEventTarget);
- // Once this 7th event is received, we will run checkEventListening
- },
-
- function checkEventListening() {
- SystemAppProxy.addEventListener("mozContentEvent", function onContentEvent(event) {
- assert.equal(event.detail.name, "first-content", "received a system app event");
- SystemAppProxy.removeEventListener("mozContentEvent", onContentEvent);
-
- next();
- });
- let win = frame.contentWindow;
- win.dispatchEvent(new win.CustomEvent("mozContentEvent", { detail: {name: "first-content"} }));
- },
-
- function endOfTest() {
- frame.remove();
- sendAsyncMessage("finish");
- }
-];
-
-next();