Home | History | Annotate | Download | only in net
      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 #ifndef CHROME_BROWSER_NET_RESOURCE_PREFETCH_PREDICTOR_OBSERVER_H_
      6 #define CHROME_BROWSER_NET_RESOURCE_PREFETCH_PREDICTOR_OBSERVER_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/memory/weak_ptr.h"
     10 #include "chrome/browser/predictors/resource_prefetch_predictor.h"
     11 #include "webkit/common/resource_type.h"
     12 
     13 namespace net {
     14 class URLRequest;
     15 }
     16 
     17 class GURL;
     18 
     19 namespace chrome_browser_net {
     20 
     21 // Observes resource requests in the ResourceDispatcherHostDelegate and notifies
     22 // the ResourcePrefetchPredictor about the ones it is interested in.
     23 //  - Has an instance per profile, and is owned by the corresponding
     24 //    ProfileIOData.
     25 //  - Needs to be constructed on UI thread. Rest of the functions can only be
     26 //    called on the IO thread. Can be destroyed on UI or IO thread.
     27 class ResourcePrefetchPredictorObserver  {
     28  public:
     29   explicit ResourcePrefetchPredictorObserver(
     30       predictors::ResourcePrefetchPredictor* predictor);
     31   ~ResourcePrefetchPredictorObserver();
     32 
     33   // Parts of the ResourceDispatcherHostDelegate that we want to observe.
     34   void OnRequestStarted(net::URLRequest* request,
     35                         ResourceType::Type resource_type,
     36                         int child_id,
     37                         int route_id);
     38   void OnRequestRedirected(const GURL& redirect_url, net::URLRequest* request);
     39   void OnResponseStarted(net::URLRequest* request);
     40 
     41  private:
     42   // Owned by profile.
     43   base::WeakPtr<predictors::ResourcePrefetchPredictor> predictor_;
     44 
     45   DISALLOW_COPY_AND_ASSIGN(ResourcePrefetchPredictorObserver);
     46 };
     47 
     48 }  // namespace chrome_browser_net
     49 
     50 #endif  // CHROME_BROWSER_NET_RESOURCE_PREFETCH_PREDICTOR_OBSERVER_H_
     51