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. 4 5 #include "content/browser/loader/resource_scheduler_filter.h" 6 7 #include "content/browser/loader/resource_dispatcher_host_impl.h" 8 #include "content/browser/loader/resource_scheduler.h" 9 #include "content/common/view_messages.h" 10 #include "content/public/common/page_transition_types.h" 11 12 namespace content { 13 14 ResourceSchedulerFilter::ResourceSchedulerFilter(int child_id) 15 : child_id_(child_id) { 16 } 17 18 ResourceSchedulerFilter::~ResourceSchedulerFilter() { 19 } 20 21 bool ResourceSchedulerFilter::OnMessageReceived(const IPC::Message& message, 22 bool* message_was_ok) { 23 switch (message.type()) { 24 case ViewHostMsg_FrameNavigate::ID: { 25 PickleIterator iter(message); 26 ViewHostMsg_FrameNavigate_Params params; 27 if (!IPC::ParamTraits<ViewHostMsg_FrameNavigate_Params>::Read( 28 &message, &iter, ¶ms)) { 29 break; 30 } 31 if (PageTransitionIsMainFrame(params.transition) && 32 !params.was_within_same_page) { 33 ResourceDispatcherHostImpl::Get()->scheduler()->OnNavigate( 34 child_id_, message.routing_id()); 35 } 36 break; 37 } 38 39 case ViewHostMsg_WillInsertBody::ID: 40 ResourceDispatcherHostImpl::Get()->scheduler()->OnWillInsertBody( 41 child_id_, message.routing_id()); 42 break; 43 44 default: 45 break; 46 } 47 48 return false; 49 } 50 51 } // namespace content 52