Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Unified Diff: third_party/WebKit/Source/platform/testing/weburl_loader_mock_factory_impl.cc

Issue 2822453003: Wrap large IndexedDB values into Blobs before writing to LevelDB. (Closed)
Patch Set: Addressed last round of feedback. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/testing/weburl_loader_mock_factory_impl.cc
diff --git a/third_party/WebKit/Source/platform/testing/weburl_loader_mock_factory_impl.cc b/third_party/WebKit/Source/platform/testing/weburl_loader_mock_factory_impl.cc
index 0515114989500be691e6ad3478e0026a9a870784..bd120d6a3cd5d16fb542c2c528660b904831dc42 100644
--- a/third_party/WebKit/Source/platform/testing/weburl_loader_mock_factory_impl.cc
+++ b/third_party/WebKit/Source/platform/testing/weburl_loader_mock_factory_impl.cc
@@ -72,9 +72,37 @@ void WebURLLoaderMockFactoryImpl::UnregisterURL(const blink::WebURL& url) {
url_to_error_info_.erase(error_iter);
}
+void WebURLLoaderMockFactoryImpl::RegisterURLProtocol(
+ const WebString& protocol,
+ const WebURLResponse& response,
+ const WebString& file_path) {
+ DCHECK(protocol.ContainsOnlyASCII());
+
+ ResponseInfo response_info;
+ response_info.response = response;
+ if (!file_path.IsNull() && !file_path.IsEmpty()) {
+ response_info.file_path = blink::WebStringToFilePath(file_path);
+ DCHECK(base::PathExists(response_info.file_path))
+ << response_info.file_path.MaybeAsASCII() << " does not exist.";
+ }
+
+ DCHECK(protocol_to_response_info_.find(protocol) ==
+ protocol_to_response_info_.end());
+ protocol_to_response_info_.Set(protocol, response_info);
+}
+
+void WebURLLoaderMockFactoryImpl::UnregisterURLProtocol(
+ const WebString& protocol) {
+ ProtocolToResponseMap::iterator iter =
+ protocol_to_response_info_.find(protocol);
+ DCHECK(iter != protocol_to_response_info_.end());
+ protocol_to_response_info_.erase(iter);
+}
+
void WebURLLoaderMockFactoryImpl::UnregisterAllURLsAndClearMemoryCache() {
url_to_response_info_.clear();
url_to_error_info_.clear();
+ protocol_to_response_info_.clear();
GetMemoryCache()->EvictResources();
}
@@ -110,7 +138,9 @@ void WebURLLoaderMockFactoryImpl::ServeAsynchronousRequests() {
}
bool WebURLLoaderMockFactoryImpl::IsMockedURL(const blink::WebURL& url) {
- return url_to_response_info_.find(url) != url_to_response_info_.end();
+ WebURLError error;
+ ResponseInfo response_info;
+ return LookupURL(url, &error, &response_info);
}
void WebURLLoaderMockFactoryImpl::CancelLoad(WebURLLoaderMock* loader) {
@@ -145,25 +175,43 @@ void WebURLLoaderMockFactoryImpl::LoadRequest(const WebURLRequest& request,
WebURLResponse* response,
WebURLError* error,
WebData* data) {
- URLToErrorMap::const_iterator error_iter =
- url_to_error_info_.find(request.Url());
- if (error_iter != url_to_error_info_.end())
- *error = error_iter->value;
-
- URLToResponseMap::const_iterator iter =
- url_to_response_info_.find(request.Url());
- if (iter == url_to_response_info_.end()) {
+ ResponseInfo response_info;
+ if (!LookupURL(request.Url(), error, &response_info)) {
// Non mocked URLs should not have been passed to the default URLLoader.
NOTREACHED();
return;
}
- if (!error->reason && !ReadFile(iter->value.file_path, data)) {
+ if (!error->reason && !ReadFile(response_info.file_path, data)) {
NOTREACHED();
return;
}
- *response = iter->value.response;
+ *response = response_info.response;
+}
+
+bool WebURLLoaderMockFactoryImpl::LookupURL(const WebURL& url,
+ WebURLError* error,
+ ResponseInfo* response_info) {
+ URLToErrorMap::const_iterator error_iter = url_to_error_info_.find(url);
+ if (error_iter != url_to_error_info_.end())
+ *error = error_iter->value;
+
+ URLToResponseMap::const_iterator iter = url_to_response_info_.find(url);
+ if (iter != url_to_response_info_.end()) {
+ *response_info = iter->value;
+ return true;
+ }
+
+ for (const auto& key_value_pair : protocol_to_response_info_) {
+ String protocol = key_value_pair.key;
+ if (url.ProtocolIs(protocol.Ascii().data())) {
+ *response_info = key_value_pair.value;
+ return true;
+ }
+ }
+
+ return false;
}
// static

Powered by Google App Engine
This is Rietveld 408576698