mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Fix SystemNetworkContextManager initialization timing (see issue #2622).
This commit is contained in:
@@ -27,7 +27,9 @@
|
|||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/task/post_task.h"
|
#include "base/task/post_task.h"
|
||||||
|
#include "chrome/browser/browser_process.h"
|
||||||
#include "chrome/browser/chrome_browser_main_extra_parts.h"
|
#include "chrome/browser/chrome_browser_main_extra_parts.h"
|
||||||
|
#include "chrome/browser/net/system_network_context_manager.h"
|
||||||
#include "chrome/browser/plugins/plugin_finder.h"
|
#include "chrome/browser/plugins/plugin_finder.h"
|
||||||
#include "content/public/browser/gpu_data_manager.h"
|
#include "content/public/browser/gpu_data_manager.h"
|
||||||
#include "extensions/browser/extension_system.h"
|
#include "extensions/browser/extension_system.h"
|
||||||
@@ -153,9 +155,13 @@ int CefBrowserMainParts::PreCreateThreads() {
|
|||||||
|
|
||||||
net::NetModule::SetResourceProvider(&NetResourceProvider);
|
net::NetModule::SetResourceProvider(&NetResourceProvider);
|
||||||
|
|
||||||
// Initialize the GpuDataManager before IO access restrictions are applied and
|
// Initialize these objects before IO access restrictions are applied and
|
||||||
// before the IO thread is started.
|
// before the IO thread is started.
|
||||||
content::GpuDataManager::GetInstance();
|
content::GpuDataManager::GetInstance();
|
||||||
|
if (net_service::IsEnabled()) {
|
||||||
|
SystemNetworkContextManager::CreateInstance(
|
||||||
|
g_browser_process->local_state());
|
||||||
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
|
for (size_t i = 0; i < chrome_extra_parts_.size(); ++i)
|
||||||
chrome_extra_parts_[i]->PreCreateThreads();
|
chrome_extra_parts_[i]->PreCreateThreads();
|
||||||
|
@@ -1290,15 +1290,8 @@ void CefContentBrowserClient::OnNetworkServiceCreated(
|
|||||||
PrefService* local_state = g_browser_process->local_state();
|
PrefService* local_state = g_browser_process->local_state();
|
||||||
DCHECK(local_state);
|
DCHECK(local_state);
|
||||||
|
|
||||||
if (!SystemNetworkContextManager::GetInstance()) {
|
|
||||||
// TODO(network): This triggers creation of ChromeBrowserPolicyConnector via
|
|
||||||
// ChromeBrowserProcessStub::policy_service() which loads some system DLLs
|
|
||||||
// on Windows. Determine the correct initialization timing to avoid the need
|
|
||||||
// for ScopedAllowIO here.
|
|
||||||
base::ThreadRestrictions::ScopedAllowIO allow_io;
|
|
||||||
SystemNetworkContextManager::CreateInstance(local_state);
|
|
||||||
}
|
|
||||||
// Need to set up global NetworkService state before anything else uses it.
|
// Need to set up global NetworkService state before anything else uses it.
|
||||||
|
DCHECK(SystemNetworkContextManager::GetInstance());
|
||||||
SystemNetworkContextManager::GetInstance()->OnNetworkServiceCreated(
|
SystemNetworkContextManager::GetInstance()->OnNetworkServiceCreated(
|
||||||
network_service);
|
network_service);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user