Index: chrome_frame/urlmon_url_request_private.h |
diff --git a/chrome_frame/urlmon_url_request_private.h b/chrome_frame/urlmon_url_request_private.h |
deleted file mode 100644 |
index a8ef99b4190a3515b5a5d4faedf9a53ac57dac67..0000000000000000000000000000000000000000 |
--- a/chrome_frame/urlmon_url_request_private.h |
+++ /dev/null |
@@ -1,259 +0,0 @@ |
-// Copyright (c) 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 CHROME_FRAME_URLMON_URL_REQUEST_PRIVATE_H_ |
-#define CHROME_FRAME_URLMON_URL_REQUEST_PRIVATE_H_ |
- |
-#include <atlbase.h> |
-#include <atlcom.h> |
- |
-#include <string> |
- |
-#include "base/gtest_prod_util.h" |
-#include "base/threading/platform_thread.h" |
-#include "net/base/net_errors.h" |
-#include "net/http/http_response_headers.h" |
-#include "net/url_request/url_request_status.h" |
- |
-class UrlmonUrlRequest |
- : public CComObjectRootEx<CComMultiThreadModel>, |
- public PluginUrlRequest, |
- public IServiceProviderImpl<UrlmonUrlRequest>, |
- public IBindStatusCallback, |
- public IHttpNegotiate, |
- public IAuthenticate, |
- public IHttpSecurity { |
- public: |
- virtual bool Start(); |
- virtual void Stop(); |
- virtual bool Read(int bytes_to_read); |
- |
- // Special function needed by ActiveDocument::Load() |
- HRESULT InitPending(const GURL& url, IMoniker* moniker, IBindCtx* bind_ctx, |
- bool enable_frame_busting, bool privileged_mode, |
- HWND notification_window, IStream* cache); |
- |
- // Used from "DownloadRequestInHost". |
- // Callback will be invoked either right away (if operation is finished) or |
- // from inside ::OnStopBinding() when it is safe to reuse the bind_context. |
- typedef base::Callback<void(IMoniker*, IBindCtx*, IStream*, const char*)> |
- TerminateBindCallback; |
- void TerminateBind(const TerminateBindCallback& callback); |
- |
- // Parent Window for UrlMon error dialogs |
- void set_parent_window(HWND parent_window) { |
- parent_window_ = parent_window; |
- } |
- |
- // This function passes information on whether ChromeFrame is running in |
- // privileged mode. |
- void set_privileged_mode(bool privileged_mode) { |
- privileged_mode_ = privileged_mode; |
- } |
- |
- // Returns a string in the form " id: %i Obj: %X URL: %s" which is useful |
- // to identify request objects in the log. |
- std::string me() const; |
- |
- protected: |
- UrlmonUrlRequest(); |
- ~UrlmonUrlRequest(); |
- |
- BEGIN_COM_MAP(UrlmonUrlRequest) |
- COM_INTERFACE_ENTRY(IHttpNegotiate) |
- COM_INTERFACE_ENTRY(IServiceProvider) |
- COM_INTERFACE_ENTRY(IBindStatusCallback) |
- COM_INTERFACE_ENTRY(IWindowForBindingUI) |
- COM_INTERFACE_ENTRY(IAuthenticate) |
- COM_INTERFACE_ENTRY(IHttpSecurity) |
- END_COM_MAP() |
- |
- BEGIN_SERVICE_MAP(UrlmonUrlRequest) |
- SERVICE_ENTRY(IID_IHttpNegotiate); |
- END_SERVICE_MAP() |
- |
- // IBindStatusCallback implementation |
- STDMETHOD(OnStartBinding)(DWORD reserved, IBinding* binding); |
- STDMETHOD(GetPriority)(LONG* priority); |
- STDMETHOD(OnLowResource)(DWORD reserved); |
- STDMETHOD(OnProgress)(ULONG progress, ULONG max_progress, |
- ULONG status_code, LPCWSTR status_text); |
- STDMETHOD(OnStopBinding)(HRESULT result, LPCWSTR error); |
- STDMETHOD(GetBindInfo)(DWORD* bind_flags, BINDINFO* bind_info); |
- STDMETHOD(OnDataAvailable)(DWORD flags, DWORD size, FORMATETC* formatetc, |
- STGMEDIUM* storage); |
- STDMETHOD(OnObjectAvailable)(REFIID iid, IUnknown* object); |
- |
- // IHttpNegotiate implementation |
- STDMETHOD(BeginningTransaction)(const wchar_t* url, |
- const wchar_t* current_headers, DWORD reserved, |
- wchar_t** additional_headers); |
- STDMETHOD(OnResponse)(DWORD dwResponseCode, const wchar_t* response_headers, |
- const wchar_t* request_headers, wchar_t** additional_headers); |
- |
- // IWindowForBindingUI implementation. This interface is used typically to |
- // query the window handle which URLMON uses as the parent of error dialogs. |
- STDMETHOD(GetWindow)(REFGUID guid_reason, HWND* parent_window); |
- |
- // IAuthenticate implementation. Used to return the parent window for the |
- // dialog displayed by IE for authenticating with a proxy. |
- STDMETHOD(Authenticate)(HWND* parent_window, LPWSTR* user_name, |
- LPWSTR* password); |
- |
- // IHttpSecurity implementation. |
- STDMETHOD(OnSecurityProblem)(DWORD problem); |
- |
- void set_pending(bool pending) { |
- pending_ = pending; |
- } |
- |
- bool pending() const { |
- return pending_; |
- } |
- |
- bool terminate_requested() const { |
- return !terminate_bind_callback_.is_null(); |
- } |
- |
- std::string response_headers() { |
- return response_headers_; |
- } |
- |
- protected: |
- void ReleaseBindings(); |
- |
- HRESULT StartAsyncDownload(); |
- void NotifyDelegateAndDie(); |
- void TerminateTransaction(); |
- static net::Error HresultToNetError(HRESULT hr); |
- |
- private: |
- size_t SendDataToDelegate(size_t bytes); |
- |
- // This class simplifies tracking the progress of operation. We have 3 main |
- // states: DONE, WORKING and ABORTING. |
- // When in [DONE] or [ABORTING] state, there is additional information |
- // about the result of operation. |
- // Start(), SetRedirected(), Cancel() and Done() methods trigger the state |
- // change. See comments bellow. |
- class Status { |
- public: |
- enum State {DONE, ABORTING, WORKING}; |
- struct Redirection { |
- Redirection() : http_code(0) { } |
- int http_code; |
- std::string utf8_url; |
- }; |
- |
- Status() : state_(Status::DONE) { |
- } |
- |
- State get_state() const { |
- return state_; |
- } |
- |
- // Switch from [DONE] to [WORKING]. |
- void Start() { |
- DCHECK_EQ(state_, DONE); |
- state_ = WORKING; |
- } |
- |
- // Save redirection information and switch to [ABORTING] state. |
- // Assumes binding_->Abort() will be called! |
- void SetRedirected(int http_code, const std::string& utf8_url) { |
- DCHECK_EQ(state_, WORKING); |
- DCHECK_EQ(result_.status(), net::URLRequestStatus::SUCCESS); |
- redirect_.utf8_url = utf8_url; |
- |
- // At times we receive invalid redirect codes like 0, 200, etc. We |
- // default to 302 in this case. |
- redirect_.http_code = http_code; |
- if (!net::HttpResponseHeaders::IsRedirectResponseCode(http_code)) |
- redirect_.http_code = 302; |
- |
- state_ = ABORTING; |
- } |
- |
- // Set the result as net::URLRequestStatus::CANCELED. |
- // Switch to [ABORTING] state (if not already in that state). |
- void Cancel() { |
- if (state_ == DONE) |
- return; |
- |
- if (state_ == WORKING) { |
- state_ = ABORTING; |
- } else { |
- // state_ == ABORTING |
- redirect_.http_code = 0; |
- redirect_.utf8_url.clear(); |
- } |
- |
- set_result(net::URLRequestStatus::CANCELED, 0); |
- } |
- |
- void Done() { |
- state_ = DONE; |
- } |
- |
- bool was_redirected() const { |
- return redirect_.http_code != 0; |
- } |
- |
- const Redirection& get_redirection() const { |
- return redirect_; |
- } |
- |
- const net::URLRequestStatus& get_result() const { |
- return result_; |
- } |
- |
- void set_result(net::URLRequestStatus::Status status, int error) { |
- result_.set_status(status); |
- result_.set_error(error); |
- } |
- |
- void set_result(HRESULT hr) { |
- result_.set_status(FAILED(hr)? net::URLRequestStatus::FAILED: |
- net::URLRequestStatus::SUCCESS); |
- result_.set_error(HresultToNetError(hr)); |
- } |
- |
- private: |
- Redirection redirect_; |
- State state_; |
- net::URLRequestStatus result_; |
- }; |
- |
- Status status_; |
- base::win::ScopedComPtr<IBinding> binding_; |
- base::win::ScopedComPtr<IMoniker> moniker_; |
- base::win::ScopedComPtr<IBindCtx> bind_context_; |
- base::win::ScopedComPtr<IStream> cache_; |
- base::win::ScopedComPtr<IStream> pending_data_; |
- |
- size_t pending_read_size_; |
- base::PlatformThreadId thread_; |
- HWND parent_window_; |
- bool headers_received_; |
- int calling_delegate_; // re-entrancy protection. |
- // Set to true if the ChromeFrame instance is running in privileged mode. |
- bool privileged_mode_; |
- bool pending_; |
- TerminateBindCallback terminate_bind_callback_; |
- std::string response_headers_; |
- // Defaults to true and indicates whether we want to keep the original |
- // transaction alive when we receive the last data notification from |
- // urlmon. |
- bool is_expecting_download_; |
- // Set to true if the Urlmon transaction object needs to be cleaned up |
- // when this object is destroyed. Happens if we return |
- // INET_E_TERMINATE_BIND from OnDataAvailable in the last data notification. |
- bool cleanup_transaction_; |
- // Copy of the request headers. |
- std::string request_headers_; |
- |
- DISALLOW_COPY_AND_ASSIGN(UrlmonUrlRequest); |
-}; |
- |
-#endif // CHROME_FRAME_URLMON_URL_REQUEST_PRIVATE_H_ |