OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "content/browser/loader/navigation_url_loader_network_service.h" | 5 #include "content/browser/loader/navigation_url_loader_network_service.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 mojom::URLLoaderFactory* factory; | 100 mojom::URLLoaderFactory* factory; |
101 if (url_loader_factory_ptr) { | 101 if (url_loader_factory_ptr) { |
102 factory = url_loader_factory_ptr.get(); | 102 factory = url_loader_factory_ptr.get(); |
103 } else { | 103 } else { |
104 if (factory_from_ui.is_valid()) { | 104 if (factory_from_ui.is_valid()) { |
105 url_loader_factory_ptr.Bind(std::move(factory_from_ui)); | 105 url_loader_factory_ptr.Bind(std::move(factory_from_ui)); |
106 factory = url_loader_factory_ptr.get(); | 106 factory = url_loader_factory_ptr.get(); |
107 } else { | 107 } else { |
108 if (appcache_handle_core) { | 108 if (appcache_handle_core) { |
109 factory = url_loader_factory_getter->GetAppCacheFactory()->get(); | 109 factory = url_loader_factory_getter->GetAppCacheFactory()->get(); |
| 110 } else if (resource_request->url.SchemeIs(url::kBlobScheme)) { |
| 111 factory = url_loader_factory_getter->GetBlobFactory()->get(); |
110 } else { | 112 } else { |
111 factory = url_loader_factory_getter->GetNetworkFactory()->get(); | 113 factory = url_loader_factory_getter->GetNetworkFactory()->get(); |
112 } | 114 } |
113 } | 115 } |
114 } | 116 } |
115 | 117 |
116 factory->CreateLoaderAndStart( | 118 factory->CreateLoaderAndStart( |
117 std::move(url_loader_request), 0 /* routing_id? */, 0 /* request_id? */, | 119 std::move(url_loader_request), 0 /* routing_id? */, 0 /* request_id? */, |
118 mojom::kURLLoadOptionSendSSLInfo, *resource_request, | 120 mojom::kURLLoadOptionSendSSLInfo, *resource_request, |
119 std::move(url_loader_client_to_pass)); | 121 std::move(url_loader_client_to_pass)); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 binding_.Bind(mojo::MakeRequest(&url_loader_client_ptr_to_pass)); | 177 binding_.Bind(mojo::MakeRequest(&url_loader_client_ptr_to_pass)); |
176 | 178 |
177 // Check if a web UI scheme wants to handle this request. | 179 // Check if a web UI scheme wants to handle this request. |
178 mojom::URLLoaderFactoryPtrInfo factory_ptr_info; | 180 mojom::URLLoaderFactoryPtrInfo factory_ptr_info; |
179 | 181 |
180 const auto& schemes = URLDataManagerBackend::GetWebUISchemes(); | 182 const auto& schemes = URLDataManagerBackend::GetWebUISchemes(); |
181 if (std::find(schemes.begin(), schemes.end(), new_request->url.scheme()) != | 183 if (std::find(schemes.begin(), schemes.end(), new_request->url.scheme()) != |
182 schemes.end()) { | 184 schemes.end()) { |
183 FrameTreeNode* frame_tree_node = | 185 FrameTreeNode* frame_tree_node = |
184 FrameTreeNode::GloballyFindByID(request_info_->frame_tree_node_id); | 186 FrameTreeNode::GloballyFindByID(request_info_->frame_tree_node_id); |
185 factory_ptr_info = GetWebUIURLLoader(frame_tree_node).PassInterface(); | 187 factory_ptr_info = CreateWebUIURLLoader(frame_tree_node).PassInterface(); |
186 } | 188 } |
187 | 189 |
188 g_next_request_id--; | 190 g_next_request_id--; |
189 | 191 |
190 BrowserThread::PostTask( | 192 BrowserThread::PostTask( |
191 BrowserThread::IO, FROM_HERE, | 193 BrowserThread::IO, FROM_HERE, |
192 base::Bind(&PrepareNavigationStartOnIO, | 194 base::Bind(&PrepareNavigationStartOnIO, |
193 base::Passed(std::move(new_request)), resource_context, | 195 base::Passed(std::move(new_request)), resource_context, |
194 service_worker_navigation_handle | 196 service_worker_navigation_handle |
195 ? service_worker_navigation_handle->core() | 197 ? service_worker_navigation_handle->core() |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 TRACE_EVENT_ASYNC_END2("navigation", "Navigation timeToResponseStarted", | 277 TRACE_EVENT_ASYNC_END2("navigation", "Navigation timeToResponseStarted", |
276 this, "&NavigationURLLoaderNetworkService", this, | 278 this, "&NavigationURLLoaderNetworkService", this, |
277 "success", false); | 279 "success", false); |
278 | 280 |
279 delegate_->OnRequestFailed(completion_status.exists_in_cache, | 281 delegate_->OnRequestFailed(completion_status.exists_in_cache, |
280 completion_status.error_code); | 282 completion_status.error_code); |
281 } | 283 } |
282 } | 284 } |
283 | 285 |
284 } // namespace content | 286 } // namespace content |
OLD | NEW |