| // Copyright (c) 2012 The Chromium Embedded Framework 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 CEF_LIBCEF_BROWSER_NET_SERVICE_BROWSER_URLREQUEST_IMPL_H_ |
| #define CEF_LIBCEF_BROWSER_NET_SERVICE_BROWSER_URLREQUEST_IMPL_H_ |
| |
| #include <memory> |
| |
| #include "include/cef_urlrequest.h" |
| |
| #include "base/optional.h" |
| |
| namespace content { |
| struct GlobalRequestID; |
| } |
| |
| class CefBrowserURLRequest : public CefURLRequest { |
| public: |
| class Context; |
| |
| // TODO(network): After the old network code path is deleted move the |
| // CefURLRequestClient::GetAuthCredentials callback to the context thread and |
| // return just the CefBrowserURLRequest object here. The *Client object can |
| // then be retrieved by calling GetClient() from the required thread. |
| using RequestInfo = std::pair<CefRefPtr<CefBrowserURLRequest>, |
| CefRefPtr<CefURLRequestClient>>; |
| |
| // Retrieve the request objects, if any, associated with |request_id|. |
| static base::Optional<RequestInfo> FromRequestID(int32_t request_id); |
| static base::Optional<RequestInfo> FromRequestID( |
| const content::GlobalRequestID& request_id); |
| |
| // If |frame| is nullptr requests can still be intercepted but no |
| // browser/frame will be associated with them. |
| CefBrowserURLRequest(CefRefPtr<CefFrame> frame, |
| CefRefPtr<CefRequest> request, |
| CefRefPtr<CefURLRequestClient> client, |
| CefRefPtr<CefRequestContext> request_context); |
| ~CefBrowserURLRequest() override; |
| |
| bool Start(); |
| |
| // CefURLRequest methods. |
| CefRefPtr<CefRequest> GetRequest() override; |
| CefRefPtr<CefURLRequestClient> GetClient() override; |
| Status GetRequestStatus() override; |
| ErrorCode GetRequestError() override; |
| CefRefPtr<CefResponse> GetResponse() override; |
| bool ResponseWasCached() override; |
| void Cancel() override; |
| |
| private: |
| bool VerifyContext(); |
| |
| std::unique_ptr<Context> context_; |
| |
| IMPLEMENT_REFCOUNTING(CefBrowserURLRequest); |
| }; |
| |
| #endif // CEF_LIBCEF_BROWSER_NET_SERVICE_BROWSER_URLREQUEST_IMPL_H_ |