Chromium Code Reviews| Index: content/browser/loader_delegate_impl.cc |
| diff --git a/content/browser/loader_delegate_impl.cc b/content/browser/loader_delegate_impl.cc |
| index 51c014059cc373fb3162690b5540d87b9706b2eb..50b24e33b072df634b8073fdffc7949b9bface90 100644 |
| --- a/content/browser/loader_delegate_impl.cc |
| +++ b/content/browser/loader_delegate_impl.cc |
| @@ -4,7 +4,9 @@ |
| #include "content/browser/loader_delegate_impl.h" |
| +#include "content/browser/frame_host/render_frame_host_impl.h" |
| #include "content/browser/renderer_host/render_view_host_impl.h" |
| +#include "content/browser/web_contents/web_contents_impl.h" |
| #include "content/public/browser/browser_thread.h" |
| namespace content { |
| @@ -25,6 +27,28 @@ void LoaderDelegateImpl::LoadStateChanged( |
| upload_position, upload_size)); |
| } |
| +void LoaderDelegateImpl::DidGetResourceResponseStart( |
| + int render_process_id, |
| + int render_frame_host, |
| + std::unique_ptr<ResourceRequestDetails> details) { |
| + BrowserThread::PostTask( |
| + BrowserThread::UI, FROM_HERE, |
| + base::Bind(&LoaderDelegateImpl::DidGetResourceResponseStartOnUI, |
| + base::Unretained(this), render_process_id, render_frame_host, |
| + base::Passed(std::move(details)))); |
| +} |
| + |
| +void LoaderDelegateImpl::DidGetRedirectForResourceRequest( |
| + int render_process_id, |
| + int render_frame_host, |
| + std::unique_ptr<ResourceRedirectDetails> details) { |
| + BrowserThread::PostTask( |
| + BrowserThread::UI, FROM_HERE, |
| + base::Bind(&LoaderDelegateImpl::DidGetRedirectForResourceRequestOnUI, |
| + base::Unretained(this), render_process_id, render_frame_host, |
|
mmenke
2016/06/29 15:17:13
What guarantees that the loader hasn't been delete
mmenke
2016/06/29 15:53:48
Actually...Everything we do on the UI thread can j
jam
2016/06/29 17:19:46
+1 to moving these methods to anonymous namespace
scottmg
2016/06/29 17:55:40
LoaderDelegate does need to outlive the RDH, I add
|
| + base::Passed(std::move(details)))); |
| +} |
| + |
| void LoaderDelegateImpl::NotifyLoadStateChangedOnUI( |
| int child_id, |
| int route_id, |
| @@ -37,4 +61,30 @@ void LoaderDelegateImpl::NotifyLoadStateChangedOnUI( |
| view->LoadStateChanged(url, load_state, upload_position, upload_size); |
| } |
| +void LoaderDelegateImpl::DidGetResourceResponseStartOnUI( |
| + int render_process_id, |
| + int render_frame_host, |
| + std::unique_ptr<ResourceRequestDetails> details) { |
| + RenderFrameHostImpl* host = |
| + RenderFrameHostImpl::FromID(render_process_id, render_frame_host); |
| + WebContentsImpl* web_contents = |
| + static_cast<WebContentsImpl*>(WebContents::FromRenderFrameHost(host)); |
| + if (!web_contents) |
| + return; |
| + web_contents->DidGetResourceResponseStart(*details.get()); |
| +} |
| + |
| +void LoaderDelegateImpl::DidGetRedirectForResourceRequestOnUI( |
| + int render_process_id, |
| + int render_frame_host, |
| + std::unique_ptr<ResourceRedirectDetails> details) { |
| + RenderFrameHostImpl* host = |
| + RenderFrameHostImpl::FromID(render_process_id, render_frame_host); |
| + WebContentsImpl* web_contents = |
| + static_cast<WebContentsImpl*>(WebContents::FromRenderFrameHost(host)); |
| + if (!web_contents) |
| + return; |
| + web_contents->DidGetRedirectForResourceRequest(host, *details.get()); |
| +} |
| + |
| } // namespace content |