diff options
Diffstat (limited to 'chromium/net/url_request/test_url_fetcher_factory.cc')
-rw-r--r-- | chromium/net/url_request/test_url_fetcher_factory.cc | 50 |
1 files changed, 45 insertions, 5 deletions
diff --git a/chromium/net/url_request/test_url_fetcher_factory.cc b/chromium/net/url_request/test_url_fetcher_factory.cc index 5a72d71dfb2..bd4f5e187a3 100644 --- a/chromium/net/url_request/test_url_fetcher_factory.cc +++ b/chromium/net/url_request/test_url_fetcher_factory.cc @@ -8,9 +8,12 @@ #include "base/bind.h" #include "base/compiler_specific.h" +#include "base/file_util.h" #include "base/memory/weak_ptr.h" #include "base/message_loop/message_loop.h" +#include "base/threading/thread_restrictions.h" #include "net/base/host_port_pair.h" +#include "net/base/io_buffer.h" #include "net/base/net_errors.h" #include "net/http/http_response_headers.h" #include "net/url_request/url_fetcher_delegate.h" @@ -91,6 +94,10 @@ int TestURLFetcher::GetLoadFlags() const { void TestURLFetcher::SetReferrer(const std::string& referrer) { } +void TestURLFetcher::SetReferrerPolicy( + URLRequest::ReferrerPolicy referrer_policy) { +} + void TestURLFetcher::SetExtraRequestHeaders( const std::string& extra_request_headers) { fake_extra_request_headers_.Clear(); @@ -101,11 +108,6 @@ void TestURLFetcher::AddExtraRequestHeader(const std::string& header_line) { fake_extra_request_headers_.AddHeaderFromString(header_line); } -void TestURLFetcher::GetExtraRequestHeaders( - HttpRequestHeaders* headers) const { - *headers = fake_extra_request_headers_; -} - void TestURLFetcher::SetRequestContext( URLRequestContextGetter* request_context_getter) { } @@ -143,6 +145,12 @@ void TestURLFetcher::SetAutomaticallyRetryOnNetworkChanges(int max_retries) { void TestURLFetcher::SaveResponseToFileAtPath( const base::FilePath& file_path, scoped_refptr<base::SequencedTaskRunner> file_task_runner) { + SetResponseFilePath(file_path); + // Asynchronous IO is not supported, so file_task_runner is ignored. + base::ThreadRestrictions::ScopedAllowIO allow_io; + const size_t written_bytes = base::WriteFile( + file_path, fake_response_string_.c_str(), fake_response_string_.size()); + DCHECK_EQ(written_bytes, fake_response_string_.size()); } void TestURLFetcher::SaveResponseToTemporaryFile( @@ -151,6 +159,33 @@ void TestURLFetcher::SaveResponseToTemporaryFile( void TestURLFetcher::SaveResponseWithWriter( scoped_ptr<URLFetcherResponseWriter> response_writer) { + // In class URLFetcherCore this method is called by all three: + // GetResponseAsString() / SaveResponseToFileAtPath() / + // SaveResponseToTemporaryFile(). But here (in TestURLFetcher), this method + // is never used by any of these three methods. So, file writing is expected + // to be done in SaveResponseToFileAtPath(), and this method supports only + // URLFetcherStringWriter (for testing of this method only). + if (fake_response_destination_ == STRING) { + response_writer_ = response_writer.Pass(); + int response = response_writer_->Initialize(CompletionCallback()); + // The TestURLFetcher doesn't handle asynchronous writes. + DCHECK_EQ(OK, response); + + scoped_refptr<IOBuffer> buffer(new StringIOBuffer(fake_response_string_)); + response = response_writer_->Write(buffer.get(), + fake_response_string_.size(), + CompletionCallback()); + DCHECK_EQ(static_cast<int>(fake_response_string_.size()), response); + response = response_writer_->Finish(CompletionCallback()); + DCHECK_EQ(OK, response); + } else if (fake_response_destination_ == TEMP_FILE) { + // SaveResponseToFileAtPath() should be called instead of this method to + // save file. Asynchronous file writing using URLFetcherFileWriter is not + // supported. + NOTIMPLEMENTED(); + } else { + NOTREACHED(); + } } HttpResponseHeaders* TestURLFetcher::GetResponseHeaders() const { @@ -213,6 +248,11 @@ bool TestURLFetcher::GetResponseAsFilePath( return true; } +void TestURLFetcher::GetExtraRequestHeaders( + HttpRequestHeaders* headers) const { + *headers = fake_extra_request_headers_; +} + void TestURLFetcher::set_status(const URLRequestStatus& status) { fake_status_ = status; } |