Chromium Code Reviews| 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, |