Home | History | Annotate | Download | only in loader
      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, &params)) {
     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