| Index: content/public/child/url_loader_throttle.h | 
| diff --git a/content/public/child/url_loader_throttle.h b/content/public/child/url_loader_throttle.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..e72a4ff253b0391b91e68b6a7c01b9620f4a6933 | 
| --- /dev/null | 
| +++ b/content/public/child/url_loader_throttle.h | 
| @@ -0,0 +1,67 @@ | 
| +// Copyright 2017 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef CONTENT_PUBLIC_RENDERER_URL_LOADER_THROTTLE_H_ | 
| +#define CONTENT_PUBLIC_RENDERER_URL_LOADER_THROTTLE_H_ | 
| + | 
| +#include "content/common/content_export.h" | 
| +#include "content/public/common/resource_type.h" | 
| + | 
| +class GURL; | 
| + | 
| +namespace net { | 
| +struct RedirectInfo; | 
| +} | 
| + | 
| +namespace content { | 
| + | 
| +// A URLLoaderThrottle gets notified at various points during the process of | 
| +// loading a resource. At each stage, it has the opportunity to defer the | 
| +// resource load. | 
| +class CONTENT_EXPORT URLLoaderThrottle { | 
| + public: | 
| +  // An interface for the throttle implementation to resume (when deferred) or | 
| +  // cancel the resource load. | 
| +  class CONTENT_EXPORT Delegate { | 
| +   public: | 
| +    // Cancels the resource load with the specified error code. | 
| +    virtual void CancelWithError(int error_code) = 0; | 
| + | 
| +    // Resumes the deferred resource load. It is a no-op if the resource load is | 
| +    // not deferred or has already been canceled. | 
| +    virtual void Resume() = 0; | 
| + | 
| +   protected: | 
| +    virtual ~Delegate() {} | 
| +  }; | 
| + | 
| +  virtual ~URLLoaderThrottle() {} | 
| + | 
| +  // Called before the resource request is started. | 
| +  virtual void WillStartRequest(const GURL& url, | 
| +                                int load_flags, | 
| +                                ResourceType resource_type, | 
| +                                bool* defer) {} | 
| + | 
| +  // Called when the request was redirected.  |redirect_info| contains the | 
| +  // redirect responses's HTTP status code and some information about the new | 
| +  // request that will be sent if the redirect is followed, including the new | 
| +  // URL and new method. | 
| +  virtual void WillRedirectRequest(const net::RedirectInfo& redirect_info, | 
| +                                   bool* defer) {} | 
| + | 
| +  // Called when the response headers and meta data are available. | 
| +  virtual void WillProcessResponse(bool* defer) {} | 
| + | 
| +  void set_delegate(Delegate* delegate) { delegate_ = delegate; } | 
| + | 
| + protected: | 
| +  URLLoaderThrottle() = default; | 
| + | 
| +  Delegate* delegate_ = nullptr; | 
| +}; | 
| + | 
| +}  // namespace content | 
| + | 
| +#endif  // CONTENT_PUBLIC_RENDERER_URL_LOADER_THROTTLE_H_ | 
|  |