Chromium Code Reviews| 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 |