Index: headless/public/util/in_memory_protocol_handler.cc |
diff --git a/headless/public/util/in_memory_protocol_handler.cc b/headless/public/util/in_memory_protocol_handler.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..27c076551db15abf0e13f64bd06bdaa376dde1b7 |
--- /dev/null |
+++ b/headless/public/util/in_memory_protocol_handler.cc |
@@ -0,0 +1,37 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "headless/public/util/in_memory_protocol_handler.h" |
+ |
+#include "headless/public/util/in_memory_request_job.h" |
+ |
+namespace headless { |
+ |
+InMemoryProtocolHandler::InMemoryProtocolHandler() {} |
+InMemoryProtocolHandler::~InMemoryProtocolHandler() {} |
+ |
+net::URLRequestJob* InMemoryProtocolHandler::MaybeCreateJob( |
+ net::URLRequest* request, |
+ net::NetworkDelegate* network_delegate) const { |
+ return new InMemoryRequestJob(request, network_delegate, |
+ GetResponse(request->url().GetContent())); |
+} |
+ |
+void InMemoryProtocolHandler::InsertResponse(const std::string& request_path, |
+ const Response& response) { |
+ // GURL::GetContent excludes the scheme and : but includes the // prefix. As a |
+ // convenience we add it here. |
+ response_map_["//" + request_path] = response; |
+} |
+ |
+const InMemoryProtocolHandler::Response* InMemoryProtocolHandler::GetResponse( |
+ const std::string& request_path) const { |
+ std::map<std::string, Response>::const_iterator find_it = |
+ response_map_.find(request_path); |
+ if (find_it == response_map_.end()) |
+ return nullptr; |
+ return &find_it->second; |
+} |
+ |
+} // namespace headless |