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_ 47