- add sources.
[platform/framework/web/crosswalk.git] / src / content / public / browser / resource_throttle.h
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:
23   virtual ~ResourceThrottle() {}
24
25   virtual void WillStartRequest(bool* defer) {}
26   virtual void WillRedirectRequest(const GURL& new_url, bool* defer) {}
27   virtual void WillProcessResponse(bool* defer) {}
28
29   void set_controller_for_testing(ResourceController* c) {
30     controller_ = c;
31   }
32
33  protected:
34   ResourceThrottle() : controller_(NULL) {}
35   ResourceController* controller() { return controller_; }
36
37  private:
38   friend class ThrottlingResourceHandler;
39   void set_controller(ResourceController* c) { controller_ = c; }
40
41   ResourceController* controller_;
42 };
43
44 }  // namespace content
45
46 #endif  // CONTENT_PUBLIC_BROWSER_RESOURCE_THROTTLE_H_