|  | // Copyright 2012 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 IOS_NET_CRN_HTTP_PROTOCOL_HANDLER_H_ | 
|  | #define IOS_NET_CRN_HTTP_PROTOCOL_HANDLER_H_ | 
|  |  | 
|  | #import <Foundation/Foundation.h> | 
|  |  | 
|  | namespace net { | 
|  | class URLRequestContextGetter; | 
|  |  | 
|  | class HTTPProtocolHandlerDelegate { | 
|  | public: | 
|  | // Sets the global instance of the HTTPProtocolHandlerDelegate. | 
|  | static void SetInstance(HTTPProtocolHandlerDelegate* delegate); | 
|  |  | 
|  | virtual ~HTTPProtocolHandlerDelegate() {} | 
|  |  | 
|  | // Returns true if CRNHTTPProtocolHandler should handle the request. | 
|  | // Returns false if the request should be passed down the NSURLProtocol chain. | 
|  | virtual bool CanHandleRequest(NSURLRequest* request) = 0; | 
|  |  | 
|  | // If IsRequestSupported returns true, |request| will be processed, otherwise | 
|  | // a NSURLErrorUnsupportedURL error is generated. | 
|  | virtual bool IsRequestSupported(NSURLRequest* request) = 0; | 
|  |  | 
|  | // Returns the request context used for requests that are not associated with | 
|  | // a RequestTracker. This includes in particular the requests that are not | 
|  | // aware of the network stack. Must not return null. | 
|  | virtual URLRequestContextGetter* GetDefaultURLRequestContext() = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace net | 
|  |  | 
|  | // Custom NSURLProtocol handling HTTP and HTTPS requests. | 
|  | // The HttpProtocolHandler is registered as a NSURLProtocol in the iOS system. | 
|  | // This protocol is called for each NSURLRequest. This allows handling the | 
|  | // requests issued by UIWebView using our own network stack. | 
|  | @interface CRNHTTPProtocolHandler : NSURLProtocol | 
|  | @end | 
|  |  | 
|  | // Custom NSURLProtocol handling HTTP and HTTPS requests. | 
|  | // The HttpProtocolHandler is registered as a NSURLProtocol in the iOS system. | 
|  | // This protocol is called for each NSURLRequest. This allows handling the | 
|  | // requests issued by UIWebView using our own network stack. This protocol | 
|  | // handler implements iOS 8 NSURLProtocol pause/resume semantics, in which | 
|  | // |startLoading| means "start or resume" and |stopLoading| means "pause". | 
|  | @interface CRNPauseableHTTPProtocolHandler : CRNHTTPProtocolHandler | 
|  | @end | 
|  |  | 
|  | #endif  // IOS_NET_CRN_HTTP_PROTOCOL_HANDLER_H_ |