1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/browser/loader/resource_scheduler_filter.h"
7 #include "content/browser/loader/resource_dispatcher_host_impl.h"
8 #include "content/browser/loader/resource_scheduler.h"
9 #include "content/common/frame_messages.h"
10 #include "content/common/view_messages.h"
11 #include "content/public/common/page_transition_types.h"
15 ResourceSchedulerFilter::ResourceSchedulerFilter(int child_id)
16 : child_id_(child_id) {
19 ResourceSchedulerFilter::~ResourceSchedulerFilter() {
22 bool ResourceSchedulerFilter::OnMessageReceived(const IPC::Message& message,
23 bool* message_was_ok) {
24 ResourceScheduler* scheduler =
25 ResourceDispatcherHostImpl::Get()->scheduler();
26 // scheduler can be NULL during shutdown, in which case it's ok to ignore the
27 // renderer's messages.
31 switch (message.type()) {
32 case FrameHostMsg_DidCommitProvisionalLoad::ID: {
33 PickleIterator iter(message);
34 FrameHostMsg_DidCommitProvisionalLoad_Params params;
35 if (!IPC::ParamTraits<FrameHostMsg_DidCommitProvisionalLoad_Params>::Read(
36 &message, &iter, ¶ms)) {
39 if (PageTransitionIsMainFrame(params.transition) &&
40 !params.was_within_same_page) {
41 scheduler->OnNavigate(child_id_, message.routing_id());
46 case ViewHostMsg_WillInsertBody::ID:
47 scheduler->OnWillInsertBody(child_id_, message.routing_id());
57 } // namespace content