Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2065)

Unified Diff: net/url_request/url_fetcher_core.h

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/url_request/url_fetcher.cc ('k') | net/url_request/url_fetcher_core.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/url_request/url_fetcher_core.h
diff --git a/net/url_request/url_fetcher_core.h b/net/url_request/url_fetcher_core.h
deleted file mode 100644
index 193edb46528d837529dad147e39fb6c8bfab00f6..0000000000000000000000000000000000000000
--- a/net/url_request/url_fetcher_core.h
+++ /dev/null
@@ -1,331 +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 NET_URL_REQUEST_URL_FETCHER_CORE_H_
-#define NET_URL_REQUEST_URL_FETCHER_CORE_H_
-
-#include <set>
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/debug/stack_trace.h"
-#include "base/files/file_path.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/timer/timer.h"
-#include "net/base/host_port_pair.h"
-#include "net/http/http_request_headers.h"
-#include "net/url_request/url_fetcher.h"
-#include "net/url_request/url_request.h"
-#include "net/url_request/url_request_status.h"
-#include "url/gurl.h"
-
-namespace base {
-class SingleThreadTaskRunner;
-} // namespace base
-
-namespace net {
-class DrainableIOBuffer;
-class HttpResponseHeaders;
-class IOBuffer;
-class URLFetcherDelegate;
-class URLFetcherResponseWriter;
-class URLRequestContextGetter;
-class URLRequestThrottlerEntryInterface;
-
-class URLFetcherCore
- : public base::RefCountedThreadSafe<URLFetcherCore>,
- public URLRequest::Delegate {
- public:
- URLFetcherCore(URLFetcher* fetcher,
- const GURL& original_url,
- URLFetcher::RequestType request_type,
- URLFetcherDelegate* d);
-
- // Starts the load. It's important that this not happen in the constructor
- // because it causes the IO thread to begin AddRef()ing and Release()ing
- // us. If our caller hasn't had time to fully construct us and take a
- // reference, the IO thread could interrupt things, run a task, Release()
- // us, and destroy us, leaving the caller with an already-destroyed object
- // when construction finishes.
- void Start();
-
- // Stops any in-progress load and ensures no callback will happen. It is
- // safe to call this multiple times.
- void Stop();
-
- // URLFetcher-like functions.
-
- // For POST requests, set |content_type| to the MIME type of the
- // content and set |content| to the data to upload.
- void SetUploadData(const std::string& upload_content_type,
- const std::string& upload_content);
- void SetUploadFilePath(const std::string& upload_content_type,
- const base::FilePath& file_path,
- uint64 range_offset,
- uint64 range_length,
- scoped_refptr<base::TaskRunner> file_task_runner);
- void SetUploadStreamFactory(
- const std::string& upload_content_type,
- const URLFetcher::CreateUploadStreamCallback& callback);
- void SetChunkedUpload(const std::string& upload_content_type);
- // Adds a block of data to be uploaded in a POST body. This can only be
- // called after Start().
- void AppendChunkToUpload(const std::string& data, bool is_last_chunk);
- // |flags| are flags to apply to the load operation--these should be
- // one or more of the LOAD_* flags defined in net/base/load_flags.h.
- void SetLoadFlags(int load_flags);
- int GetLoadFlags() const;
- void SetReferrer(const std::string& referrer);
- void SetReferrerPolicy(URLRequest::ReferrerPolicy referrer_policy);
- void SetExtraRequestHeaders(const std::string& extra_request_headers);
- void AddExtraRequestHeader(const std::string& header_line);
- void SetRequestContext(URLRequestContextGetter* request_context_getter);
- // Set the URL that should be consulted for the third-party cookie
- // blocking policy.
- void SetFirstPartyForCookies(const GURL& first_party_for_cookies);
- // Set the key and data callback that is used when setting the user
- // data on any URLRequest objects this object creates.
- void SetURLRequestUserData(
- const void* key,
- const URLFetcher::CreateDataCallback& create_data_callback);
- void SetStopOnRedirect(bool stop_on_redirect);
- void SetAutomaticallyRetryOn5xx(bool retry);
- void SetMaxRetriesOn5xx(int max_retries);
- int GetMaxRetriesOn5xx() const;
- base::TimeDelta GetBackoffDelay() const;
- void SetAutomaticallyRetryOnNetworkChanges(int max_retries);
- void SaveResponseToFileAtPath(
- const base::FilePath& file_path,
- scoped_refptr<base::SequencedTaskRunner> file_task_runner);
- void SaveResponseToTemporaryFile(
- scoped_refptr<base::SequencedTaskRunner> file_task_runner);
- void SaveResponseWithWriter(
- scoped_ptr<URLFetcherResponseWriter> response_writer);
- HttpResponseHeaders* GetResponseHeaders() const;
- HostPortPair GetSocketAddress() const;
- bool WasFetchedViaProxy() const;
- const GURL& GetOriginalURL() const;
- const GURL& GetURL() const;
- const URLRequestStatus& GetStatus() const;
- int GetResponseCode() const;
- const ResponseCookies& GetCookies() const;
- // Reports that the received content was malformed (i.e. failed parsing
- // or validation). This makes the throttling logic that does exponential
- // back-off when servers are having problems treat the current request as
- // a failure. Your call to this method will be ignored if your request is
- // already considered a failure based on the HTTP response code or response
- // headers.
- void ReceivedContentWasMalformed();
- bool GetResponseAsString(std::string* out_response_string) const;
- bool GetResponseAsFilePath(bool take_ownership,
- base::FilePath* out_response_path);
-
- // Overridden from URLRequest::Delegate:
- void OnReceivedRedirect(URLRequest* request,
- const RedirectInfo& redirect_info,
- bool* defer_redirect) override;
- void OnResponseStarted(URLRequest* request) override;
- void OnReadCompleted(URLRequest* request, int bytes_read) override;
- void OnCertificateRequested(URLRequest* request,
- SSLCertRequestInfo* cert_request_info) override;
-
- URLFetcherDelegate* delegate() const { return delegate_; }
- static void CancelAll();
- static int GetNumFetcherCores();
- static void SetEnableInterceptionForTests(bool enabled);
- static void SetIgnoreCertificateRequests(bool ignored);
-
- private:
- friend class base::RefCountedThreadSafe<URLFetcherCore>;
-
- class Registry {
- public:
- Registry();
- ~Registry();
-
- void AddURLFetcherCore(URLFetcherCore* core);
- void RemoveURLFetcherCore(URLFetcherCore* core);
-
- void CancelAll();
-
- int size() const {
- return fetchers_.size();
- }
-
- private:
- std::set<URLFetcherCore*> fetchers_;
-
- DISALLOW_COPY_AND_ASSIGN(Registry);
- };
-
- ~URLFetcherCore() override;
-
- // Wrapper functions that allow us to ensure actions happen on the right
- // thread.
- void StartOnIOThread();
- void StartURLRequest();
- void DidInitializeWriter(int result);
- void StartURLRequestWhenAppropriate();
- void CancelURLRequest(int error);
- void OnCompletedURLRequest(base::TimeDelta backoff_delay);
- void InformDelegateFetchIsComplete();
- void NotifyMalformedContent();
- void DidFinishWriting(int result);
- void RetryOrCompleteUrlFetch();
-
- // Deletes the request, removes it from the registry, and removes the
- // destruction observer.
- void ReleaseRequest();
-
- // Returns the max value of exponential back-off release time for
- // |original_url_| and |url_|.
- base::TimeTicks GetBackoffReleaseTime();
-
- void CompleteAddingUploadDataChunk(const std::string& data,
- bool is_last_chunk);
-
- // Writes all bytes stored in |data| with |response_writer_|.
- // Returns OK if all bytes in |data| get written synchronously. Otherwise,
- // returns ERR_IO_PENDING or a network error code.
- int WriteBuffer(scoped_refptr<DrainableIOBuffer> data);
-
- // Used to implement WriteBuffer().
- void DidWriteBuffer(scoped_refptr<DrainableIOBuffer> data, int result);
-
- // Read response bytes from the request.
- void ReadResponse();
-
- // Notify Delegate about the progress of upload/download.
- void InformDelegateUploadProgress();
- void InformDelegateUploadProgressInDelegateThread(int64 current, int64 total);
- void InformDelegateDownloadProgress();
- void InformDelegateDownloadProgressInDelegateThread(int64 current,
- int64 total);
-
- // Check if any upload data is set or not.
- void AssertHasNoUploadData() const;
-
- URLFetcher* fetcher_; // Corresponding fetcher object
- GURL original_url_; // The URL we were asked to fetch
- GURL url_; // The URL we eventually wound up at
- URLFetcher::RequestType request_type_; // What type of request is this?
- URLRequestStatus status_; // Status of the request
- URLFetcherDelegate* delegate_; // Object to notify on completion
- // Task runner for the creating thread. Used to interact with the delegate.
- scoped_refptr<base::SingleThreadTaskRunner> delegate_task_runner_;
- // Task runner for network operations.
- scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
- // Task runner for upload file access.
- scoped_refptr<base::TaskRunner> upload_file_task_runner_;
- scoped_ptr<URLRequest> request_; // The actual request this wraps
- int load_flags_; // Flags for the load operation
- int response_code_; // HTTP status code for the request
- scoped_refptr<IOBuffer> buffer_;
- // Read buffer
- scoped_refptr<URLRequestContextGetter> request_context_getter_;
- // Cookie/cache info for the request
- GURL first_party_for_cookies_; // The first party URL for the request
- // The user data to add to each newly-created URLRequest.
- const void* url_request_data_key_;
- URLFetcher::CreateDataCallback url_request_create_data_callback_;
- ResponseCookies cookies_; // Response cookies
- HttpRequestHeaders extra_request_headers_;
- scoped_refptr<HttpResponseHeaders> response_headers_;
- bool was_fetched_via_proxy_;
- HostPortPair socket_address_;
-
- bool upload_content_set_; // SetUploadData has been called
- std::string upload_content_; // HTTP POST payload
- base::FilePath upload_file_path_; // Path to file containing POST payload
- uint64 upload_range_offset_; // Offset from the beginning of the file
- // to be uploaded.
- uint64 upload_range_length_; // The length of the part of file to be
- // uploaded.
- URLFetcher::CreateUploadStreamCallback
- upload_stream_factory_; // Callback to create HTTP POST payload.
- std::string upload_content_type_; // MIME type of POST payload
- std::string referrer_; // HTTP Referer header value and policy
- URLRequest::ReferrerPolicy referrer_policy_;
- bool is_chunked_upload_; // True if using chunked transfer encoding
-
- // Used to determine how long to wait before making a request or doing a
- // retry.
- //
- // Both of them can only be accessed on the IO thread.
- //
- // To determine the proper backoff timing, throttler entries for
- // both |original_URL| and |url| are needed. For example, consider
- // the case that URL A redirects to URL B, for which the server
- // returns a 500 response. In this case, the exponential back-off
- // release time of URL A won't increase. If only the backoff
- // constraints for URL A are considered, too many requests for URL A
- // may be sent in a short period of time.
- //
- // Both of these will be NULL if
- // URLRequestContext::throttler_manager() is NULL.
- scoped_refptr<URLRequestThrottlerEntryInterface>
- original_url_throttler_entry_;
- scoped_refptr<URLRequestThrottlerEntryInterface> url_throttler_entry_;
-
- // True if the URLFetcher has been cancelled.
- bool was_cancelled_;
-
- // Writer object to write response to the destination like file and string.
- scoped_ptr<URLFetcherResponseWriter> response_writer_;
-
- // By default any server-initiated redirects are automatically followed. If
- // this flag is set to true, however, a redirect will halt the fetch and call
- // back to to the delegate immediately.
- bool stop_on_redirect_;
- // True when we're actually stopped due to a redirect halted by the above. We
- // use this to ensure that |url_| is set to the redirect destination rather
- // than the originally-fetched URL.
- bool stopped_on_redirect_;
-
- // If |automatically_retry_on_5xx_| is false, 5xx responses will be
- // propagated to the observer, if it is true URLFetcher will automatically
- // re-execute the request, after the back-off delay has expired.
- // true by default.
- bool automatically_retry_on_5xx_;
- // |num_retries_on_5xx_| indicates how many times we've failed to successfully
- // fetch this URL due to 5xx responses. Once this value exceeds the maximum
- // number of retries specified by the owner URLFetcher instance,
- // we'll give up.
- int num_retries_on_5xx_;
- // Maximum retries allowed when 5xx responses are received.
- int max_retries_on_5xx_;
- // Back-off time delay. 0 by default.
- base::TimeDelta backoff_delay_;
-
- // The number of retries that have been attempted due to ERR_NETWORK_CHANGED.
- int num_retries_on_network_changes_;
- // Maximum retries allowed when the request fails with ERR_NETWORK_CHANGED.
- // 0 by default.
- int max_retries_on_network_changes_;
-
- // Timer to poll the progress of uploading for POST and PUT requests.
- // When crbug.com/119629 is fixed, scoped_ptr is not necessary here.
- scoped_ptr<base::RepeatingTimer<URLFetcherCore> >
- upload_progress_checker_timer_;
- // Number of bytes sent so far.
- int64 current_upload_bytes_;
- // Number of bytes received so far.
- int64 current_response_bytes_;
- // Total expected bytes to receive (-1 if it cannot be determined).
- int64 total_response_bytes_;
-
- // TODO(willchan): Get rid of this after debugging crbug.com/90971.
- base::debug::StackTrace stack_trace_;
-
- static base::LazyInstance<Registry> g_registry;
-
- DISALLOW_COPY_AND_ASSIGN(URLFetcherCore);
-};
-
-} // namespace net
-
-#endif // NET_URL_REQUEST_URL_FETCHER_CORE_H_
« no previous file with comments | « net/url_request/url_fetcher.cc ('k') | net/url_request/url_fetcher_core.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698