Index: remoting/base/chromium_url_request.cc |
diff --git a/remoting/base/chromium_url_request.cc b/remoting/base/chromium_url_request.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..36dd7be999b9441b220f25ed2a25e596c636e08c |
--- /dev/null |
+++ b/remoting/base/chromium_url_request.cc |
@@ -0,0 +1,60 @@ |
+// Copyright 2016 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. |
+ |
+#include "remoting/base/chromium_url_request.h" |
+ |
+#include "base/callback_helpers.h" |
+#include "net/url_request/url_fetcher.h" |
+#include "net/url_request/url_request_context_getter.h" |
+ |
+namespace remoting { |
+ |
+ChromiumUrlRequest::ChromiumUrlRequest( |
+ scoped_refptr<net::URLRequestContextGetter> url_context, |
+ const std::string& url) { |
+ url_fetcher_ = net::URLFetcher::Create(GURL(url), net::URLFetcher::GET, this); |
+ url_fetcher_->SetRequestContext(url_context.get()); |
+} |
+ |
+ChromiumUrlRequest::~ChromiumUrlRequest() {} |
+ |
+void ChromiumUrlRequest::AddHeader(const std::string& value) { |
+ url_fetcher_->AddExtraRequestHeader(value); |
+} |
+ |
+void ChromiumUrlRequest::Start(const OnResultCallback& on_result_callback) { |
+ DCHECK(!on_result_callback.is_null()); |
+ DCHECK(on_result_callback_.is_null()); |
+ |
+ on_result_callback_ = on_result_callback; |
+ url_fetcher_->Start(); |
+} |
+ |
+void ChromiumUrlRequest::OnURLFetchComplete( |
+ const net::URLFetcher* url_fetcher) { |
+ DCHECK_EQ(url_fetcher, url_fetcher_.get()); |
+ |
+ Result result; |
+ result.success = |
+ url_fetcher_->GetResponseCode() != net::URLFetcher::RESPONSE_CODE_INVALID; |
+ if (result.success) { |
+ result.status = url_fetcher_->GetResponseCode(); |
+ url_fetcher_->GetResponseAsString(&result.response_body); |
+ } |
+ |
+ DCHECK(!on_result_callback_.is_null()); |
+ base::ResetAndReturn(&on_result_callback_).Run(result); |
+} |
+ |
+ChromiumUrlRequestFactory::ChromiumUrlRequestFactory( |
+ scoped_refptr<net::URLRequestContextGetter> url_context) |
+ : url_context_(url_context) {} |
+ChromiumUrlRequestFactory::~ChromiumUrlRequestFactory() {} |
+ |
+scoped_ptr<UrlRequest> ChromiumUrlRequestFactory::CreateUrlRequest( |
+ const std::string& url) { |
+ return make_scoped_ptr(new ChromiumUrlRequest(url_context_, url)); |
+} |
+ |
+} // namespace remoting |