diff options
Diffstat (limited to 'browser/components/sessionstore/test/browser_restore_cookies_noOriginAttributes.js')
-rw-r--r-- | browser/components/sessionstore/test/browser_restore_cookies_noOriginAttributes.js | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/browser/components/sessionstore/test/browser_restore_cookies_noOriginAttributes.js b/browser/components/sessionstore/test/browser_restore_cookies_noOriginAttributes.js new file mode 100644 index 000000000..5767c6c0f --- /dev/null +++ b/browser/components/sessionstore/test/browser_restore_cookies_noOriginAttributes.js @@ -0,0 +1,171 @@ +/* + * Bug 1267910 - The regression test case for session cookies. + */ + +"use strict"; + +const TEST_HOST = "www.example.com"; +const COOKIE = +{ + name: "test1", + value: "yes1", + path: "/browser/browser/components/sessionstore/test/" +}; +const SESSION_DATA = ` +{ + "version": ["sessionrestore", 1], + "windows": [{ + "tabs": [{ + "entries": [], + "lastAccessed": 1463893009797, + "hidden": false, + "attributes": {}, + "image": null + }, { + "entries": [{ + "url": "http://www.example.com/browser/browser/components/sessionstore/test/browser_1267910_page.html", + \"charset": "UTF-8", + "ID": 0, + "docshellID": 2, + "originalURI": "http://www.example.com/browser/browser/components/sessionstore/test/browser_1267910_page.html", + \"docIdentifier": 0, + "persist": true + }], + "lastAccessed": 1463893009321, + "hidden": false, + "attributes": {}, + "userContextId": 0, + "index": 1, + "image": "http://www.example.com/favicon.ico" + }], + "selected": 1, + "_closedTabs": [], + "busy": false, + "width": 1024, + "height": 768, + "screenX": 4, + "screenY": 23, + "sizemode": "normal", + "cookies": [{ + "host": "www.example.com", + "value": "yes1", + "path": "/browser/browser/components/sessionstore/test/", + "name": "test1" + }] + }], + "selectedWindow": 1, + "_closedWindows": [], + "session": { + "lastUpdate": 1463893009801, + "startTime": 1463893007134, + "recentCrashes": 0 + }, + "global": {} +}`; +const SESSION_DATA_OA = ` +{ + "version": ["sessionrestore", 1], + "windows": [{ + "tabs": [{ + "entries": [], + "lastAccessed": 1463893009797, + "hidden": false, + "attributes": {}, + "image": null + }, { + "entries": [{ + "url": "http://www.example.com/browser/browser/components/sessionstore/test/browser_1267910_page.html", + \"charset": "UTF-8", + "ID": 0, + "docshellID": 2, + "originalURI": "http://www.example.com/browser/browser/components/sessionstore/test/browser_1267910_page.html", + \"docIdentifier": 0, + "persist": true + }], + "lastAccessed": 1463893009321, + "hidden": false, + "attributes": {}, + "userContextId": 0, + "index": 1, + "image": "http://www.example.com/favicon.ico" + }], + "selected": 1, + "_closedTabs": [], + "busy": false, + "width": 1024, + "height": 768, + "screenX": 4, + "screenY": 23, + "sizemode": "normal", + "cookies": [{ + "host": "www.example.com", + "value": "yes1", + "path": "/browser/browser/components/sessionstore/test/", + "name": "test1", + "originAttributes": { + "addonId": "", + "appId": 0, + "inIsolatedMozBrowser": false, + "userContextId": 0 + } + }] + }], + "selectedWindow": 1, + "_closedWindows": [], + "session": { + "lastUpdate": 1463893009801, + "startTime": 1463893007134, + "recentCrashes": 0 + }, + "global": {} +}`; + +add_task(function* run_test() { + // Wait until initialization is complete. + yield SessionStore.promiseInitialized; + + // Clear cookies. + Services.cookies.removeAll(); + + // Open a new window. + let win = yield promiseNewWindowLoaded(); + + // Restore window with session cookies that have no originAttributes. + ss.setWindowState(win, SESSION_DATA, true); + + let enumerator = Services.cookies.getCookiesFromHost(TEST_HOST, {}); + let cookie; + let cookieCount = 0; + while (enumerator.hasMoreElements()) { + cookie = enumerator.getNext().QueryInterface(Ci.nsICookie); + cookieCount++; + } + + // Check that the cookie is restored successfully. + is(cookieCount, 1, "expected one cookie"); + is(cookie.name, COOKIE.name, "cookie name successfully restored"); + is(cookie.value, COOKIE.value, "cookie value successfully restored"); + is(cookie.path, COOKIE.path, "cookie path successfully restored"); + + // Clear cookies. + Services.cookies.removeAll(); + + // Restore window with session cookies that have originAttributes within. + ss.setWindowState(win, SESSION_DATA_OA, true); + + enumerator = Services.cookies.getCookiesFromHost(TEST_HOST, {}); + cookieCount = 0; + while (enumerator.hasMoreElements()) { + cookie = enumerator.getNext().QueryInterface(Ci.nsICookie); + cookieCount++; + } + + // Check that the cookie is restored successfully. + is(cookieCount, 1, "expected one cookie"); + is(cookie.name, COOKIE.name, "cookie name successfully restored"); + is(cookie.value, COOKIE.value, "cookie value successfully restored"); + is(cookie.path, COOKIE.path, "cookie path successfully restored"); + + // Close our window. + yield BrowserTestUtils.closeWindow(win); +}); |