summaryrefslogtreecommitdiff
path: root/chromium/chrome/browser/extensions/api/cookies
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/chrome/browser/extensions/api/cookies
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/extensions/api/cookies')
-rw-r--r--chromium/chrome/browser/extensions/api/cookies/cookies_api.cc35
-rw-r--r--chromium/chrome/browser/extensions/api/cookies/cookies_api.h19
-rw-r--r--chromium/chrome/browser/extensions/api/cookies/cookies_apitest.cc57
-rw-r--r--chromium/chrome/browser/extensions/api/cookies/cookies_helpers.cc10
-rw-r--r--chromium/chrome/browser/extensions/api/cookies/cookies_helpers.h7
5 files changed, 90 insertions, 38 deletions
diff --git a/chromium/chrome/browser/extensions/api/cookies/cookies_api.cc b/chromium/chrome/browser/extensions/api/cookies/cookies_api.cc
index 8fa3cd840d0..5dbb6f601d9 100644
--- a/chromium/chrome/browser/extensions/api/cookies/cookies_api.cc
+++ b/chromium/chrome/browser/extensions/api/cookies/cookies_api.cc
@@ -256,16 +256,17 @@ ExtensionFunction::ResponseAction CookiesGetFunction::Run() {
}
void CookiesGetFunction::GetCookieListCallback(
- const net::CookieStatusList& cookie_status_list,
- const net::CookieStatusList& excluded_cookies) {
+ const net::CookieAccessResultList& cookie_list,
+ const net::CookieAccessResultList& excluded_cookies) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- for (const net::CookieWithStatus& cookie_with_status : cookie_status_list) {
+ for (const net::CookieWithAccessResult& cookie_with_access_result :
+ cookie_list) {
// Return the first matching cookie. Relies on the fact that the
// CookieManager interface returns them in canonical order (longest path,
// then earliest creation time).
- if (cookie_with_status.cookie.Name() == parsed_args_->details.name) {
+ if (cookie_with_access_result.cookie.Name() == parsed_args_->details.name) {
api::cookies::Cookie api_cookie = cookies_helpers::CreateCookie(
- cookie_with_status.cookie, *parsed_args_->details.store_id);
+ cookie_with_access_result.cookie, *parsed_args_->details.store_id);
Respond(ArgumentList(api::cookies::Get::Results::Create(api_cookie)));
return;
}
@@ -336,14 +337,14 @@ void CookiesGetAllFunction::GetAllCookiesCallback(
}
void CookiesGetAllFunction::GetCookieListCallback(
- const net::CookieStatusList& cookie_status_list,
- const net::CookieStatusList& excluded_cookies) {
+ const net::CookieAccessResultList& cookie_list,
+ const net::CookieAccessResultList& excluded_cookies) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
ResponseValue response;
if (extension()) {
std::vector<api::cookies::Cookie> match_vector;
- cookies_helpers::AppendMatchingCookiesFromCookieStatusListToVector(
- cookie_status_list, &parsed_args_->details, extension(), &match_vector);
+ cookies_helpers::AppendMatchingCookiesFromCookieAccessResultListToVector(
+ cookie_list, &parsed_args_->details, extension(), &match_vector);
response =
ArgumentList(api::cookies::GetAll::Results::Create(match_vector));
@@ -437,7 +438,8 @@ ExtensionFunction::ResponseAction CookiesSetFunction::Run() {
// is generated.
success_ = false;
state_ = SET_COMPLETED;
- GetCookieListCallback(net::CookieStatusList(), net::CookieStatusList());
+ GetCookieListCallback(net::CookieAccessResultList(),
+ net::CookieAccessResultList());
return AlreadyResponded();
}
@@ -461,7 +463,7 @@ ExtensionFunction::ResponseAction CookiesSetFunction::Run() {
}
void CookiesSetFunction::SetCanonicalCookieCallback(
- net::CanonicalCookie::CookieInclusionStatus set_cookie_result) {
+ net::CookieInclusionStatus set_cookie_result) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK_EQ(NO_RESPONSE, state_);
state_ = SET_COMPLETED;
@@ -469,8 +471,8 @@ void CookiesSetFunction::SetCanonicalCookieCallback(
}
void CookiesSetFunction::GetCookieListCallback(
- const net::CookieStatusList& cookie_list,
- const net::CookieStatusList& excluded_cookies) {
+ const net::CookieAccessResultList& cookie_list,
+ const net::CookieAccessResultList& excluded_cookies) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
DCHECK_EQ(SET_COMPLETED, state_);
state_ = GET_COMPLETED;
@@ -485,16 +487,17 @@ void CookiesSetFunction::GetCookieListCallback(
}
ResponseValue value;
- for (const net::CookieWithStatus& cookie_with_status : cookie_list) {
+ for (const net::CookieWithAccessResult& cookie_with_access_result :
+ cookie_list) {
// Return the first matching cookie. Relies on the fact that the
// CookieMonster returns them in canonical order (longest path, then
// earliest creation time).
std::string name =
parsed_args_->details.name.get() ? *parsed_args_->details.name
: std::string();
- if (cookie_with_status.cookie.Name() == name) {
+ if (cookie_with_access_result.cookie.Name() == name) {
api::cookies::Cookie api_cookie = cookies_helpers::CreateCookie(
- cookie_with_status.cookie, *parsed_args_->details.store_id);
+ cookie_with_access_result.cookie, *parsed_args_->details.store_id);
value = ArgumentList(api::cookies::Set::Results::Create(api_cookie));
break;
}
diff --git a/chromium/chrome/browser/extensions/api/cookies/cookies_api.h b/chromium/chrome/browser/extensions/api/cookies/cookies_api.h
index d6b171b5f04..a506809822a 100644
--- a/chromium/chrome/browser/extensions/api/cookies/cookies_api.h
+++ b/chromium/chrome/browser/extensions/api/cookies/cookies_api.h
@@ -23,6 +23,7 @@
#include "mojo/public/cpp/bindings/remote.h"
#include "net/cookies/canonical_cookie.h"
#include "net/cookies/cookie_change_dispatcher.h"
+#include "net/cookies/cookie_inclusion_status.h"
#include "services/network/public/mojom/cookie_manager.mojom.h"
#include "url/gurl.h"
@@ -105,8 +106,9 @@ class CookiesGetFunction : public ExtensionFunction {
ResponseAction Run() override;
private:
- void GetCookieListCallback(const net::CookieStatusList& cookie_status_list,
- const net::CookieStatusList& excluded_cookies);
+ void GetCookieListCallback(
+ const net::CookieAccessResultList& cookie_list,
+ const net::CookieAccessResultList& excluded_cookies);
GURL url_;
mojo::Remote<network::mojom::CookieManager> store_browser_cookie_manager_;
@@ -130,8 +132,9 @@ class CookiesGetAllFunction : public ExtensionFunction {
// For the two different callback signatures for getting cookies for a URL vs
// getting all cookies. They do the same thing.
void GetAllCookiesCallback(const net::CookieList& cookie_list);
- void GetCookieListCallback(const net::CookieStatusList& cookie_status_list,
- const net::CookieStatusList& excluded_cookies);
+ void GetCookieListCallback(
+ const net::CookieAccessResultList& cookie_list,
+ const net::CookieAccessResultList& excluded_cookies);
GURL url_;
mojo::Remote<network::mojom::CookieManager> store_browser_cookie_manager_;
@@ -150,10 +153,10 @@ class CookiesSetFunction : public ExtensionFunction {
ResponseAction Run() override;
private:
- void SetCanonicalCookieCallback(
- net::CanonicalCookie::CookieInclusionStatus set_cookie_result);
- void GetCookieListCallback(const net::CookieStatusList& cookie_list,
- const net::CookieStatusList& excluded_cookies);
+ void SetCanonicalCookieCallback(net::CookieInclusionStatus set_cookie_result);
+ void GetCookieListCallback(
+ const net::CookieAccessResultList& cookie_list,
+ const net::CookieAccessResultList& excluded_cookies);
enum { NO_RESPONSE, SET_COMPLETED, GET_COMPLETED } state_;
GURL url_;
diff --git a/chromium/chrome/browser/extensions/api/cookies/cookies_apitest.cc b/chromium/chrome/browser/extensions/api/cookies/cookies_apitest.cc
index bf114b6f2be..e5f22089cac 100644
--- a/chromium/chrome/browser/extensions/api/cookies/cookies_apitest.cc
+++ b/chromium/chrome/browser/extensions/api/cookies/cookies_apitest.cc
@@ -6,10 +6,16 @@
#include "chrome/browser/extensions/extension_apitest.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/test/browser_test.h"
+#include "extensions/common/scoped_worker_based_extensions_channel.h"
#include "net/cookies/cookie_util.h"
namespace extensions {
+using ContextType = ExtensionApiTest::ContextType;
+
+// TODO(crbug.com/1093066): This test uses the DOM to set and
+// check cookies for one test. Figure out how to isolate that
+// test and adapt the rest of it for a SW-based extension.
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Cookies) {
ASSERT_TRUE(RunExtensionTestWithArg(
"cookies/api",
@@ -19,21 +25,60 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, Cookies) {
<< message_;
}
-IN_PROC_BROWSER_TEST_F(ExtensionApiTest, CookiesEvents) {
- ASSERT_TRUE(RunExtensionTest("cookies/events")) << message_;
+class CookiesApiTest : public ExtensionApiTest,
+ public testing::WithParamInterface<ContextType> {
+ public:
+ void SetUp() override {
+ ExtensionApiTest::SetUp();
+ // Service Workers are currently only available on certain channels, so set
+ // the channel for those tests.
+ if (GetParam() == ContextType::kServiceWorker)
+ current_channel_ = std::make_unique<ScopedWorkerBasedExtensionsChannel>();
+ }
+
+ protected:
+ bool RunTest(const std::string& extension_name) {
+ return RunTestWithFlags(extension_name, kFlagNone);
+ }
+
+ bool RunTestIncognito(const std::string& extension_name) {
+ return RunTestWithFlags(extension_name, kFlagEnableIncognito);
+ }
+
+ bool RunTestWithFlags(const std::string& extension_name,
+ int browser_test_flags) {
+ if (GetParam() == ContextType::kServiceWorker)
+ browser_test_flags |= kFlagRunAsServiceWorkerBasedExtension;
+
+ return RunExtensionTestWithFlags(extension_name, browser_test_flags,
+ kFlagNone);
+ }
+
+ std::unique_ptr<ScopedWorkerBasedExtensionsChannel> current_channel_;
+};
+
+INSTANTIATE_TEST_SUITE_P(EventPage,
+ CookiesApiTest,
+ ::testing::Values(ContextType::kEventPage));
+INSTANTIATE_TEST_SUITE_P(ServiceWorker,
+ CookiesApiTest,
+ ::testing::Values(ContextType::kServiceWorker));
+
+IN_PROC_BROWSER_TEST_P(CookiesApiTest, CookiesEvents) {
+ ASSERT_TRUE(RunTest("cookies/events")) << message_;
}
-IN_PROC_BROWSER_TEST_F(ExtensionApiTest, CookiesEventsSpanning) {
+IN_PROC_BROWSER_TEST_P(CookiesApiTest, CookiesEventsSpanning) {
// We need to initialize an incognito mode window in order have an initialized
// incognito cookie store. Otherwise, the chrome.cookies.set operation is just
// ignored and we won't be notified about a newly set cookie for which we want
// to test whether the storeId is set correctly.
OpenURLOffTheRecord(browser()->profile(), GURL("chrome://newtab/"));
- ASSERT_TRUE(RunExtensionTestIncognito("cookies/events_spanning")) << message_;
+ ASSERT_TRUE(RunTestIncognito("cookies/events_spanning")) << message_;
}
-IN_PROC_BROWSER_TEST_F(ExtensionApiTest, CookiesNoPermission) {
- ASSERT_TRUE(RunExtensionTest("cookies/no_permission")) << message_;
+IN_PROC_BROWSER_TEST_P(CookiesApiTest, CookiesNoPermission) {
+ ASSERT_TRUE(RunTest("cookies/no_permission")) << message_;
}
} // namespace extensions
diff --git a/chromium/chrome/browser/extensions/api/cookies/cookies_helpers.cc b/chromium/chrome/browser/extensions/api/cookies/cookies_helpers.cc
index 43bb1619bfb..9aee1f6143b 100644
--- a/chromium/chrome/browser/extensions/api/cookies/cookies_helpers.cc
+++ b/chromium/chrome/browser/extensions/api/cookies/cookies_helpers.cc
@@ -182,14 +182,14 @@ void AppendMatchingCookiesFromCookieListToVector(
}
}
-void AppendMatchingCookiesFromCookieStatusListToVector(
- const net::CookieStatusList& all_cookies_with_statuses,
+void AppendMatchingCookiesFromCookieAccessResultListToVector(
+ const net::CookieAccessResultList& all_cookies_with_access_result,
const GetAll::Params::Details* details,
const Extension* extension,
std::vector<Cookie>* match_vector) {
- for (const net::CookieWithStatus& cookie_with_status :
- all_cookies_with_statuses) {
- const net::CanonicalCookie& cookie = cookie_with_status.cookie;
+ for (const net::CookieWithAccessResult& cookie_with_access_result :
+ all_cookies_with_access_result) {
+ const net::CanonicalCookie& cookie = cookie_with_access_result.cookie;
AppendCookieToVectorIfMatchAndHasHostPermission(cookie, details, extension,
match_vector);
}
diff --git a/chromium/chrome/browser/extensions/api/cookies/cookies_helpers.h b/chromium/chrome/browser/extensions/api/cookies/cookies_helpers.h
index 298b16e49a7..9d5acf0fbc7 100644
--- a/chromium/chrome/browser/extensions/api/cookies/cookies_helpers.h
+++ b/chromium/chrome/browser/extensions/api/cookies/cookies_helpers.h
@@ -85,9 +85,10 @@ void AppendMatchingCookiesFromCookieListToVector(
const Extension* extension,
std::vector<api::cookies::Cookie>* match_vector);
-// Same as above except takes a CookieStatusList (and ignores the statuses).
-void AppendMatchingCookiesFromCookieStatusListToVector(
- const net::CookieStatusList& all_cookies_with_statuses,
+// Same as above except takes a CookieAccessResultList (and ignores the access
+// results).
+void AppendMatchingCookiesFromCookieAccessResultListToVector(
+ const net::CookieAccessResultList& all_cookies_with_access_result,
const api::cookies::GetAll::Params::Details* details,
const Extension* extension,
std::vector<api::cookies::Cookie>* match_vector);