Bug 1287007 - Fix timing issue in test_ext_storage.js draft
authorRob Wu <rob@robwu.nl>
Tue, 13 Sep 2016 00:45:00 -0700
changeset 428443 126af076764d9fc8a24210d54af12adc47426811
parent 428442 bccf30481d359fe68637f6b6a9e487c88d99fdbc
child 428444 a86fd1c2502d51b36d7e9d8b6c4e788002d205d7
push id33305
push userbmo:rob@robwu.nl
push dateSun, 23 Oct 2016 20:56:25 +0000
bugs1287007
milestone52.0a1
Bug 1287007 - Fix timing issue in test_ext_storage.js MozReview-Commit-ID: 63Ra7ThuHuf
toolkit/components/extensions/test/mochitest/test_ext_storage_content.html
toolkit/components/extensions/test/xpcshell/test_ext_storage.js
--- a/toolkit/components/extensions/test/mochitest/test_ext_storage_content.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_storage_content.html
@@ -111,17 +111,21 @@ function contentScript() {
     browser.test.assertFalse("test-prop1" in data, "prop1 absent");
     browser.test.assertFalse("test-prop2" in data, "prop2 absent");
 
   // Test cache invalidation.
   }).then(() => {
     return storage.set({"test-prop1": "value1", "test-prop2": "value2"});
   }).then(() => {
     globalChanges = {};
-    browser.test.sendMessage("invalidate");
+    // Schedule sendMessage after onMessage because the other end immediately
+    // sends a message.
+    Promise.resolve().then(() => {
+      browser.test.sendMessage("invalidate");
+    });
     return new Promise(resolve => browser.test.onMessage.addListener(resolve));
   }).then(() => {
     return check("test-prop1", "value1");
   }).then(() => {
     return check("test-prop2", "value2");
 
   // Make sure we can store complex JSON data.
   }).then(() => {
--- a/toolkit/components/extensions/test/xpcshell/test_ext_storage.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_storage.js
@@ -97,17 +97,21 @@ function backgroundScript() {
     browser.test.assertFalse("test-prop1" in data, "prop1 absent");
     browser.test.assertFalse("test-prop2" in data, "prop2 absent");
 
   // Test cache invalidation.
   }).then(() => {
     return storage.set({"test-prop1": "value1", "test-prop2": "value2"});
   }).then(() => {
     globalChanges = {};
-    browser.test.sendMessage("invalidate");
+    // Schedule sendMessage after onMessage because the other end immediately
+    // sends a message.
+    Promise.resolve().then(() => {
+      browser.test.sendMessage("invalidate");
+    });
     return new Promise(resolve => browser.test.onMessage.addListener(resolve));
   }).then(() => {
     return check("test-prop1", "value1");
   }).then(() => {
     return check("test-prop2", "value2");
 
   // Make sure we can store complex JSON data.
   }).then(() => {