• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 CONTENT_PUBLIC_BROWSER_RESOURCE_THROTTLE_H_
6 #define CONTENT_PUBLIC_BROWSER_RESOURCE_THROTTLE_H_
7 
8 #include <vector>
9 
10 class GURL;
11 
12 namespace content {
13 
14 class ResourceController;
15 
16 // A ResourceThrottle gets notified at various points during the process of
17 // loading a resource.  At each stage, it has the opportunity to defer the
18 // resource load.  The ResourceController interface may be used to resume a
19 // deferred resource load, or it may be used to cancel a resource load at any
20 // time.
21 class ResourceThrottle {
22  public:
~ResourceThrottle()23   virtual ~ResourceThrottle() {}
24 
WillStartRequest(bool * defer)25   virtual void WillStartRequest(bool* defer) {}
WillRedirectRequest(const GURL & new_url,bool * defer)26   virtual void WillRedirectRequest(const GURL& new_url, bool* defer) {}
WillProcessResponse(bool * defer)27   virtual void WillProcessResponse(bool* defer) {}
OnBeforeNetworkStart(bool * defer)28   virtual void OnBeforeNetworkStart(bool* defer) {}
29 
30   // Returns the name of the throttle, as a UTF-8 C-string, for logging
31   // purposes.  NULL is not allowed.  Caller does *not* take ownership of the
32   // returned string.
33   virtual const char* GetNameForLogging() const = 0;
34 
set_controller_for_testing(ResourceController * c)35   void set_controller_for_testing(ResourceController* c) {
36     controller_ = c;
37   }
38 
39  protected:
ResourceThrottle()40   ResourceThrottle() : controller_(NULL) {}
controller()41   ResourceController* controller() { return controller_; }
42 
43  private:
44   friend class ThrottlingResourceHandler;
set_controller(ResourceController * c)45   void set_controller(ResourceController* c) { controller_ = c; }
46 
47   ResourceController* controller_;
48 };
49 
50 }  // namespace content
51 
52 #endif  // CONTENT_PUBLIC_BROWSER_RESOURCE_THROTTLE_H_
53