| 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
|
|
|