B2G/gecko/browser/components/sessionstore/test/browser_423132.js
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
This Source Code Form is subject to the terms of the Mozilla Public
License, v.
This Source Code Form is subject to the terms of the Mozilla Public License v .
function test() {
  waitForExplicitFinish();
  let cs = Cc["@mozilla.org/cookiemanager;1"].getService(Ci.nsICookieManager2);
  cs.removeAll();
  gPrefService.setIntPref("browser.sessionstore.interval", 0);
  const testURL = "http://mochi.test:8888/browser/" +
    "browser/components/sessionstore/test/browser_423132_sample.html";
  let newWin = openDialog(location, "_blank", "chrome,all,dialog=no", "about:blank");
  newWin.addEventListener("load", function (aEvent) {
    newWin.removeEventListener("load", arguments.callee, false);
    newWin.gBrowser.loadURI(testURL, null, null);
    newWin.gBrowser.addEventListener("load", function (aEvent) {
      newWin.gBrowser.removeEventListener("load", arguments.callee, true);
      let state = ss.getWindowState(newWin);
      let e = cs.enumerator;
      let cookie;
      let i = 0;
      while (e.hasMoreElements()) {
        cookie = e.getNext().QueryInterface(Ci.nsICookie);
        i++;
      }
      is(i, 1, "expected one cookie");
      cs.removeAll();
      ss.setWindowState(newWin, state, true);
      e = cs.enumerator;
      let cookie2;
      while (e.hasMoreElements()) {
        cookie2 = e.getNext().QueryInterface(Ci.nsICookie);
        if (cookie.name == cookie2.name)
          break;
      }
      is(cookie.name, cookie2.name, "cookie name successfully restored");
      is(cookie.value, cookie2.value, "cookie value successfully restored");
      is(cookie.path, cookie2.path, "cookie path successfully restored");
      if (gPrefService.prefHasUserValue("browser.sessionstore.interval"))
        gPrefService.clearUserPref("browser.sessionstore.interval");
      cs.removeAll();
      newWin.close();
      finish();
    }, true);
  }, false);
}
function test ( ) { waitForExplicitFinish ( ) ; let cs = Cc [ "@mozilla.org/cookiemanager;1" ] . getService ( Ci . nsICookieManager2 ) ; cs . removeAll ( ) ; gPrefService . setIntPref ( "browser.sessionstore.interval" , 0 ) ; const testURL = "http://mochi.test:8888/browser/" + "browser/components/sessionstore/test/browser_423132_sample.html" ; let newWin = openDialog ( location , "_blank" , "chrome,all,dialog=no" , "about:blank" ) ; newWin . addEventListener ( "load" , function ( aEvent ) { newWin . removeEventListener ( "load" , arguments . callee , false ) ; newWin . gBrowser . loadURI ( testURL , null , null ) ; newWin . gBrowser . addEventListener ( "load" , function ( aEvent ) { newWin . gBrowser . removeEventListener ( "load" , arguments . callee , true ) ; let state = ss . getWindowState ( newWin ) ; let e = cs . enumerator ; let cookie ; let i = 0 ; while ( e . hasMoreElements ( ) ) { cookie = e . getNext ( ) . QueryInterface ( Ci . nsICookie ) ; i ++ ; } is ( i , 1 , "expected one cookie" ) ; cs . removeAll ( ) ; ss . setWindowState ( newWin , state , true ) ; e = cs . enumerator ; let cookie2 ; while ( e . hasMoreElements ( ) ) { cookie2 = e . getNext ( ) . QueryInterface ( Ci . nsICookie ) ; if ( cookie . name == cookie2 . name ) break ; } is ( cookie . name , cookie2 . name , "cookie name successfully restored" ) ; is ( cookie . value , cookie2 . value , "cookie value successfully restored" ) ; is ( cookie . path , cookie2 . path , "cookie path successfully restored" ) ; if ( gPrefService . prefHasUserValue ( "browser.sessionstore.interval" ) ) gPrefService . clearUserPref ( "browser.sessionstore.interval" ) ; cs . removeAll ( ) ; newWin . close ( ) ; finish ( ) ; } , true ) ; } , false ) ; }
This Source Code Form is subject to the terms of the Mozilla Public
 License, v. 2.0.
This Source Code Form is subject to the terms of the Mozilla Public License v . 2 . 0 .
// test that cookies are stored and restored correctly by sessionstore, // bug 423132. // make sure that sessionstore.js can be forced to be created by setting // the interval pref to 0 // open a new window // make sure sessionstore saves the cookie data, then close the window // get the sessionstore state for the window // verify our cookie got set during pageload // remove the cookie // restore the window state // at this point, the cookie should be restored... // clean up