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

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: adding comment 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..6973ebb01aa8d128c139d7f54c07482d9f047922 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,8 +88,12 @@ 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 |
+ webview::WEB_VIEW_REMOVE_DATA_MASK_SESSION_COOKIES |
+ webview::WEB_VIEW_REMOVE_DATA_MASK_PERSISTENT_COOKIES)) {
mask |= StoragePartition::REMOVE_DATA_MASK_COOKIES;
+ }
if (web_view_removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_FILE_SYSTEMS)
mask |= StoragePartition::REMOVE_DATA_MASK_FILE_SYSTEMS;
if (web_view_removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_INDEXEDDB)
@@ -425,15 +430,41 @@ void WebViewGuest::ClearDataInternal(base::Time remove_since,
callback.Run();
return;
}
+
+ content::StoragePartition::CookieMatcherFunction cookie_matcher;
+
+ bool remove_session_cookies =
+ !!(removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_SESSION_COOKIES);
+ bool remove_persistent_cookies =
+ !!(removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_PERSISTENT_COOKIES);
+ bool remove_all_cookies =
+ (!!(removal_mask & webview::WEB_VIEW_REMOVE_DATA_MASK_COOKIES)) ||
+ (remove_session_cookies && remove_persistent_cookies);
+
+ // Leaving the cookie_matcher unset will cause all cookies to be purged.
+ if (!remove_all_cookies) {
+ if (remove_session_cookies) {
+ cookie_matcher =
+ base::Bind([](const net::CanonicalCookie& cookie) -> bool {
+ return !cookie.IsPersistent();
+ });
+ } else if (remove_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() {
« no previous file with comments | « extensions/browser/guest_view/web_view/web_view_constants.cc ('k') | extensions/common/api/web_view_internal.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698