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..36ba82a7287a33bf54b7f46b107b9e8acb4ce319 100644 |
--- a/content/browser/loader_delegate_impl.cc |
+++ b/content/browser/loader_delegate_impl.cc |
@@ -4,11 +4,54 @@ |
#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 { |
+namespace { |
+ |
+void NotifyLoadStateChangedOnUI(int child_id, |
+ int route_id, |
+ const GURL& url, |
+ const net::LoadStateWithParam& load_state, |
+ uint64_t upload_position, |
+ uint64_t upload_size) { |
+ RenderViewHostImpl* view = RenderViewHostImpl::FromID(child_id, route_id); |
+ if (view) |
+ view->LoadStateChanged(url, load_state, upload_position, upload_size); |
+} |
+ |
+void 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 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 |
+ |
LoaderDelegateImpl::~LoaderDelegateImpl() {} |
void LoaderDelegateImpl::LoadStateChanged( |
@@ -18,23 +61,33 @@ void LoaderDelegateImpl::LoadStateChanged( |
const net::LoadStateWithParam& load_state, |
uint64_t upload_position, |
uint64_t upload_size) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
- base::Bind(&LoaderDelegateImpl::NotifyLoadStateChangedOnUI, |
- base::Unretained(this), child_id, route_id, url, load_state, |
- upload_position, upload_size)); |
+ base::Bind(&NotifyLoadStateChangedOnUI, child_id, route_id, url, |
+ load_state, upload_position, upload_size)); |
} |
-void LoaderDelegateImpl::NotifyLoadStateChangedOnUI( |
- int child_id, |
- int route_id, |
- const GURL& url, |
- const net::LoadStateWithParam& load_state, |
- uint64_t upload_position, |
- uint64_t upload_size) { |
- RenderViewHostImpl* view = RenderViewHostImpl::FromID(child_id, route_id); |
- if (view) |
- view->LoadStateChanged(url, load_state, upload_position, upload_size); |
+void LoaderDelegateImpl::DidGetResourceResponseStart( |
+ int render_process_id, |
+ int render_frame_host, |
+ std::unique_ptr<ResourceRequestDetails> details) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, FROM_HERE, |
+ base::Bind(&DidGetResourceResponseStartOnUI, 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) { |
+ DCHECK_CURRENTLY_ON(BrowserThread::IO); |
+ BrowserThread::PostTask( |
+ BrowserThread::UI, FROM_HERE, |
+ base::Bind(&DidGetRedirectForResourceRequestOnUI, render_process_id, |
+ render_frame_host, base::Passed(std::move(details)))); |
} |
} // namespace content |