OLD | NEW |
---|---|
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 "chrome/browser/google_apis/test_server/http_server.h" | 5 #include "chrome/browser/google_apis/test_server/http_server.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "base/string_util.h" | |
10 #include "base/stringprintf.h" | 11 #include "base/stringprintf.h" |
11 #include "chrome/browser/google_apis/test_server/http_request.h" | 12 #include "chrome/browser/google_apis/test_server/http_request.h" |
12 #include "chrome/browser/google_apis/test_server/http_response.h" | 13 #include "chrome/browser/google_apis/test_server/http_response.h" |
13 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
14 #include "content/public/test/test_utils.h" | 15 #include "content/public/test/test_utils.h" |
15 #include "net/tools/fetch/http_listen_socket.h" | 16 #include "net/tools/fetch/http_listen_socket.h" |
16 | 17 |
17 namespace google_apis { | 18 namespace google_apis { |
18 namespace test_server { | 19 namespace test_server { |
19 | 20 |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
139 scoped_ptr<HttpResponse> not_found_response(new HttpResponse()); | 140 scoped_ptr<HttpResponse> not_found_response(new HttpResponse()); |
140 not_found_response->set_code(NOT_FOUND); | 141 not_found_response->set_code(NOT_FOUND); |
141 connection->SendResponse(not_found_response.Pass()); | 142 connection->SendResponse(not_found_response.Pass()); |
142 | 143 |
143 // Drop the connection, since we do not support multiple requests per | 144 // Drop the connection, since we do not support multiple requests per |
144 // connection. | 145 // connection. |
145 connections_.erase(connection->socket_.get()); | 146 connections_.erase(connection->socket_.get()); |
146 delete connection; | 147 delete connection; |
147 } | 148 } |
148 | 149 |
149 GURL HttpServer::GetBaseURL() { | 150 GURL HttpServer::GetBaseURL() const { |
150 return base_url_; | 151 return base_url_; |
151 } | 152 } |
152 | 153 |
154 GURL HttpServer::GetURL(const std::string& relative_url) const { | |
155 DCHECK(StartsWithASCII(relative_url, "/", true)); | |
hashimoto
2012/11/16 05:38:10
Please add describe that 'true' means case sensiti
satorux1
2012/11/16 05:56:44
Done. boolean parameters like this are evil...
| |
156 return base_url_.Resolve(relative_url); | |
157 } | |
158 | |
153 void HttpServer::RegisterRequestHandler( | 159 void HttpServer::RegisterRequestHandler( |
154 const HandleRequestCallback& callback) { | 160 const HandleRequestCallback& callback) { |
155 request_handlers_.push_back(callback); | 161 request_handlers_.push_back(callback); |
156 } | 162 } |
157 | 163 |
158 GURL HttpServer::RegisterDefaultResponse( | 164 void HttpServer::RegisterDefaultResponse( |
159 const std::string& relative_path, | 165 const std::string& relative_path, |
160 const HttpResponse& default_response) { | 166 const HttpResponse& default_response) { |
161 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 167 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
168 DCHECK(StartsWithASCII(relative_path, "/", true)); | |
162 | 169 |
163 GURL request_url = base_url_.Resolve(relative_path); | 170 GURL request_url = base_url_.Resolve(relative_path); |
164 const HandleRequestCallback callback = | 171 const HandleRequestCallback callback = |
165 base::Bind(&HandleDefaultRequest, | 172 base::Bind(&HandleDefaultRequest, |
166 request_url, | 173 request_url, |
167 default_response); | 174 default_response); |
168 request_handlers_.push_back(callback); | 175 request_handlers_.push_back(callback); |
169 | |
170 return request_url; | |
171 } | 176 } |
172 | 177 |
173 GURL HttpServer::RegisterTextResponse( | 178 void HttpServer::RegisterTextResponse( |
174 const std::string& relative_path, | 179 const std::string& relative_path, |
175 const std::string& content, | 180 const std::string& content, |
176 const std::string& content_type, | 181 const std::string& content_type, |
177 const ResponseCode response_code) { | 182 const ResponseCode response_code) { |
178 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 183 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
184 DCHECK(StartsWithASCII(relative_path, "/", true)); | |
179 | 185 |
180 HttpResponse default_response; | 186 HttpResponse default_response; |
181 default_response.set_content(content); | 187 default_response.set_content(content); |
182 default_response.set_content_type(content_type); | 188 default_response.set_content_type(content_type); |
183 default_response.set_code(response_code); | 189 default_response.set_code(response_code); |
184 | 190 |
185 return RegisterDefaultResponse(relative_path, default_response); | 191 RegisterDefaultResponse(relative_path, default_response); |
186 } | 192 } |
187 | 193 |
188 GURL HttpServer::RegisterFileResponse( | 194 void HttpServer::RegisterFileResponse( |
189 const std::string& relative_path, | 195 const std::string& relative_path, |
190 const FilePath& file_path, | 196 const FilePath& file_path, |
191 const std::string& content_type, | 197 const std::string& content_type, |
192 const ResponseCode response_code) { | 198 const ResponseCode response_code) { |
193 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 199 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
200 DCHECK(StartsWithASCII(relative_path, "/", true)); | |
194 | 201 |
195 HttpResponse default_response; | 202 HttpResponse default_response; |
196 | 203 |
197 std::string content; | 204 std::string content; |
198 const bool success = file_util::ReadFileToString( | 205 const bool success = file_util::ReadFileToString( |
199 file_path, &content); | 206 file_path, &content); |
200 default_response.set_content(content); | 207 default_response.set_content(content); |
201 DCHECK(success) << "Failed to open the file: " << file_path.value(); | 208 DCHECK(success) << "Failed to open the file: " << file_path.value(); |
202 | 209 |
203 default_response.set_content_type(content_type); | 210 default_response.set_content_type(content_type); |
204 default_response.set_code(response_code); | 211 default_response.set_code(response_code); |
205 | 212 |
206 return RegisterDefaultResponse(relative_path, default_response); | 213 RegisterDefaultResponse(relative_path, default_response); |
207 } | 214 } |
208 | 215 |
209 void HttpServer::DidAccept(net::StreamListenSocket* server, | 216 void HttpServer::DidAccept(net::StreamListenSocket* server, |
210 net::StreamListenSocket* connection) { | 217 net::StreamListenSocket* connection) { |
211 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 218 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
212 | 219 |
213 HttpConnection* http_connection = new HttpConnection( | 220 HttpConnection* http_connection = new HttpConnection( |
214 connection, | 221 connection, |
215 base::Bind(&HttpServer::HandleRequest, weak_factory_.GetWeakPtr())); | 222 base::Bind(&HttpServer::HandleRequest, weak_factory_.GetWeakPtr())); |
216 connections_[connection] = http_connection; | 223 connections_[connection] = http_connection; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
248 std::map<net::StreamListenSocket*, HttpConnection*>::iterator it = | 255 std::map<net::StreamListenSocket*, HttpConnection*>::iterator it = |
249 connections_.find(socket); | 256 connections_.find(socket); |
250 if (it == connections_.end()) { | 257 if (it == connections_.end()) { |
251 return NULL; | 258 return NULL; |
252 } | 259 } |
253 return it->second; | 260 return it->second; |
254 } | 261 } |
255 | 262 |
256 } // namespace test_server | 263 } // namespace test_server |
257 } // namespace google_apis | 264 } // namespace google_apis |
OLD | NEW |