| 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 /* case_sensitive */)) |
| 156 << relative_url; |
| 157 return base_url_.Resolve(relative_url); |
| 158 } |
| 159 |
| 153 void HttpServer::RegisterRequestHandler( | 160 void HttpServer::RegisterRequestHandler( |
| 154 const HandleRequestCallback& callback) { | 161 const HandleRequestCallback& callback) { |
| 155 request_handlers_.push_back(callback); | 162 request_handlers_.push_back(callback); |
| 156 } | 163 } |
| 157 | 164 |
| 158 GURL HttpServer::RegisterDefaultResponse( | 165 void HttpServer::RegisterDefaultResponse( |
| 159 const std::string& relative_path, | 166 const std::string& relative_path, |
| 160 const HttpResponse& default_response) { | 167 const HttpResponse& default_response) { |
| 161 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 168 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 169 DCHECK(StartsWithASCII(relative_path, "/", true /* case_sensitive */)) |
| 170 << relative_path; |
| 162 | 171 |
| 163 GURL request_url = base_url_.Resolve(relative_path); | 172 GURL request_url = base_url_.Resolve(relative_path); |
| 164 const HandleRequestCallback callback = | 173 const HandleRequestCallback callback = |
| 165 base::Bind(&HandleDefaultRequest, | 174 base::Bind(&HandleDefaultRequest, |
| 166 request_url, | 175 request_url, |
| 167 default_response); | 176 default_response); |
| 168 request_handlers_.push_back(callback); | 177 request_handlers_.push_back(callback); |
| 169 | |
| 170 return request_url; | |
| 171 } | 178 } |
| 172 | 179 |
| 173 GURL HttpServer::RegisterTextResponse( | 180 void HttpServer::RegisterTextResponse( |
| 174 const std::string& relative_path, | 181 const std::string& relative_path, |
| 175 const std::string& content, | 182 const std::string& content, |
| 176 const std::string& content_type, | 183 const std::string& content_type, |
| 177 const ResponseCode response_code) { | 184 const ResponseCode response_code) { |
| 178 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 185 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 186 DCHECK(StartsWithASCII(relative_path, "/", true /* case_sensitive */)) |
| 187 << relative_path; |
| 179 | 188 |
| 180 HttpResponse default_response; | 189 HttpResponse default_response; |
| 181 default_response.set_content(content); | 190 default_response.set_content(content); |
| 182 default_response.set_content_type(content_type); | 191 default_response.set_content_type(content_type); |
| 183 default_response.set_code(response_code); | 192 default_response.set_code(response_code); |
| 184 | 193 |
| 185 return RegisterDefaultResponse(relative_path, default_response); | 194 RegisterDefaultResponse(relative_path, default_response); |
| 186 } | 195 } |
| 187 | 196 |
| 188 GURL HttpServer::RegisterFileResponse( | 197 void HttpServer::RegisterFileResponse( |
| 189 const std::string& relative_path, | 198 const std::string& relative_path, |
| 190 const FilePath& file_path, | 199 const FilePath& file_path, |
| 191 const std::string& content_type, | 200 const std::string& content_type, |
| 192 const ResponseCode response_code) { | 201 const ResponseCode response_code) { |
| 193 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 202 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 203 DCHECK(StartsWithASCII(relative_path, "/", true /* case_sensitive */)) |
| 204 << relative_path; |
| 194 | 205 |
| 195 HttpResponse default_response; | 206 HttpResponse default_response; |
| 196 | 207 |
| 197 std::string content; | 208 std::string content; |
| 198 const bool success = file_util::ReadFileToString( | 209 const bool success = file_util::ReadFileToString( |
| 199 file_path, &content); | 210 file_path, &content); |
| 200 default_response.set_content(content); | 211 default_response.set_content(content); |
| 201 DCHECK(success) << "Failed to open the file: " << file_path.value(); | 212 DCHECK(success) << "Failed to open the file: " << file_path.value(); |
| 202 | 213 |
| 203 default_response.set_content_type(content_type); | 214 default_response.set_content_type(content_type); |
| 204 default_response.set_code(response_code); | 215 default_response.set_code(response_code); |
| 205 | 216 |
| 206 return RegisterDefaultResponse(relative_path, default_response); | 217 RegisterDefaultResponse(relative_path, default_response); |
| 207 } | 218 } |
| 208 | 219 |
| 209 void HttpServer::DidAccept(net::StreamListenSocket* server, | 220 void HttpServer::DidAccept(net::StreamListenSocket* server, |
| 210 net::StreamListenSocket* connection) { | 221 net::StreamListenSocket* connection) { |
| 211 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 222 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 212 | 223 |
| 213 HttpConnection* http_connection = new HttpConnection( | 224 HttpConnection* http_connection = new HttpConnection( |
| 214 connection, | 225 connection, |
| 215 base::Bind(&HttpServer::HandleRequest, weak_factory_.GetWeakPtr())); | 226 base::Bind(&HttpServer::HandleRequest, weak_factory_.GetWeakPtr())); |
| 216 connections_[connection] = http_connection; | 227 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 = | 259 std::map<net::StreamListenSocket*, HttpConnection*>::iterator it = |
| 249 connections_.find(socket); | 260 connections_.find(socket); |
| 250 if (it == connections_.end()) { | 261 if (it == connections_.end()) { |
| 251 return NULL; | 262 return NULL; |
| 252 } | 263 } |
| 253 return it->second; | 264 return it->second; |
| 254 } | 265 } |
| 255 | 266 |
| 256 } // namespace test_server | 267 } // namespace test_server |
| 257 } // namespace google_apis | 268 } // namespace google_apis |
| OLD | NEW |