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

Unified Diff: chrome/browser/renderer_host/chrome_render_message_filter.cc

Issue 338353007: Implementation of shared worker code path for WebView file system permission. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master_sharedworker
Patch Set: Rename + changes are made. Created 6 years, 6 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/renderer_host/chrome_render_message_filter.cc
diff --git a/chrome/browser/renderer_host/chrome_render_message_filter.cc b/chrome/browser/renderer_host/chrome_render_message_filter.cc
index 2df3e15d3dce55952ee734df11818d126bec3f7b..76c22b4735c0fbefaffef518e2d27f5c09798550 100644
--- a/chrome/browser/renderer_host/chrome_render_message_filter.cc
+++ b/chrome/browser/renderer_host/chrome_render_message_filter.cc
@@ -200,38 +200,24 @@ void ChromeRenderMessageFilter::OnRequestFileSystemAccessSync(
const GURL& origin_url,
const GURL& top_origin_url,
IPC::Message* reply_msg) {
- bool allowed =
- cookie_settings_->IsSettingCookieAllowed(origin_url, top_origin_url);
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ base::Callback<void(bool)> callback =
+ base::Bind(&ChromeRenderMessageFilter::
+ OnRequestFileSystemAccessSyncResponse,
+ base::Unretained(this),
+ reply_msg);
+ OnRequestFileSystemAccess(render_frame_id,
+ origin_url,
+ top_origin_url,
+ callback);
+}
-#if defined(ENABLE_EXTENSIONS)
- bool is_web_view_guest =
- ExtensionRendererState::GetInstance()->IsWebViewRenderer(
- render_process_id_);
- if (is_web_view_guest) {
- // Record access to file system for potential display in UI.
- BrowserThread::PostTask(BrowserThread::UI,
- FROM_HERE,
- base::Bind(&WebViewGuest::FileSystemAccessedSync,
- render_process_id_,
- render_frame_id,
- origin_url,
- !allowed,
- reply_msg));
- return;
- }
-#endif
+void ChromeRenderMessageFilter::OnRequestFileSystemAccessSyncResponse(
+ IPC::Message* reply_msg,
+ bool allowed) {
ChromeViewHostMsg_RequestFileSystemAccessSync::WriteReplyParams(reply_msg,
allowed);
Send(reply_msg);
- // Record access to file system for potential display in UI.
- BrowserThread::PostTask(
- BrowserThread::UI,
- FROM_HERE,
- base::Bind(&TabSpecificContentSettings::FileSystemAccessed,
- render_process_id_,
- render_frame_id,
- origin_url,
- !allowed));
}
void ChromeRenderMessageFilter::OnRequestFileSystemAccessAsync(
@@ -240,6 +226,32 @@ void ChromeRenderMessageFilter::OnRequestFileSystemAccessAsync(
const GURL& origin_url,
const GURL& top_origin_url) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ base::Callback<void(bool)> callback =
+ base::Bind(&ChromeRenderMessageFilter::
+ OnRequestFileSystemAccessAsyncResponse,
+ base::Unretained(this),
Fady Samuel 2014/06/24 18:30:43 This should probably be a scoped_ref_ptr. I think
Xi Han 2014/06/24 20:44:23 Great catch! I also updated the OnRequestFileSyste
+ render_frame_id,
+ request_id);
+ OnRequestFileSystemAccess(render_frame_id,
+ origin_url,
+ top_origin_url,
+ callback);
+}
+
+void ChromeRenderMessageFilter::OnRequestFileSystemAccessAsyncResponse(
+ int render_frame_id,
+ int request_id,
+ bool allowed) {
+ Send(new ChromeViewMsg_RequestFileSystemAccessAsyncResponse(
+ render_frame_id, request_id, allowed));
+}
+
+void ChromeRenderMessageFilter::OnRequestFileSystemAccess(
+ int render_frame_id,
+ const GURL& origin_url,
+ const GURL& top_origin_url,
+ base::Callback<void(bool)> callback) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
bool allowed =
cookie_settings_->IsSettingCookieAllowed(origin_url, top_origin_url);
@@ -250,29 +262,28 @@ void ChromeRenderMessageFilter::OnRequestFileSystemAccessAsync(
render_process_id_);
if (is_web_view_guest) {
// Record access to file system for potential display in UI.
- BrowserThread::PostTask(BrowserThread::UI,
- FROM_HERE,
- base::Bind(&WebViewGuest::FileSystemAccessedAsync,
- render_process_id_,
- render_frame_id,
- request_id,
- origin_url,
- !allowed));
+ BrowserThread::PostTask(
+ BrowserThread::UI,
+ FROM_HERE,
+ base::Bind(&WebViewGuest::FileSystemAccessed,
+ render_process_id_,
+ render_frame_id,
+ origin_url,
+ !allowed,
+ callback));
return;
}
#endif
- Send(new ChromeViewMsg_RequestFileSystemAccessAsyncResponse(render_frame_id,
- request_id,
- allowed));
+ callback.Run(allowed);
// Record access to file system for potential display in UI.
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
base::Bind(&TabSpecificContentSettings::FileSystemAccessed,
- render_process_id_,
- render_frame_id,
- origin_url,
- !allowed));
+ render_process_id_,
+ render_frame_id,
+ origin_url,
+ !allowed));
}
void ChromeRenderMessageFilter::OnAllowIndexedDB(int render_frame_id,

Powered by Google App Engine
This is Rietveld 408576698