Index: net/bits_request.h |
diff --git a/net/bits_request.h b/net/bits_request.h |
deleted file mode 100644 |
index aa1aa91cd76852359385dd2364b1970fdfc06047..0000000000000000000000000000000000000000 |
--- a/net/bits_request.h |
+++ /dev/null |
@@ -1,262 +0,0 @@ |
-// Copyright 2007-2010 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
-// |
-// BitsRequest provides http transactions using BITS, with an optional |
-// number of retries using a specified network configuration. |
-// |
-// BITS is sending the following string as user agent: |
-// User-Agent: Microsoft BITS/6.6 |
-// where the version seems to be the version of %windir%\System32\QMgr.dll. |
-// |
-// TODO(omaha): the class interface is not stable yet, as a few more |
-// getters and setters are still needed. |
- |
-#ifndef OMAHA_NET_BITS_REQUEST_H__ |
-#define OMAHA_NET_BITS_REQUEST_H__ |
- |
-#include <windows.h> |
-#include <bits.h> |
-#include <vector> |
-#include "base/basictypes.h" |
-#include "base/scoped_ptr.h" |
-#include "omaha/base/synchronized.h" |
-#include "omaha/base/utils.h" |
-#include "omaha/net/http_request.h" |
- |
-namespace omaha { |
- |
-class BitsJobCallback; |
- |
-class BitsRequest : public HttpRequestInterface { |
- public: |
- BitsRequest(); |
- virtual ~BitsRequest(); |
- |
- virtual HRESULT Close(); |
- |
- virtual HRESULT Send(); |
- |
- virtual HRESULT Cancel(); |
- |
- virtual HRESULT Pause(); |
- |
- virtual HRESULT Resume(); |
- |
- virtual std::vector<uint8> GetResponse() const { |
- return std::vector<uint8>(); |
- } |
- |
- // TODO(omaha): BITS provides access to headers on Windows Vista. |
- virtual HRESULT QueryHeadersString(uint32 info_level, |
- const TCHAR* name, |
- CString* value) const; |
- virtual CString GetResponseHeaders() const; |
- |
- // Returns the http status code in case of errors or 200 when the file is |
- // successfully transferred. BITS does not provide access to the status code |
- // directly; in some conditions the status code can be deduced from the error. |
- virtual int GetHttpStatusCode() const { |
- return request_state_.get() ? request_state_->http_status_code : 0; |
- } |
- |
- virtual CString ToString() const { return _T("BITS"); } |
- |
- virtual void set_session_handle(HINTERNET session_handle) { |
- session_handle_ = session_handle; |
- } |
- |
- virtual void set_url(const CString& url) { url_ = url; } |
- |
- virtual void set_request_buffer(const void* buffer, size_t buffer_length) { |
- request_buffer_ = buffer; |
- request_buffer_length_ = buffer_length; |
- } |
- |
- virtual void set_proxy_configuration(const ProxyConfig& proxy_config) { |
- proxy_config_ = proxy_config; |
- } |
- |
- // Sets the filename to receive the response instead of the memory buffer. |
- virtual void set_filename(const CString& filename) { filename_ = filename; } |
- |
- virtual void set_low_priority(bool low_priority) { |
- low_priority_ = low_priority; |
- } |
- |
- virtual void set_callback(NetworkRequestCallback* callback) { |
- callback_ = callback; |
- } |
- |
- virtual void set_additional_headers(const CString& additional_headers) { |
- additional_headers_ = additional_headers; |
- } |
- |
- // This request always uses the specified protocol so it is fine to ignore |
- // this attribute. |
- virtual void set_preserve_protocol(bool preserve_protocol) { |
- UNREFERENCED_PARAMETER(preserve_protocol); |
- } |
- |
- virtual CString user_agent() const { return user_agent_; } |
- |
- virtual void set_user_agent(const CString& user_agent) { |
- user_agent_ = user_agent; |
- } |
- |
- virtual void set_proxy_auth_config(const ProxyAuthConfig& proxy_auth_config) { |
- proxy_auth_config_ = proxy_auth_config; |
- } |
- |
- // Sets the minimum length of time that BITS waits after encountering a |
- // transient error condition before trying to transfer the file. |
- // The default value is 600 seconds. |
- void set_minimum_retry_delay(int minimum_retry_delay) { |
- minimum_retry_delay_ = minimum_retry_delay; |
- } |
- |
- // Sets the length of time that BITS tries to transfer the file after a |
- // transient error condition occurs. If BITS does not make progress during |
- // the retry period, it moves the state of the job from transient error |
- // to the error state. The default value is 14 days. |
- void set_no_progress_timeout(int no_progress_timeout) { |
- no_progress_timeout_ = no_progress_timeout; |
- } |
- |
- // Handles that BITS job state has changed. |
- void OnBitsJobStateChanged(); |
- |
- private: |
- // Sets invariant job properties, such as the filename and the description. |
- // These parameters can't change over the job life time. |
- HRESULT SetInvariantJobProperties(); |
- |
- // Sets non-invariant job properties. |
- HRESULT SetJobProperties(); |
- |
- // Sets additional_headers_ on the Job if IBackgroundCopyJobHttpOptions is |
- // supported. |
- HRESULT SetJobCustomHeaders(); |
- |
- // Uses the SimpleRequest HttpClient to detect the proxy for the current |
- // request. |
- HRESULT DetectManualProxy(); |
- |
- // Specifies how a job connects to the Internet. |
- HRESULT SetJobProxyUsage(); |
- |
- // Runs a polling loop waiting for the job to transition in one of its |
- // final states. |
- HRESULT DoSend(); |
- |
- // Handles the BG_JOB_STATE_ERROR. It returns S_OK when the error has |
- // been handled, otherwise, it returns the job error code and it makes the |
- // control return to the caller of Send. |
- HRESULT OnStateError(); |
- |
- // Handles the BG_JOB_STATE_TRANSFERRING. |
- HRESULT OnStateTransferring(); |
- |
- // Gets username and password through NetworkConfig. If successful, sets the |
- // credentials on the BITS job. |
- HRESULT GetProxyCredentials(); |
- |
- // Handles 407 errors. Tries autologon schemes. |
- HRESULT HandleProxyAuthenticationError(); |
- |
- // Handles 407 errors by cycling through the auth schemes, when credentials |
- // are already set on the BITS job. |
- HRESULT HandleProxyAuthenticationErrorCredsSet(); |
- |
- // Calls back with progress information if available. |
- HRESULT NotifyProgress(); |
- |
- int WinHttpToBitsProxyAuthScheme(uint32 winhttp_scheme); |
- uint32 BitsToWinhttpProxyAuthScheme(int bits_scheme); |
- |
- // Sets up BITS callback so BITS can send job status changes to this class. |
- HRESULT SetupBitsCallback(); |
- |
- // Stops BITS callback to send further job change notifications to this class. |
- // It is important to do this before the object goes out of scope since BITS |
- // callback needs to reference this object. |
- void RemoveBitsCallback(); |
- |
- // Creates or opens an existing job. |
- // 'is_created' is true if the job has been created or false if the job |
- // has been opened. |
- static HRESULT CreateOrOpenJob(const TCHAR* display_name, |
- IBackgroundCopyJob** bits_job, |
- bool* is_created); |
- |
- // Returns major.minor.0.0 BITS version. |
- static ULONGLONG GetBitsVersion(); |
- |
- // Holds the transient state corresponding to a BITS request. |
- struct TransientRequestState { |
- TransientRequestState() : http_status_code(0) { |
- SetZero(bits_job_id); |
- } |
- |
- int http_status_code; |
- CComPtr<IBackgroundCopyJob> bits_job; |
- GUID bits_job_id; |
- }; |
- |
- LLock lock_; |
- CString url_; |
- CString filename_; |
- const void* request_buffer_; // Contains the request body for POST. |
- size_t request_buffer_length_; // Length of the request body. |
- CString additional_headers_; |
- CString user_agent_; |
- ProxyAuthConfig proxy_auth_config_; |
- ProxyConfig proxy_config_; |
- bool low_priority_; |
- bool is_canceled_; |
- HINTERNET session_handle_; // Not owned by this class. |
- NetworkRequestCallback* callback_; |
- int minimum_retry_delay_; |
- int no_progress_timeout_; |
- int current_auth_scheme_; |
- |
- // For manual proxy authentication, if we do not know the auth scheme that the |
- // proxy is using, we set the username/password on all the schemes and try |
- // them out in sequence. |
- bool creds_set_scheme_unknown_; |
- |
- // Event that is set when the BITS job state is changed. |
- scoped_event bits_job_status_changed_event_; |
- |
- BitsJobCallback* bits_request_callback_; |
- uint32 last_progress_report_tick_; |
- |
- scoped_ptr<TransientRequestState> request_state_; |
- |
- // See http://b/1189928 |
- CComPtr<IBackgroundCopyManager> bits_manager_; |
- |
- // BITS could call JobModification() callback very often during job transfer. |
- // This minumum interval is to prevent reporting job progress too often to |
- // BitsRequest. |
- static const int kJobProgressReportMinimumIntervalMs = 200; |
- |
- DISALLOW_EVIL_CONSTRUCTORS(BitsRequest); |
-}; |
- |
-} // namespace omaha |
- |
-#endif // OMAHA_NET_BITS_REQUEST_H__ |
- |
- |