diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-20 13:40:20 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-22 12:41:23 +0000 |
commit | 7961cea6d1041e3e454dae6a1da660b453efd238 (patch) | |
tree | c0eeb4a9ff9ba32986289c1653d9608e53ccb444 /chromium/chrome/browser/extensions/api/cookies/cookies_api.cc | |
parent | b7034d0803538058e5c9d904ef03cf5eab34f6ef (diff) |
BASELINE: Update Chromium to 78.0.3904.130
Change-Id: If185e0c0061b3437531c97c9c8c78f239352a68b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/chrome/browser/extensions/api/cookies/cookies_api.cc')
-rw-r--r-- | chromium/chrome/browser/extensions/api/cookies/cookies_api.cc | 87 |
1 files changed, 55 insertions, 32 deletions
diff --git a/chromium/chrome/browser/extensions/api/cookies/cookies_api.cc b/chromium/chrome/browser/extensions/api/cookies/cookies_api.cc index 9a1e1967385..aca854a958e 100644 --- a/chromium/chrome/browser/extensions/api/cookies/cookies_api.cc +++ b/chromium/chrome/browser/extensions/api/cookies/cookies_api.cc @@ -182,14 +182,14 @@ void CookiesEventRouter::MaybeStartListening() { ? original_profile->GetOffTheRecordProfile() : nullptr; - if (!binding_) - BindToCookieManager(&binding_, original_profile); - if (!otr_binding_.is_bound() && otr_profile) - BindToCookieManager(&otr_binding_, otr_profile); + if (!receiver_.is_bound()) + BindToCookieManager(&receiver_, original_profile); + if (!otr_receiver_.is_bound() && otr_profile) + BindToCookieManager(&otr_receiver_, otr_profile); } void CookiesEventRouter::BindToCookieManager( - mojo::Binding<network::mojom::CookieChangeListener>* binding, + mojo::Receiver<network::mojom::CookieChangeListener>* receiver, Profile* profile) { network::mojom::CookieManager* cookie_manager = content::BrowserContext::GetDefaultStoragePartition(profile) @@ -197,19 +197,17 @@ void CookiesEventRouter::BindToCookieManager( if (!cookie_manager) return; - network::mojom::CookieChangeListenerPtr listener_ptr; - binding->Bind(mojo::MakeRequest(&listener_ptr)); - binding->set_connection_error_handler(base::BindOnce( - &CookiesEventRouter::OnConnectionError, base::Unretained(this), binding)); - - cookie_manager->AddGlobalChangeListener(std::move(listener_ptr)); + cookie_manager->AddGlobalChangeListener(receiver->BindNewPipeAndPassRemote()); + receiver->set_disconnect_handler( + base::BindOnce(&CookiesEventRouter::OnConnectionError, + base::Unretained(this), receiver)); } void CookiesEventRouter::OnConnectionError( - mojo::Binding<network::mojom::CookieChangeListener>* binding) { + mojo::Receiver<network::mojom::CookieChangeListener>* receiver) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); - binding->Close(); + receiver->reset(); MaybeStartListening(); } @@ -251,25 +249,26 @@ ExtensionFunction::ResponseAction CookiesGetFunction::Run() { if (!parsed_args_->details.store_id.get()) parsed_args_->details.store_id.reset(new std::string(store_id)); + DCHECK(!url_.is_empty() && url_.is_valid()); cookies_helpers::GetCookieListFromManager( cookie_manager, url_, - base::BindOnce(&CookiesGetFunction::GetCookieCallback, this)); + base::BindOnce(&CookiesGetFunction::GetCookieListCallback, this)); // Will finish asynchronously. return RespondLater(); } -void CookiesGetFunction::GetCookieCallback( - const net::CookieList& cookie_list, +void CookiesGetFunction::GetCookieListCallback( + const net::CookieStatusList& cookie_status_list, const net::CookieStatusList& excluded_cookies) { DCHECK_CURRENTLY_ON(BrowserThread::UI); - for (const net::CanonicalCookie& cookie : cookie_list) { + for (const net::CookieWithStatus& cookie_with_status : cookie_status_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.Name() == parsed_args_->details.name) { + if (cookie_with_status.cookie.Name() == parsed_args_->details.name) { api::cookies::Cookie api_cookie = cookies_helpers::CreateCookie( - cookie, *parsed_args_->details.store_id); + cookie_with_status.cookie, *parsed_args_->details.store_id); Respond(ArgumentList(api::cookies::Get::Results::Create(api_cookie))); return; } @@ -308,22 +307,46 @@ ExtensionFunction::ResponseAction CookiesGetAllFunction::Run() { parsed_args_->details.store_id.reset(new std::string(store_id)); DCHECK(url_.is_empty() || url_.is_valid()); - cookies_helpers::GetCookieListFromManager( - cookie_manager, url_, - base::BindOnce(&CookiesGetAllFunction::GetAllCookiesCallback, this)); + if (url_.is_empty()) { + cookies_helpers::GetAllCookiesFromManager( + cookie_manager, + base::BindOnce(&CookiesGetAllFunction::GetAllCookiesCallback, this)); + } else { + cookies_helpers::GetCookieListFromManager( + cookie_manager, url_, + base::BindOnce(&CookiesGetAllFunction::GetCookieListCallback, this)); + } return RespondLater(); } void CookiesGetAllFunction::GetAllCookiesCallback( - const net::CookieList& cookie_list, + const net::CookieList& cookie_list) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + ResponseValue response; + if (extension()) { + std::vector<api::cookies::Cookie> match_vector; + cookies_helpers::AppendMatchingCookiesFromCookieListToVector( + cookie_list, &parsed_args_->details, extension(), &match_vector); + + response = + ArgumentList(api::cookies::GetAll::Results::Create(match_vector)); + } else { + // TODO(devlin): When can |extension()| be null for this function? + response = NoArguments(); + } + Respond(std::move(response)); +} + +void CookiesGetAllFunction::GetCookieListCallback( + const net::CookieStatusList& cookie_status_list, const net::CookieStatusList& excluded_cookies) { DCHECK_CURRENTLY_ON(BrowserThread::UI); ResponseValue response; if (extension()) { std::vector<api::cookies::Cookie> match_vector; - cookies_helpers::AppendMatchingCookiesToVector( - cookie_list, url_, &parsed_args_->details, extension(), &match_vector); + cookies_helpers::AppendMatchingCookiesFromCookieStatusListToVector( + cookie_status_list, &parsed_args_->details, extension(), &match_vector); response = ArgumentList(api::cookies::GetAll::Results::Create(match_vector)); @@ -417,7 +440,7 @@ ExtensionFunction::ResponseAction CookiesSetFunction::Run() { // is generated. success_ = false; state_ = SET_COMPLETED; - GetCookieListCallback(net::CookieList(), net::CookieStatusList()); + GetCookieListCallback(net::CookieStatusList(), net::CookieStatusList()); return AlreadyResponded(); } @@ -428,6 +451,7 @@ ExtensionFunction::ResponseAction CookiesSetFunction::Run() { options.set_include_httponly(); options.set_same_site_cookie_context( net::CookieOptions::SameSiteCookieContext::SAME_SITE_STRICT); + DCHECK(!url_.is_empty() && url_.is_valid()); cookie_manager->SetCanonicalCookie( *cc, url_.scheme(), options, base::BindOnce(&CookiesSetFunction::SetCanonicalCookieCallback, this)); @@ -444,12 +468,11 @@ void CookiesSetFunction::SetCanonicalCookieCallback( DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_EQ(NO_RESPONSE, state_); state_ = SET_COMPLETED; - success_ = (set_cookie_result == - net::CanonicalCookie::CookieInclusionStatus::INCLUDE); + success_ = set_cookie_result.IsInclude(); } void CookiesSetFunction::GetCookieListCallback( - const net::CookieList& cookie_list, + const net::CookieStatusList& cookie_list, const net::CookieStatusList& excluded_cookies) { DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_EQ(SET_COMPLETED, state_); @@ -465,16 +488,16 @@ void CookiesSetFunction::GetCookieListCallback( } ResponseValue value; - for (const net::CanonicalCookie& cookie : cookie_list) { + for (const net::CookieWithStatus& cookie_with_status : 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.Name() == name) { + if (cookie_with_status.cookie.Name() == name) { api::cookies::Cookie api_cookie = cookies_helpers::CreateCookie( - cookie, *parsed_args_->details.store_id); + cookie_with_status.cookie, *parsed_args_->details.store_id); value = ArgumentList(api::cookies::Set::Results::Create(api_cookie)); break; } |