Index: content/browser/loader/navigation_url_loader_network_service.cc |
diff --git a/content/browser/loader/navigation_url_loader_network_service.cc b/content/browser/loader/navigation_url_loader_network_service.cc |
index b478bc68b5f1193c4f4845766fee62e387da7110..fc4fb7ebb44b3d03035eeaf15baa705b2ea4cc4b 100644 |
--- a/content/browser/loader/navigation_url_loader_network_service.cc |
+++ b/content/browser/loader/navigation_url_loader_network_service.cc |
@@ -30,9 +30,9 @@ |
namespace content { |
namespace { |
+ |
static base::LazyInstance<mojom::URLLoaderFactoryPtr>::Leaky |
g_url_loader_factory = LAZY_INSTANCE_INITIALIZER; |
-} |
// This function is called on the IO thread for POST/PUT requests for |
// attaching blob information to the request body. |
@@ -51,6 +51,8 @@ void HandleRequestsWithBody( |
url_loader, base::Passed(&request))); |
} |
+} // namespace |
+ |
NavigationURLLoaderNetworkService::NavigationURLLoaderNetworkService( |
ResourceContext* resource_context, |
StoragePartition* storage_partition, |
@@ -67,15 +69,6 @@ NavigationURLLoaderNetworkService::NavigationURLLoaderNetworkService( |
request_info->common_params.navigation_start, "FrameTreeNode id", |
request_info->frame_tree_node_id); |
- // TODO(scottmg): Maybe some of this setup should be done only once, instead |
- // of every time. |
- if (g_url_loader_factory.Get().get()) { |
- url_loader_factory_ = std::move(g_url_loader_factory.Get()); |
- } else { |
- ServiceManagerConnection::GetForProcess()->GetConnector()->BindInterface( |
- mojom::kNetworkServiceName, &url_loader_factory_); |
- } |
- |
// TODO(scottmg): Port over stuff from RDHI::BeginNavigationRequest() here. |
auto new_request = base::MakeUnique<ResourceRequest>(); |
@@ -206,10 +199,22 @@ void NavigationURLLoaderNetworkService::StartURLRequest( |
mojom::URLLoaderClientPtr url_loader_client_ptr_to_pass; |
binding_.Bind(&url_loader_client_ptr_to_pass); |
- url_loader_factory_->CreateLoaderAndStart( |
+ GetURLLoaderFactory().CreateLoaderAndStart( |
mojo::MakeRequest(&url_loader_associated_ptr_), 0 /* routing_id? */, |
0 /* request_id? */, mojom::kURLLoadOptionSendSSLInfo, *request, |
std::move(url_loader_client_ptr_to_pass)); |
} |
+mojom::URLLoaderFactory& |
+NavigationURLLoaderNetworkService::GetURLLoaderFactory() { |
+ // TODO(yzshen): We will need the ability to customize the factory per frame |
+ // e.g., for appcache or service worker. |
+ if (!g_url_loader_factory.Get()) { |
+ ServiceManagerConnection::GetForProcess()->GetConnector()->BindInterface( |
+ mojom::kNetworkServiceName, &g_url_loader_factory.Get()); |
+ } |
+ |
+ return *g_url_loader_factory.Get(); |
+} |
+ |
} // namespace content |