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

Unified Diff: net/url_request/test_url_fetcher_factory.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/static_http_user_agent_settings.cc ('k') | net/url_request/test_url_fetcher_factory.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/url_request/test_url_fetcher_factory.h
diff --git a/net/url_request/test_url_fetcher_factory.h b/net/url_request/test_url_fetcher_factory.h
deleted file mode 100644
index 5ceef51ec62f234211b7a3687962f88814248e51..0000000000000000000000000000000000000000
--- a/net/url_request/test_url_fetcher_factory.h
+++ /dev/null
@@ -1,464 +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_TEST_URL_FETCHER_FACTORY_H_
-#define NET_URL_REQUEST_TEST_URL_FETCHER_FACTORY_H_
-
-#include <list>
-#include <map>
-#include <string>
-#include <utility>
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/compiler_specific.h"
-#include "base/files/file_path.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/threading/non_thread_safe.h"
-#include "net/http/http_request_headers.h"
-#include "net/http/http_status_code.h"
-#include "net/url_request/url_fetcher_factory.h"
-#include "net/url_request/url_request_status.h"
-#include "url/gurl.h"
-
-namespace net {
-
-// Changes URLFetcher's Factory for the lifetime of the object.
-// Note that this scoper cannot be nested (to make it even harder to misuse).
-class ScopedURLFetcherFactory : public base::NonThreadSafe {
- public:
- explicit ScopedURLFetcherFactory(URLFetcherFactory* factory);
- virtual ~ScopedURLFetcherFactory();
-
- private:
- DISALLOW_COPY_AND_ASSIGN(ScopedURLFetcherFactory);
-};
-
-// TestURLFetcher and TestURLFetcherFactory are used for testing consumers of
-// URLFetcher. TestURLFetcherFactory is a URLFetcherFactory that creates
-// TestURLFetchers. TestURLFetcher::Start is overriden to do nothing. It is
-// expected that you'll grab the delegate from the TestURLFetcher and invoke
-// the callback method when appropriate. In this way it's easy to mock a
-// URLFetcher.
-// Typical usage:
-// // TestURLFetcher requires a MessageLoop.
-// MessageLoop message_loop;
-// // And an IO thread to release URLRequestContextGetter in URLFetcher::Core.
-// BrowserThreadImpl io_thread(BrowserThread::IO, &message_loop);
-// // Create factory (it automatically sets itself as URLFetcher's factory).
-// TestURLFetcherFactory factory;
-// // Do something that triggers creation of a URLFetcher.
-// ...
-// TestURLFetcher* fetcher = factory.GetFetcherByID(expected_id);
-// DCHECK(fetcher);
-// // Notify delegate with whatever data you want.
-// fetcher->delegate()->OnURLFetchComplete(...);
-// // Make sure consumer of URLFetcher does the right thing.
-// ...
-//
-// Note: if you don't know when your request objects will be created you
-// might want to use the FakeURLFetcher and FakeURLFetcherFactory classes
-// below.
-
-class TestURLFetcherFactory;
-class TestURLFetcher : public URLFetcher {
- public:
- // Interface for tests to intercept production code classes using URLFetcher.
- // Allows even-driven mock server classes to analyze the correctness of
- // requests / uploads events and forge responses back at the right moment.
- class DelegateForTests {
- public:
- // Callback issued correspondingly to the call to the |Start()| method.
- virtual void OnRequestStart(int fetcher_id) = 0;
-
- // Callback issued correspondingly to the call to |AppendChunkToUpload|.
- // Uploaded chunks can be retrieved with the |upload_chunks()| getter.
- virtual void OnChunkUpload(int fetcher_id) = 0;
-
- // Callback issued correspondingly to the destructor.
- virtual void OnRequestEnd(int fetcher_id) = 0;
- };
-
- TestURLFetcher(int id,
- const GURL& url,
- URLFetcherDelegate* d);
- ~TestURLFetcher() override;
-
- // URLFetcher implementation
- void SetUploadData(const std::string& upload_content_type,
- const std::string& upload_content) override;
- 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) override;
- void SetUploadStreamFactory(
- const std::string& upload_content_type,
- const CreateUploadStreamCallback& callback) override;
- void SetChunkedUpload(const std::string& upload_content_type) override;
- // Overriden to cache the chunks uploaded. Caller can read back the uploaded
- // chunks with the upload_chunks() accessor.
- void AppendChunkToUpload(const std::string& data,
- bool is_last_chunk) override;
- void SetLoadFlags(int load_flags) override;
- int GetLoadFlags() const override;
- void SetReferrer(const std::string& referrer) override;
- void SetReferrerPolicy(URLRequest::ReferrerPolicy referrer_policy) override;
- void SetExtraRequestHeaders(
- const std::string& extra_request_headers) override;
- void AddExtraRequestHeader(const std::string& header_line) override;
- void SetRequestContext(
- URLRequestContextGetter* request_context_getter) override;
- void SetFirstPartyForCookies(const GURL& first_party_for_cookies) override;
- void SetURLRequestUserData(
- const void* key,
- const CreateDataCallback& create_data_callback) override;
- void SetStopOnRedirect(bool stop_on_redirect) override;
- void SetAutomaticallyRetryOn5xx(bool retry) override;
- void SetMaxRetriesOn5xx(int max_retries) override;
- int GetMaxRetriesOn5xx() const override;
- base::TimeDelta GetBackoffDelay() const override;
- void SetAutomaticallyRetryOnNetworkChanges(int max_retries) override;
- void SaveResponseToFileAtPath(
- const base::FilePath& file_path,
- scoped_refptr<base::SequencedTaskRunner> file_task_runner) override;
- void SaveResponseToTemporaryFile(
- scoped_refptr<base::SequencedTaskRunner> file_task_runner) override;
- void SaveResponseWithWriter(
- scoped_ptr<URLFetcherResponseWriter> response_writer) override;
- HttpResponseHeaders* GetResponseHeaders() const override;
- HostPortPair GetSocketAddress() const override;
- bool WasFetchedViaProxy() const override;
- void Start() override;
-
- // URL we were created with. Because of how we're using URLFetcher GetURL()
- // always returns an empty URL. Chances are you'll want to use
- // GetOriginalURL() in your tests.
- const GURL& GetOriginalURL() const override;
- const GURL& GetURL() const override;
- const URLRequestStatus& GetStatus() const override;
- int GetResponseCode() const override;
- const ResponseCookies& GetCookies() const override;
- void ReceivedContentWasMalformed() override;
- // Override response access functions to return fake data.
- bool GetResponseAsString(std::string* out_response_string) const override;
- bool GetResponseAsFilePath(bool take_ownership,
- base::FilePath* out_response_path) const override;
-
- void GetExtraRequestHeaders(HttpRequestHeaders* headers) const;
-
- // Sets owner of this class. Set it to a non-NULL value if you want
- // to automatically unregister this fetcher from the owning factory
- // upon destruction.
- void set_owner(TestURLFetcherFactory* owner) { owner_ = owner; }
-
- // Unique ID in our factory.
- int id() const { return id_; }
-
- // Returns the data uploaded on this URLFetcher.
- const std::string& upload_content_type() const {
- return upload_content_type_;
- }
- const std::string& upload_data() const { return upload_data_; }
- const base::FilePath& upload_file_path() const { return upload_file_path_; }
-
- // Returns the chunks of data uploaded on this URLFetcher.
- const std::list<std::string>& upload_chunks() const { return chunks_; }
-
- // Checks whether the last call to |AppendChunkToUpload(...)| was final.
- bool did_receive_last_chunk() const { return did_receive_last_chunk_; }
-
- // Returns the delegate installed on the URLFetcher.
- URLFetcherDelegate* delegate() const { return delegate_; }
-
- void set_url(const GURL& url) { fake_url_ = url; }
- void set_status(const URLRequestStatus& status);
- void set_response_code(int response_code) {
- fake_response_code_ = response_code;
- }
- void set_cookies(const ResponseCookies& c) { fake_cookies_ = c; }
- void set_was_fetched_via_proxy(bool flag);
- void set_response_headers(scoped_refptr<HttpResponseHeaders> headers);
- void set_backoff_delay(base::TimeDelta backoff_delay);
- void SetDelegateForTests(DelegateForTests* delegate_for_tests);
-
- // Set string data.
- void SetResponseString(const std::string& response);
-
- // Set File data.
- void SetResponseFilePath(const base::FilePath& path);
-
- private:
- enum ResponseDestinationType {
- STRING, // Default: In a std::string
- TEMP_FILE // Write to a temp file
- };
-
- TestURLFetcherFactory* owner_;
- const int id_;
- const GURL original_url_;
- URLFetcherDelegate* delegate_;
- DelegateForTests* delegate_for_tests_;
- std::string upload_content_type_;
- std::string upload_data_;
- base::FilePath upload_file_path_;
- std::list<std::string> chunks_;
- bool did_receive_last_chunk_;
-
- // User can use set_* methods to provide values returned by getters.
- // Setting the real values is not possible, because the real class
- // has no setters. The data is a private member of a class defined
- // in a .cc file, so we can't get at it with friendship.
- int fake_load_flags_;
- GURL fake_url_;
- URLRequestStatus fake_status_;
- int fake_response_code_;
- ResponseCookies fake_cookies_;
- ResponseDestinationType fake_response_destination_;
- std::string fake_response_string_;
- base::FilePath fake_response_file_path_;
- bool fake_was_fetched_via_proxy_;
- scoped_refptr<HttpResponseHeaders> fake_response_headers_;
- HttpRequestHeaders fake_extra_request_headers_;
- int fake_max_retries_;
- base::TimeDelta fake_backoff_delay_;
- scoped_ptr<URLFetcherResponseWriter> response_writer_;
-
- DISALLOW_COPY_AND_ASSIGN(TestURLFetcher);
-};
-
-typedef TestURLFetcher::DelegateForTests TestURLFetcherDelegateForTests;
-
-// Simple URLFetcherFactory method that creates TestURLFetchers. All fetchers
-// are registered in a map by the id passed to the create method.
-// Optionally, a fetcher may be automatically unregistered from the map upon
-// its destruction.
-class TestURLFetcherFactory : public URLFetcherFactory,
- public ScopedURLFetcherFactory {
- public:
- TestURLFetcherFactory();
- ~TestURLFetcherFactory() override;
-
- URLFetcher* CreateURLFetcher(int id,
- const GURL& url,
- URLFetcher::RequestType request_type,
- URLFetcherDelegate* d) override;
- TestURLFetcher* GetFetcherByID(int id) const;
- void RemoveFetcherFromMap(int id);
- void SetDelegateForTests(TestURLFetcherDelegateForTests* delegate_for_tests);
- void set_remove_fetcher_on_delete(bool remove_fetcher_on_delete) {
- remove_fetcher_on_delete_ = remove_fetcher_on_delete;
- }
-
- private:
- // Maps from id passed to create to the returned URLFetcher.
- typedef std::map<int, TestURLFetcher*> Fetchers;
- Fetchers fetchers_;
- TestURLFetcherDelegateForTests* delegate_for_tests_;
- // Whether to automatically unregister a fetcher from this factory upon its
- // destruction, false by default.
- bool remove_fetcher_on_delete_;
-
- DISALLOW_COPY_AND_ASSIGN(TestURLFetcherFactory);
-};
-
-// The FakeURLFetcher and FakeURLFetcherFactory classes are similar to the
-// ones above but don't require you to know when exactly the URLFetcher objects
-// will be created.
-//
-// These classes let you set pre-baked HTTP responses for particular URLs.
-// E.g., if the user requests http://a.com/ then respond with an HTTP/500.
-//
-// We assume that the thread that is calling Start() on the URLFetcher object
-// has a message loop running.
-
-// FakeURLFetcher can be used to create a URLFetcher that will emit a fake
-// response when started. This class can be used in place of an actual
-// URLFetcher.
-//
-// Example usage:
-// FakeURLFetcher fake_fetcher("http://a.com", some_delegate,
-// "<html><body>hello world</body></html>",
-// HTTP_OK);
-//
-// // Will schedule a call to some_delegate->OnURLFetchComplete(&fake_fetcher).
-// fake_fetcher.Start();
-class FakeURLFetcher : public TestURLFetcher {
- public:
- // Normal URL fetcher constructor but also takes in a pre-baked response.
- FakeURLFetcher(const GURL& url,
- URLFetcherDelegate* d,
- const std::string& response_data,
- HttpStatusCode response_code,
- URLRequestStatus::Status status);
-
- // Start the request. This will call the given delegate asynchronously
- // with the pre-baked response as parameter.
- void Start() override;
-
- const GURL& GetURL() const override;
-
- ~FakeURLFetcher() override;
-
- private:
- // This is the method which actually calls the delegate that is passed in the
- // constructor.
- void RunDelegate();
-
- base::WeakPtrFactory<FakeURLFetcher> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(FakeURLFetcher);
-};
-
-
-// FakeURLFetcherFactory is a factory for FakeURLFetcher objects. When
-// instantiated, it sets itself up as the default URLFetcherFactory. Fake
-// responses for given URLs can be set using SetFakeResponse.
-//
-// This class is not thread-safe. You should not call SetFakeResponse or
-// ClearFakeResponse at the same time you call CreateURLFetcher. However, it is
-// OK to start URLFetcher objects while setting or clearing fake responses
-// since already created URLFetcher objects will not be affected by any changes
-// made to the fake responses (once a URLFetcher object is created you cannot
-// change its fake response).
-//
-// Example usage:
-// FakeURLFetcherFactory factory;
-//
-// // You know that class SomeService will request http://a.com/success and you
-// // want to respond with a simple html page and an HTTP/200 code.
-// factory.SetFakeResponse("http://a.com/success",
-// "<html><body>hello world</body></html>",
-// HTTP_OK,
-// URLRequestStatus::SUCCESS);
-// // You know that class SomeService will request url http://a.com/servererror
-// // and you want to test the service class by returning a server error.
-// factory.SetFakeResponse("http://a.com/servererror",
-// "",
-// HTTP_INTERNAL_SERVER_ERROR,
-// URLRequestStatus::SUCCESS);
-// // You know that class SomeService will request url http://a.com/autherror
-// // and you want to test the service class by returning a specific error
-// // code, say, a HTTP/401 error.
-// factory.SetFakeResponse("http://a.com/autherror",
-// "some_response",
-// HTTP_UNAUTHORIZED,
-// URLRequestStatus::SUCCESS);
-//
-// // You know that class SomeService will request url http://a.com/failure
-// // and you want to test the service class by returning a failure in the
-// // network layer.
-// factory.SetFakeResponse("http://a.com/failure",
-// "",
-// HTTP_INTERNAL_SERVER_ERROR,
-// URLRequestStatus::FAILURE);
-//
-// SomeService service;
-// service.Run(); // Will eventually request these three URLs.
-class FakeURLFetcherFactory : public URLFetcherFactory,
- public ScopedURLFetcherFactory {
- public:
- // Parameters to FakeURLFetcherCreator: url, delegate, response_data,
- // response_code
- // |url| URL for instantiated FakeURLFetcher
- // |delegate| Delegate for FakeURLFetcher
- // |response_data| response data for FakeURLFetcher
- // |response_code| response code for FakeURLFetcher
- // |status| URL fetch status for FakeURLFetcher
- // These arguments should by default be used in instantiating FakeURLFetcher
- // like so:
- // new FakeURLFetcher(url, delegate, response_data, response_code, status)
- typedef base::Callback<scoped_ptr<FakeURLFetcher>(
- const GURL&,
- URLFetcherDelegate*,
- const std::string&,
- HttpStatusCode,
- URLRequestStatus::Status)> FakeURLFetcherCreator;
-
- // |default_factory|, which can be NULL, is a URLFetcherFactory that
- // will be used to construct a URLFetcher in case the URL being created
- // has no pre-baked response. If it is NULL, a URLFetcherImpl will be
- // created in this case.
- explicit FakeURLFetcherFactory(URLFetcherFactory* default_factory);
-
- // |default_factory|, which can be NULL, is a URLFetcherFactory that
- // will be used to construct a URLFetcher in case the URL being created
- // has no pre-baked response. If it is NULL, a URLFetcherImpl will be
- // created in this case.
- // |creator| is a callback that returns will be called to create a
- // FakeURLFetcher if a response is found to a given URL. It can be
- // set to MakeFakeURLFetcher.
- FakeURLFetcherFactory(URLFetcherFactory* default_factory,
- const FakeURLFetcherCreator& creator);
-
- ~FakeURLFetcherFactory() override;
-
- // If no fake response is set for the given URL this method will delegate the
- // call to |default_factory_| if it is not NULL, or return NULL if it is
- // NULL.
- // Otherwise, it will return a URLFetcher object which will respond with the
- // pre-baked response that the client has set by calling SetFakeResponse().
- URLFetcher* CreateURLFetcher(int id,
- const GURL& url,
- URLFetcher::RequestType request_type,
- URLFetcherDelegate* d) override;
-
- // Sets the fake response for a given URL. The |response_data| may be empty.
- // The |response_code| may be any HttpStatusCode. For instance, HTTP_OK will
- // return an HTTP/200 and HTTP_INTERNAL_SERVER_ERROR will return an HTTP/500.
- // The |status| argument may be any URLRequestStatus::Status value. Typically,
- // requests that return a valid HttpStatusCode have the SUCCESS status, while
- // requests that indicate a failure to connect to the server have the FAILED
- // status.
- void SetFakeResponse(const GURL& url,
- const std::string& response_data,
- HttpStatusCode response_code,
- URLRequestStatus::Status status);
-
- // Clear all the fake responses that were previously set via
- // SetFakeResponse().
- void ClearFakeResponses();
-
- private:
- struct FakeURLResponse {
- std::string response_data;
- HttpStatusCode response_code;
- URLRequestStatus::Status status;
- };
- typedef std::map<GURL, FakeURLResponse> FakeResponseMap;
-
- const FakeURLFetcherCreator creator_;
- FakeResponseMap fake_responses_;
- URLFetcherFactory* const default_factory_;
-
- static scoped_ptr<FakeURLFetcher> DefaultFakeURLFetcherCreator(
- const GURL& url,
- URLFetcherDelegate* delegate,
- const std::string& response_data,
- HttpStatusCode response_code,
- URLRequestStatus::Status status);
- DISALLOW_COPY_AND_ASSIGN(FakeURLFetcherFactory);
-};
-
-// This is an implementation of URLFetcherFactory that will create a
-// URLFetcherImpl. It can be use in conjunction with a FakeURLFetcherFactory in
-// integration tests to control the behavior of some requests but execute
-// all the other ones.
-class URLFetcherImplFactory : public URLFetcherFactory {
- public:
- URLFetcherImplFactory();
- ~URLFetcherImplFactory() override;
-
- // This method will create a real URLFetcher.
- URLFetcher* CreateURLFetcher(int id,
- const GURL& url,
- URLFetcher::RequestType request_type,
- URLFetcherDelegate* d) override;
-};
-
-} // namespace net
-
-#endif // NET_URL_REQUEST_TEST_URL_FETCHER_FACTORY_H_
« no previous file with comments | « net/url_request/static_http_user_agent_settings.cc ('k') | net/url_request/test_url_fetcher_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698