diff options
Diffstat (limited to 'devtools')
-rw-r--r-- | devtools/client/storage/test/browser.ini | 1 | ||||
-rw-r--r-- | devtools/client/storage/test/browser_storage_cookies_domain_port.js | 29 | ||||
-rw-r--r-- | devtools/client/storage/test/head.js | 1 | ||||
-rw-r--r-- | devtools/server/actors/storage.js | 13 |
4 files changed, 40 insertions, 4 deletions
diff --git a/devtools/client/storage/test/browser.ini b/devtools/client/storage/test/browser.ini index 52ea71226..0290aaa5e 100644 --- a/devtools/client/storage/test/browser.ini +++ b/devtools/client/storage/test/browser.ini @@ -27,6 +27,7 @@ support-files = [browser_storage_cookies_add.js] [browser_storage_cookies_delete_all.js] [browser_storage_cookies_domain.js] +[browser_storage_cookies_domain_port.js] [browser_storage_cookies_edit.js] [browser_storage_cookies_edit_keyboard.js] [browser_storage_cookies_tab_navigation.js] diff --git a/devtools/client/storage/test/browser_storage_cookies_domain_port.js b/devtools/client/storage/test/browser_storage_cookies_domain_port.js new file mode 100644 index 000000000..a5bc2e5be --- /dev/null +++ b/devtools/client/storage/test/browser_storage_cookies_domain_port.js @@ -0,0 +1,29 @@ +/* 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/. */ + +/* import-globals-from ../../framework/test/shared-head.js */ + +"use strict"; + +// Test that cookies with domain equal to full host name and port are listed. +// E.g., ".example.org:8000" vs. example.org:8000). + +add_task(function* () { + yield openTabAndSetupStorage(MAIN_DOMAIN_WITH_PORT + "storage-cookies.html"); + + yield checkState([ + [ + ["cookies", "http://test1.example.org:8000"], + [ + getCookieId("test1", ".test1.example.org", "/browser"), + getCookieId("test2", "test1.example.org", "/browser"), + getCookieId("test3", ".test1.example.org", "/browser"), + getCookieId("test4", "test1.example.org", "/browser"), + getCookieId("test5", ".test1.example.org", "/browser") + ] + ], + ]); + + yield finishTests(); +}); diff --git a/devtools/client/storage/test/head.js b/devtools/client/storage/test/head.js index 181132a45..c734f7b8f 100644 --- a/devtools/client/storage/test/head.js +++ b/devtools/client/storage/test/head.js @@ -22,6 +22,7 @@ const DEBUGGERLOG_PREF = "devtools.debugger.log"; const CACHES_ON_HTTP_PREF = "dom.caches.testing.enabled"; const PATH = "browser/devtools/client/storage/test/"; const MAIN_DOMAIN = "http://test1.example.org/" + PATH; +const MAIN_DOMAIN_WITH_PORT = "http://test1.example.org:8000/" + PATH; const ALT_DOMAIN = "http://sectest1.example.org/" + PATH; const ALT_DOMAIN_SECURED = "https://sectest1.example.org:443/" + PATH; diff --git a/devtools/server/actors/storage.js b/devtools/server/actors/storage.js index a7215b152..c702e8145 100644 --- a/devtools/server/actors/storage.js +++ b/devtools/server/actors/storage.js @@ -494,7 +494,7 @@ StorageActors.createActor({ return host == null; } - host = trimHttpHttps(host); + host = trimHttpHttpsPort(host); if (cookie.host.startsWith(".")) { return ("." + host).endsWith(cookie.host); @@ -761,7 +761,7 @@ var cookieHelpers = { host = ""; } - host = trimHttpHttps(host); + host = trimHttpHttpsPort(host); let cookies = Services.cookies.getCookiesFromHost(host, originAttributes); let store = []; @@ -897,7 +897,7 @@ var cookieHelpers = { opts.path = split[2]; } - host = trimHttpHttps(host); + host = trimHttpHttpsPort(host); function hostMatches(cookieHost, matchHost) { if (cookieHost == null) { @@ -2452,7 +2452,12 @@ exports.setupParentProcessForIndexedDB = function ({ mm, prefix }) { /** * General helpers */ -function trimHttpHttps(url) { +function trimHttpHttpsPort(url) { + let match = url.match(/(.+):\d+$/); + + if (match) { + url = match[1]; + } if (url.startsWith("http://")) { return url.substr(7); } |