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

Unified Diff: chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc

Issue 1021073002: <webview> Implement clear http cache API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix compile error on mac/android: std::set initializer list makes them unhappy Created 5 years, 9 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: chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
index ec4208d2096a6ea7cfaaac54eb91b7dedc633de5..1203e7d47325c3ba9b95691839792a5f6c02ede7 100644
--- a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
+++ b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.h"
+#include "chrome/browser/browsing_data/storage_partition_http_cache_data_remover.h"
#include "chrome/browser/extensions/chrome_extension_web_contents_observer.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
#include "chrome/browser/profiles/profile.h"
@@ -13,6 +14,8 @@
#include "chrome/common/chrome_version_info.h"
#include "components/pdf/browser/pdf_web_contents_helper.h"
#include "components/renderer_context_menu/context_menu_delegate.h"
+#include "components/web_cache/browser/web_cache_manager.h"
+#include "content/public/browser/render_process_host.h"
#include "extensions/browser/api/web_request/web_request_api.h"
#include "extensions/browser/guest_view/web_view/web_view_constants.h"
@@ -38,6 +41,28 @@ ChromeWebViewGuestDelegate::ChromeWebViewGuestDelegate(
ChromeWebViewGuestDelegate::~ChromeWebViewGuestDelegate() {
}
+void ChromeWebViewGuestDelegate::ClearCache(
+ base::Time remove_since,
+ const base::Closure& done_callback) {
+ int render_process_id = guest_web_contents()->GetRenderProcessHost()->GetID();
+ // We need to clear renderer cache separately for our process because
+ // StoragePartitionHttpCacheDataRemover::ClearData() does not clear that.
+ web_cache::WebCacheManager::GetInstance()->Remove(render_process_id);
+ web_cache::WebCacheManager::GetInstance()->ClearCacheForProcess(
+ render_process_id);
+
+ content::StoragePartition* partition =
+ content::BrowserContext::GetStoragePartition(
+ guest_web_contents()->GetBrowserContext(),
+ guest_web_contents()->GetSiteInstance());
+
+ // StoragePartitionHttpCacheDataRemover removes itself when it is done.
+ // TODO(lazyboy): Once StoragePartitionHttpCacheDataRemover moves to
+ // components/, move |ClearCache| to WebViewGuest: http//crbug.com/471287.
+ StoragePartitionHttpCacheDataRemover::CreateForRange(
+ partition, remove_since, base::Time::Now())->Remove(done_callback);
+}
+
bool ChromeWebViewGuestDelegate::HandleContextMenu(
const content::ContextMenuParams& params) {
ContextMenuDelegate* menu_delegate =

Powered by Google App Engine
This is Rietveld 408576698