Bug 901916 - Make browser_sessionStorage.js more robust. r=smacleod, a=test-only
authorDavid Rajchenbach-Teller <dteller@mozilla.com>
Sat, 31 Aug 2013 10:15:57 -0400
changeset 213353 9feb51769e20c50392cd6c950901e8deb1489fe4
parent 213352 314b9508f907f4f26baef0d0cb646e97517424d1
child 213354 2058e98598737c4fecf03b2605d2708893c2aff4
push id3
push usergszorc@mozilla.com
push dateWed, 29 Oct 2014 02:45:36 +0000
reviewerssmacleod, test-only
bugs901916
milestone25.0a2
Bug 901916 - Make browser_sessionStorage.js more robust. r=smacleod, a=test-only
browser/components/sessionstore/test/browser_sessionStorage.js
--- a/browser/components/sessionstore/test/browser_sessionStorage.js
+++ b/browser/components/sessionstore/test/browser_sessionStorage.js
@@ -39,48 +39,55 @@ function waitForStorageChange(aTab) {
 
 function test() {
 
   waitForExplicitFinish();
 
   let tab;
   Task.spawn(function() {
     try {
+      let SESSION_STORAGE_KEY = "SESSION_STORAGE_KEY " + Math.random();
+      let SESSION_STORAGE_VALUE = "SESSION_STORAGE_VALUE " + Math.random();
+      let LOCAL_STORAGE_KEY = "LOCAL_STORAGE_KEY " + Math.random();
+      let LOCAL_STORAGE_VALUE = "LOCAL_STORAGE_VALUE " + Math.random();
+
       tab = gBrowser.addTab("http://example.com");
       // about:home supports sessionStorage and localStorage
 
       let win = tab.linkedBrowser.contentWindow;
 
       // Flush loading and next save, call getBrowserState()
       // a few times to ensure that everything is cached.
       yield promiseBrowserLoaded(tab.linkedBrowser);
       yield forceWriteState();
       info("Calling getBrowserState() to populate cache");
       ss.getBrowserState();
 
       info("Change sessionStorage, ensure that state is saved");
-      win.sessionStorage["SESSION_STORAGE_KEY"] = "SESSION_STORAGE_VALUE";
-      let storageChanged = yield waitForStorageChange(tab);
+      let storageChangedPromise = waitForStorageChange(tab);
+      win.sessionStorage[SESSION_STORAGE_KEY] = SESSION_STORAGE_VALUE;
+      let storageChanged = yield storageChangedPromise;
       ok(storageChanged, "Changing sessionStorage triggered the right message");
       yield forceWriteState();
 
       let state = ss.getBrowserState();
-      ok(state.indexOf("SESSION_STORAGE_KEY") != -1, "Key appears in state");
-      ok(state.indexOf("SESSION_STORAGE_VALUE") != -1, "Value appears in state");
+      ok(state.indexOf(SESSION_STORAGE_KEY) != -1, "Key appears in state");
+      ok(state.indexOf(SESSION_STORAGE_VALUE) != -1, "Value appears in state");
 
 
       info("Change localStorage, ensure that state is not saved");
-      win.localStorage["LOCAL_STORAGE_KEY"] = "LOCAL_STORAGE_VALUE";
-      storageChanged = yield waitForStorageChange(tab);
+      storageChangedPromise = waitForStorageChange(tab);
+      win.localStorage[LOCAL_STORAGE_KEY] = LOCAL_STORAGE_VALUE;
+      storageChanged = yield storageChangedPromise;
       ok(!storageChanged, "Changing localStorage did not trigger a message");
       yield forceWriteState();
 
       state = ss.getBrowserState();
-      ok(state.indexOf("LOCAL_STORAGE_KEY") == -1, "Key does not appear in state");
-      ok(state.indexOf("LOCAL_STORAGE_VALUE") == -1, "Value does not appear in state");
+      ok(state.indexOf(LOCAL_STORAGE_KEY) == -1, "Key does not appear in state");
+      ok(state.indexOf(LOCAL_STORAGE_VALUE) == -1, "Value does not appear in state");
     } catch (ex) {
       ok(false, ex);
       info(ex.stack);
     } finally {
       // clean up
       if (tab) {
         gBrowser.removeTab(tab);
       }