Chromium Code Reviews| Index: content/browser/loader/resource_scheduler_filter.cc |
| diff --git a/content/browser/loader/resource_scheduler_filter.cc b/content/browser/loader/resource_scheduler_filter.cc |
| index 0738ec188fe60a084f4165712d6abecbbeaa57d9..45e31caed91cea5080e41c30214472b19ba233d3 100644 |
| --- a/content/browser/loader/resource_scheduler_filter.cc |
| +++ b/content/browser/loader/resource_scheduler_filter.cc |
| @@ -4,71 +4,46 @@ |
| #include "content/browser/loader/resource_scheduler_filter.h" |
| -#include <stdint.h> |
| - |
| -#include "base/macros.h" |
| #include "content/browser/loader/resource_dispatcher_host_impl.h" |
| #include "content/browser/loader/resource_scheduler.h" |
| #include "content/common/frame_messages.h" |
| -#include "content/common/view_messages.h" |
| +#include "ipc/ipc_message_macros.h" |
| #include "ui/base/page_transition_types.h" |
| namespace content { |
| -namespace { |
| -const uint32_t kFilteredMessageClasses[] = { |
| - FrameMsgStart, ViewMsgStart, |
| -}; |
| -} // namespace |
| ResourceSchedulerFilter::ResourceSchedulerFilter(int child_id) |
| - : BrowserMessageFilter( |
| - kFilteredMessageClasses, arraysize(kFilteredMessageClasses)), |
| - child_id_(child_id) { |
| -} |
| + : BrowserMessageFilter(FrameMsgStart), child_id_(child_id) {} |
| -ResourceSchedulerFilter::~ResourceSchedulerFilter() { |
| -} |
| +ResourceSchedulerFilter::~ResourceSchedulerFilter() {} |
| bool ResourceSchedulerFilter::OnMessageReceived(const IPC::Message& message) { |
| - ResourceScheduler* scheduler = |
| - ResourceDispatcherHostImpl::Get()->scheduler(); |
| - // scheduler can be NULL during shutdown, in which case it's ok to ignore the |
| - // renderer's messages. |
| + ResourceScheduler* scheduler = ResourceDispatcherHostImpl::Get()->scheduler(); |
| if (!scheduler) |
| return false; |
| + IPC_BEGIN_MESSAGE_MAP_WITH_PARAM(ResourceSchedulerFilter, message, scheduler) |
| + IPC_MESSAGE_HANDLER(FrameHostMsg_DidCommitProvisionalLoad, |
| + OnDidCommitProvisionalLoad) |
| + IPC_MESSAGE_HANDLER(FrameHostMsg_WillInsertBody, OnWillInsertBody) |
| + IPC_END_MESSAGE_MAP() |
| + return false; |
| +} |
| - switch (message.type()) { |
| - case FrameHostMsg_DidCommitProvisionalLoad::ID: { |
| - base::PickleIterator iter(message); |
| - FrameHostMsg_DidCommitProvisionalLoad_Params params; |
| - if (!IPC::ParamTraits<FrameHostMsg_DidCommitProvisionalLoad_Params>::Read( |
| - &message, &iter, ¶ms)) { |
| - break; |
| - } |
| - if (ui::PageTransitionIsMainFrame(params.transition) && |
| - !params.was_within_same_page) { |
| - // We need to track the RenderViewHost routing_id because of downstream |
| - // dependencies (crbug.com/392171 DownloadRequestHandle, |
| - // SaveFileManager, ResourceDispatcherHostImpl, MediaStreamUIProxy, |
| - // SpeechRecognitionDispatcherHost and possibly others). They look up |
| - // the view based on the ID stored in the resource requests. |
| - // Once those dependencies are unwound or moved to RenderFrameHost |
| - // (crbug.com/304341) we can move the client to be based on the |
| - // routing_id of the RenderFrameHost. |
| - scheduler->OnNavigate(child_id_, params.render_view_routing_id); |
| - } |
| - break; |
| - } |
| - |
| - case ViewHostMsg_WillInsertBody::ID: |
| - scheduler->OnWillInsertBody(child_id_, message.routing_id()); |
| - break; |
| - |
| - default: |
| - break; |
| +void ResourceSchedulerFilter::OnDidCommitProvisionalLoad( |
| + ResourceScheduler* scheduler, |
| + const FrameHostMsg_DidCommitProvisionalLoad_Params& params) { |
| + // TODO(csharrison): This isn't quite right for OOPIF, as we *do* want to |
| + // propogate OnNavigate to the client associated with the OOPIF's RVH. This |
|
nasko
2017/01/31 15:50:34
nit: "propagate"?
Charlie Harrison
2017/01/31 20:19:31
Done.
|
| + // should not result in show-stopping bugs, just poorer loading performance. |
| + if (ui::PageTransitionIsMainFrame(params.transition) && |
| + !params.was_within_same_page) { |
| + scheduler->OnNavigate(child_id_, params.render_view_routing_id); |
| } |
| +} |
| - return false; |
| +void ResourceSchedulerFilter::OnWillInsertBody(ResourceScheduler* scheduler, |
| + int render_view_routing_id) { |
| + scheduler->OnWillInsertBody(child_id_, render_view_routing_id); |
| } |
| } // namespace content |