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

Side by Side Diff: remoting/host/url_fetcher.cc

Issue 10160013: Implement HostPortAllocator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « remoting/host/url_fetcher.h ('k') | remoting/protocol/libjingle_transport_factory.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/url_fetcher.h" 5 #include "remoting/host/url_fetcher.h"
6 6
7 #include "base/location.h" 7 #include "base/location.h"
8 #include "base/message_loop_proxy.h" 8 #include "base/message_loop_proxy.h"
9 #include "googleurl/src/gurl.h" 9 #include "googleurl/src/gurl.h"
10 #include "net/base/io_buffer.h" 10 #include "net/base/io_buffer.h"
11 #include "net/url_request/url_request.h" 11 #include "net/url_request/url_request.h"
12 #include "net/url_request/url_request_context_getter.h" 12 #include "net/url_request/url_request_context_getter.h"
13 13
14 namespace remoting { 14 namespace remoting {
15 15
16 const int kBufferSize = 4096; 16 const int kBufferSize = 4096;
17 17
18 class UrlFetcher::Core : public base::RefCountedThreadSafe<Core>, 18 class UrlFetcher::Core : public base::RefCountedThreadSafe<Core>,
19 public net::URLRequest::Delegate { 19 public net::URLRequest::Delegate {
20 public: 20 public:
21 Core(const GURL& url, Method method); 21 Core(const GURL& url, Method method);
22 22
23 void SetRequestContext( 23 void SetRequestContext(
24 net::URLRequestContextGetter* request_context_getter); 24 net::URLRequestContextGetter* request_context_getter);
25 void SetUploadData(const std::string& upload_content_type, 25 void SetUploadData(const std::string& upload_content_type,
26 const std::string& upload_content); 26 const std::string& upload_content);
27 void SetHeader(const std::string& key, const std::string& value);
27 void Start(const UrlFetcher::DoneCallback& done_callback); 28 void Start(const UrlFetcher::DoneCallback& done_callback);
28 29
29 void Detach(); 30 void Detach();
30 31
31 // net::UrlRequest::Delegate interface. 32 // net::UrlRequest::Delegate interface.
32 virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE; 33 virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE;
33 virtual void OnReadCompleted(net::URLRequest* request, 34 virtual void OnReadCompleted(net::URLRequest* request,
34 int bytes_read) OVERRIDE; 35 int bytes_read) OVERRIDE;
35 36
36 private: 37 private:
(...skipping 13 matching lines...) Expand all
50 Method method_; 51 Method method_;
51 52
52 scoped_refptr<base::MessageLoopProxy> delegate_message_loop_; 53 scoped_refptr<base::MessageLoopProxy> delegate_message_loop_;
53 scoped_refptr<base::MessageLoopProxy> io_message_loop_; 54 scoped_refptr<base::MessageLoopProxy> io_message_loop_;
54 55
55 scoped_refptr<net::URLRequestContextGetter> request_context_getter_; 56 scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
56 57
57 std::string upload_content_; 58 std::string upload_content_;
58 std::string upload_content_type_; 59 std::string upload_content_type_;
59 60
61 net::HttpRequestHeaders request_headers_;
62
60 scoped_ptr<net::URLRequest> request_; 63 scoped_ptr<net::URLRequest> request_;
61 64
62 scoped_refptr<net::IOBuffer> buffer_; 65 scoped_refptr<net::IOBuffer> buffer_;
63 std::string data_; 66 std::string data_;
64 67
65 UrlFetcher::DoneCallback done_callback_; 68 UrlFetcher::DoneCallback done_callback_;
66 69
67 DISALLOW_COPY_AND_ASSIGN(Core); 70 DISALLOW_COPY_AND_ASSIGN(Core);
68 }; 71 };
69 72
(...skipping 12 matching lines...) Expand all
82 DCHECK(!request_context_getter_); 85 DCHECK(!request_context_getter_);
83 request_context_getter_ = request_context_getter; 86 request_context_getter_ = request_context_getter;
84 } 87 }
85 88
86 void UrlFetcher::Core::SetUploadData(const std::string& upload_content_type, 89 void UrlFetcher::Core::SetUploadData(const std::string& upload_content_type,
87 const std::string& upload_content) { 90 const std::string& upload_content) {
88 upload_content_type_ = upload_content_type; 91 upload_content_type_ = upload_content_type;
89 upload_content_ = upload_content; 92 upload_content_ = upload_content;
90 } 93 }
91 94
95 void UrlFetcher::Core::SetHeader(const std::string& key,
96 const std::string& value) {
97 request_headers_.SetHeader(key, value);
98 }
99
92 void UrlFetcher::Core::Start(const UrlFetcher::DoneCallback& done_callback) { 100 void UrlFetcher::Core::Start(const UrlFetcher::DoneCallback& done_callback) {
93 done_callback_ = done_callback; 101 done_callback_ = done_callback;
94 io_message_loop_ = request_context_getter_->GetIOMessageLoopProxy(); 102 io_message_loop_ = request_context_getter_->GetIOMessageLoopProxy();
95 DCHECK(io_message_loop_); 103 DCHECK(io_message_loop_);
96 io_message_loop_->PostTask(FROM_HERE, base::Bind( 104 io_message_loop_->PostTask(FROM_HERE, base::Bind(
97 &UrlFetcher::Core::DoStart, this)); 105 &UrlFetcher::Core::DoStart, this));
98 } 106 }
99 107
100 void UrlFetcher::Core::Detach() { 108 void UrlFetcher::Core::Detach() {
101 DCHECK(delegate_message_loop_->BelongsToCurrentThread()); 109 DCHECK(delegate_message_loop_->BelongsToCurrentThread());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 147
140 switch (method_) { 148 switch (method_) {
141 case GET: 149 case GET:
142 break; 150 break;
143 151
144 case POST: 152 case POST:
145 DCHECK(!upload_content_.empty()); 153 DCHECK(!upload_content_.empty());
146 DCHECK(!upload_content_type_.empty()); 154 DCHECK(!upload_content_type_.empty());
147 request_->set_method("POST"); 155 request_->set_method("POST");
148 156
149 net::HttpRequestHeaders headers; 157 request_headers_.SetHeader(net::HttpRequestHeaders::kContentType,
150 headers.SetHeader(net::HttpRequestHeaders::kContentType, 158 upload_content_type_);
151 upload_content_type_);
152 request_->SetExtraRequestHeaders(headers);
153 159
154 request_->AppendBytesToUpload( 160 request_->AppendBytesToUpload(
155 upload_content_.data(), static_cast<int>(upload_content_.length())); 161 upload_content_.data(), static_cast<int>(upload_content_.length()));
156 break; 162 break;
157 } 163 }
158 164
165 request_->SetExtraRequestHeaders(request_headers_);
166
159 request_->Start(); 167 request_->Start();
160 } 168 }
161 169
162 void UrlFetcher::Core::ReadResponse() { 170 void UrlFetcher::Core::ReadResponse() {
163 int bytes_read = 0; 171 int bytes_read = 0;
164 if (request_->status().is_success()) { 172 if (request_->status().is_success()) {
165 request_->Read(buffer_, kBufferSize, &bytes_read); 173 request_->Read(buffer_, kBufferSize, &bytes_read);
166 } 174 }
167 OnReadCompleted(request_.get(), bytes_read); 175 OnReadCompleted(request_.get(), bytes_read);
168 } 176 }
(...skipping 24 matching lines...) Expand all
193 void UrlFetcher::SetRequestContext( 201 void UrlFetcher::SetRequestContext(
194 net::URLRequestContextGetter* request_context_getter) { 202 net::URLRequestContextGetter* request_context_getter) {
195 core_->SetRequestContext(request_context_getter); 203 core_->SetRequestContext(request_context_getter);
196 } 204 }
197 205
198 void UrlFetcher::SetUploadData(const std::string& upload_content_type, 206 void UrlFetcher::SetUploadData(const std::string& upload_content_type,
199 const std::string& upload_content) { 207 const std::string& upload_content) {
200 core_->SetUploadData(upload_content_type, upload_content); 208 core_->SetUploadData(upload_content_type, upload_content);
201 } 209 }
202 210
211 void UrlFetcher::SetHeader(const std::string& key, const std::string& value) {
212 core_->SetHeader(key, value);
213 }
214
203 void UrlFetcher::Start(const DoneCallback& done_callback) { 215 void UrlFetcher::Start(const DoneCallback& done_callback) {
204 core_->Start(done_callback); 216 core_->Start(done_callback);
205 } 217 }
206 218
207 } // namespace remoting 219 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/url_fetcher.h ('k') | remoting/protocol/libjingle_transport_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698