OLD | NEW |
| (Empty) |
1 // Copyright 2017 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_RENDERER_URL_LOADER_THROTTLE_H_ | |
6 #define CONTENT_PUBLIC_RENDERER_URL_LOADER_THROTTLE_H_ | |
7 | |
8 #include "content/common/content_export.h" | |
9 #include "content/public/common/resource_type.h" | |
10 | |
11 class GURL; | |
12 | |
13 namespace net { | |
14 struct RedirectInfo; | |
15 } | |
16 | |
17 namespace content { | |
18 | |
19 // A URLLoaderThrottle gets notified at various points during the process of | |
20 // loading a resource. At each stage, it has the opportunity to defer the | |
21 // resource load. | |
22 class CONTENT_EXPORT URLLoaderThrottle { | |
23 public: | |
24 // An interface for the throttle implementation to resume (when deferred) or | |
25 // cancel the resource load. | |
26 class CONTENT_EXPORT Delegate { | |
27 public: | |
28 // Cancels the resource load with the specified error code. | |
29 virtual void CancelWithError(int error_code) = 0; | |
30 | |
31 // Resumes the deferred resource load. It is a no-op if the resource load is | |
32 // not deferred or has already been canceled. | |
33 virtual void Resume() = 0; | |
34 | |
35 protected: | |
36 virtual ~Delegate() {} | |
37 }; | |
38 | |
39 virtual ~URLLoaderThrottle() {} | |
40 | |
41 // Called before the resource request is started. | |
42 virtual void WillStartRequest(const GURL& url, | |
43 int load_flags, | |
44 ResourceType resource_type, | |
45 bool* defer) {} | |
46 | |
47 // Called when the request was redirected. |redirect_info| contains the | |
48 // redirect responses's HTTP status code and some information about the new | |
49 // request that will be sent if the redirect is followed, including the new | |
50 // URL and new method. | |
51 virtual void WillRedirectRequest(const net::RedirectInfo& redirect_info, | |
52 bool* defer) {} | |
53 | |
54 // Called when the response headers and meta data are available. | |
55 virtual void WillProcessResponse(bool* defer) {} | |
56 | |
57 void set_delegate(Delegate* delegate) { delegate_ = delegate; } | |
58 | |
59 protected: | |
60 URLLoaderThrottle() = default; | |
61 | |
62 Delegate* delegate_ = nullptr; | |
63 }; | |
64 | |
65 } // namespace content | |
66 | |
67 #endif // CONTENT_PUBLIC_RENDERER_URL_LOADER_THROTTLE_H_ | |
OLD | NEW |