Index: net/test/embedded_test_server/embedded_test_server.cc |
diff --git a/net/test/embedded_test_server/embedded_test_server.cc b/net/test/embedded_test_server/embedded_test_server.cc |
index ac7d3bc14ac74f56b31f3ab83f5c7511f8cf6fb9..49f7c0a21dad9ee888a3f49e79ca0de8fe28b854 100644 |
--- a/net/test/embedded_test_server/embedded_test_server.cc |
+++ b/net/test/embedded_test_server/embedded_test_server.cc |
@@ -42,9 +42,9 @@ class CustomHttpResponse : public HttpResponse { |
DISALLOW_COPY_AND_ASSIGN(CustomHttpResponse); |
}; |
-// Handles |request| by serving a file from under |server_root|. |
+// Handles |request| by serving a file from under |server_roots|. |
scoped_ptr<HttpResponse> HandleFileRequest( |
- const base::FilePath& server_root, |
+ const std::vector<base::FilePath>& server_roots, |
const HttpRequest& request) { |
// This is a test-only server. Ignore I/O thread restrictions. |
base::ThreadRestrictions::ScopedAllowIO allow_io; |
@@ -64,28 +64,31 @@ scoped_ptr<HttpResponse> HandleFileRequest( |
if (query_pos != std::string::npos) |
request_path = request_path.substr(0, query_pos); |
- base::FilePath file_path(server_root.AppendASCII(request_path)); |
- std::string file_contents; |
- if (!base::ReadFileToString(file_path, &file_contents)) |
- return scoped_ptr<HttpResponse>(); |
+ for (const auto& server_root : server_roots) { |
+ base::FilePath file_path(server_root.AppendASCII(request_path)); |
+ std::string file_contents; |
+ if (!base::ReadFileToString(file_path, &file_contents)) |
+ continue; |
- base::FilePath headers_path( |
- file_path.AddExtension(FILE_PATH_LITERAL("mock-http-headers"))); |
+ base::FilePath headers_path( |
+ file_path.AddExtension(FILE_PATH_LITERAL("mock-http-headers"))); |
- if (base::PathExists(headers_path)) { |
- std::string headers_contents; |
- if (!base::ReadFileToString(headers_path, &headers_contents)) |
- return scoped_ptr<HttpResponse>(); |
+ if (base::PathExists(headers_path)) { |
+ std::string headers_contents; |
+ if (!base::ReadFileToString(headers_path, &headers_contents)) |
+ return scoped_ptr<HttpResponse>(); |
- scoped_ptr<CustomHttpResponse> http_response( |
- new CustomHttpResponse(headers_contents, file_contents)); |
+ scoped_ptr<CustomHttpResponse> http_response( |
+ new CustomHttpResponse(headers_contents, file_contents)); |
+ return http_response.Pass(); |
+ } |
+ |
+ scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); |
+ http_response->set_code(HTTP_OK); |
+ http_response->set_content(file_contents); |
return http_response.Pass(); |
} |
- |
- scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); |
- http_response->set_code(HTTP_OK); |
- http_response->set_content(file_contents); |
- return http_response.Pass(); |
+ return scoped_ptr<HttpResponse>(); |
} |
} // namespace |
@@ -276,7 +279,14 @@ GURL EmbeddedTestServer::GetURL( |
void EmbeddedTestServer::ServeFilesFromDirectory( |
const base::FilePath& directory) { |
- RegisterRequestHandler(base::Bind(&HandleFileRequest, directory)); |
+ std::vector<base::FilePath> directories; |
+ directories.push_back(directory); |
+ RegisterRequestHandler(base::Bind(&HandleFileRequest, directories)); |
+} |
+ |
+void EmbeddedTestServer::ServeFilesFromDirectories( |
+ const std::vector<base::FilePath>& directories) { |
+ RegisterRequestHandler(base::Bind(&HandleFileRequest, directories)); |
} |
void EmbeddedTestServer::RegisterRequestHandler( |