diff --git a/devtools/client/storage/test/browser.ini b/devtools/client/storage/test/browser.ini index 43888242486e..636b3fdce38a 100644 --- a/devtools/client/storage/test/browser.ini +++ b/devtools/client/storage/test/browser.ini @@ -31,6 +31,7 @@ tags = usercontextid [browser_storage_cache_error.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 000000000000..a5bc2e5beedc --- /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 0db162add63d..1664443949ee 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 0f20bd0a805d..c80252239ff6 100644 --- a/devtools/server/actors/storage.js +++ b/devtools/server/actors/storage.js @@ -492,7 +492,7 @@ StorageActors.createActor({ return host == null; } - host = trimHttpHttps(host); + host = trimHttpHttpsPort(host); if (cookie.host.startsWith(".")) { return ("." + host).endsWith(cookie.host); @@ -742,7 +742,7 @@ var cookieHelpers = { host = ""; } - host = trimHttpHttps(host); + host = trimHttpHttpsPort(host); let cookies = Services.cookies.getCookiesFromHost(host, originAttributes); let store = []; @@ -878,7 +878,7 @@ var cookieHelpers = { opts.path = split[2]; } - host = trimHttpHttps(host); + host = trimHttpHttpsPort(host); function hostMatches(cookieHost, matchHost) { if (cookieHost == null) { @@ -2418,7 +2418,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); }