Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / net / url_request / test_url_fetcher_factory.cc
index 0a96153..d6c6611 100644 (file)
@@ -11,6 +11,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/message_loop/message_loop.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"
@@ -105,11 +106,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) {
 }
@@ -155,6 +151,22 @@ void TestURLFetcher::SaveResponseToTemporaryFile(
 
 void TestURLFetcher::SaveResponseWithWriter(
     scoped_ptr<URLFetcherResponseWriter> response_writer) {
+  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 {
+    NOTIMPLEMENTED();
+  }
 }
 
 HttpResponseHeaders* TestURLFetcher::GetResponseHeaders() const {
@@ -217,6 +229,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;
 }