Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: extensions/browser/guest_view/web_view/web_view_guest.cc

Issue 2700473003: Support the removal of only session cookies or persistent cookies (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: extensions/browser/guest_view/web_view/web_view_guest.cc
diff --git a/extensions/browser/guest_view/web_view/web_view_guest.cc b/extensions/browser/guest_view/web_view/web_view_guest.cc
index 57150cd98eb993c553f36107e0fdd8aecd4541bb..a05a5064233a4422750f21f470b4f1f53c1fd115 100644
--- a/extensions/browser/guest_view/web_view/web_view_guest.cc
+++ b/extensions/browser/guest_view/web_view/web_view_guest.cc
@@ -62,6 +62,7 @@
#include "ipc/ipc_message_macros.h"
#include "net/base/escape.h"
#include "net/base/net_errors.h"
+#include "net/cookies/canonical_cookie.h"
#include "ui/base/models/simple_menu_model.h"
#include "ui/events/keycodes/keyboard_codes.h"
#include "url/url_constants.h"
@@ -87,7 +88,11 @@ uint32_t GetStoragePartitionRemovalMask(uint32_t web_view_removal_mask) {
uint32_t mask = 0;
if (web_view_removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_APPCACHE)
mask |= StoragePartition::REMOVE_DATA_MASK_APPCACHE;
- if (web_view_removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_COOKIES)
+ if (web_view_removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_COOKIES ||
+ web_view_removal_mask &
+ webview::WEB_VIEW_REMOVE_DATA_MASK_SESSION_COOKIES ||
+ web_view_removal_mask &
+ webview::WEB_VIEW_REMOVE_DATA_MASK_PERSISTENT_COOKIES)
mask |= StoragePartition::REMOVE_DATA_MASK_COOKIES;
lazyboy 2017/02/15 21:45:27 nit: {}
lfg 2017/02/15 22:44:00 Done.
if (web_view_removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_FILE_SYSTEMS)
mask |= StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS;
@@ -425,15 +430,36 @@ void WebViewGuest::ClearDataInternal(base::Time remove_since,
callback.Run();
return;
}
+
+ content::StoragePartition::CookieMatcherFunction cookie_matcher;
+
+ if ((removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_COOKIES) ||
lazyboy 2017/02/15 21:45:27 It's a bit more code, but for readability, conside
lfg 2017/02/15 22:44:00 Done, but the NOTREACHED part isn't correct, since
lazyboy 2017/02/16 02:15:34 Acknowledged.
+ ((removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_SESSION_COOKIES) &&
+ (removal_mask &
+ webview::WEB_VIEW_REMOVE_DATA_MASK_PERSISTENT_COOKIES))) {
+ cookie_matcher = base::Bind(
+ [](const net::CanonicalCookie& cookie) -> bool { return true; });
lazyboy 2017/02/15 21:45:27 I also wonder if we should continue to use the non
lfg 2017/02/15 22:44:00 Good point. I switched so that the CookieMatcherFu
lazyboy 2017/02/16 02:15:34 Great, I'd also comment this before line 434 sayin
lfg 2017/02/16 17:44:25 Done.
+ } else if (removal_mask &
+ webview::WEB_VIEW_REMOVE_DATA_MASK_SESSION_COOKIES) {
+ cookie_matcher = base::Bind([](const net::CanonicalCookie& cookie) -> bool {
+ return !cookie.IsPersistent();
+ });
+ } else if (removal_mask &
+ webview::WEB_VIEW_REMOVE_DATA_MASK_PERSISTENT_COOKIES) {
+ cookie_matcher = base::Bind([](const net::CanonicalCookie& cookie) -> bool {
+ return cookie.IsPersistent();
+ });
+ }
+
content::StoragePartition* partition =
content::BrowserContext::GetStoragePartition(
web_contents()->GetBrowserContext(),
web_contents()->GetSiteInstance());
partition->ClearData(
storage_partition_removal_mask,
- content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL, GURL(),
- content::StoragePartition::OriginMatcherFunction(), remove_since,
- base::Time::Now(), callback);
+ content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL,
+ content::StoragePartition::OriginMatcherFunction(), cookie_matcher,
+ remove_since, base::Time::Now(), callback);
}
void WebViewGuest::GuestViewDidStopLoading() {

Powered by Google App Engine
This is Rietveld 408576698