Chromium Code Reviews| Index: chrome/browser/net/system_network_context_manager.cc |
| diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..394cd10c71cecd469c6e30570f0aa60f8745f4c6 |
| --- /dev/null |
| +++ b/chrome/browser/net/system_network_context_manager.cc |
| @@ -0,0 +1,71 @@ |
| +// Copyright 2017 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 "chrome/browser/net/system_network_context_manager.h" |
| + |
| +#include "base/feature_list.h" |
| +#include "base/logging.h" |
| +#include "content/public/browser/browser_thread.h" |
| +#include "content/public/browser/network_service_instance.h" |
| +#include "content/public/common/content_features.h" |
| +#include "content/public/common/service_names.mojom.h" |
| +#include "mojo/public/cpp/bindings/associated_interface_ptr.h" |
| + |
| +namespace { |
| + |
| +content::mojom::NetworkContextParamsPtr CreateNetworkContextParams() { |
| + // TODO(mmenke): Set up parameters here (No cache, in memory cookie store, |
| + // etc). |
| + return content::mojom::NetworkContextParams::New(); |
| +} |
| + |
| +} // namespace |
| + |
| +base::LazyInstance<SystemNetworkContextManager>::Leaky |
| + g_system_network_context_manager = LAZY_INSTANCE_INITIALIZER; |
| + |
| +content::mojom::NetworkContext* SystemNetworkContextManager::Context() { |
| + return GetInstance()->GetContext(); |
| +} |
| + |
| +void SystemNetworkContextManager::SetUp( |
| + content::mojom::NetworkContextRequest* network_context_request, |
| + content::mojom::NetworkContextParamsPtr* network_context_params) { |
| + if (base::FeatureList::IsEnabled(features::kNetworkService)) { |
| + DCHECK(!GetInstance()->io_thread_network_context_); |
| + *network_context_request = |
| + mojo::MakeRequest(&GetInstance()->io_thread_network_context_); |
| + } else { |
| + DCHECK(!GetInstance()->system_network_context_); |
| + *network_context_request = |
| + mojo::MakeRequest(&GetInstance()->system_network_context_); |
| + } |
| + *network_context_params = CreateNetworkContextParams(); |
| +} |
| + |
| +SystemNetworkContextManager* SystemNetworkContextManager::GetInstance() { |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| + return g_system_network_context_manager.Pointer(); |
| +} |
| + |
| +SystemNetworkContextManager::SystemNetworkContextManager() {} |
| + |
| +SystemNetworkContextManager::~SystemNetworkContextManager() {} |
| + |
| +content::mojom::NetworkContext* SystemNetworkContextManager::GetContext() { |
| + if (!system_network_context_) { |
| + // Initialize() should already have been called, and set the |
|
kinuko
2017/07/10 08:10:33
ditto
mmenke
2017/07/10 15:52:21
Done.
|
| + // |system_network_context| if the OOP NetworkService is disabled. |
|
kinuko
2017/07/10 08:10:33
system_network_context_
mmenke
2017/07/10 15:52:22
Done.
|
| + DCHECK(base::FeatureList::IsEnabled(features::kNetworkService)); |
| + |
| + content::mojom::NetworkContextParamsPtr context_params = |
| + content::mojom::NetworkContextParams::New(); |
| + content::mojom::NetworkContextRequest system_network_context_request = |
| + mojo::MakeRequest(&GetInstance()->system_network_context_); |
| + content::GetNetworkService()->CreateNetworkContext( |
| + MakeRequest(&system_network_context_), CreateNetworkContextParams()); |
| + } |
| + |
| + return system_network_context_.get(); |
| +} |