diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-20 13:40:20 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-22 12:41:23 +0000 |
commit | 7961cea6d1041e3e454dae6a1da660b453efd238 (patch) | |
tree | c0eeb4a9ff9ba32986289c1653d9608e53ccb444 /chromium/weblayer/browser/browser_main_parts_impl.cc | |
parent | b7034d0803538058e5c9d904ef03cf5eab34f6ef (diff) | |
download | qtwebengine-chromium-7961cea6d1041e3e454dae6a1da660b453efd238.tar.gz |
BASELINE: Update Chromium to 78.0.3904.130
Change-Id: If185e0c0061b3437531c97c9c8c78f239352a68b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/weblayer/browser/browser_main_parts_impl.cc')
-rw-r--r-- | chromium/weblayer/browser/browser_main_parts_impl.cc | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/chromium/weblayer/browser/browser_main_parts_impl.cc b/chromium/weblayer/browser/browser_main_parts_impl.cc new file mode 100644 index 00000000000..141e501b532 --- /dev/null +++ b/chromium/weblayer/browser/browser_main_parts_impl.cc @@ -0,0 +1,96 @@ +// Copyright 2019 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 "weblayer/browser/browser_main_parts_impl.h" + +#include "base/base_switches.h" +#include "base/bind.h" +#include "base/message_loop/message_loop_current.h" +#include "base/threading/thread.h" +#include "base/threading/thread_restrictions.h" +#include "build/build_config.h" +#include "cc/base/switches.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/devtools_agent_host.h" +#include "content/public/browser/render_process_host.h" +#include "content/public/browser/storage_partition.h" +#include "content/public/common/content_switches.h" +#include "content/public/common/main_function_params.h" +#include "content/public/common/url_constants.h" +#include "services/service_manager/embedder/result_codes.h" +#include "ui/base/material_design/material_design_controller.h" +#include "ui/base/resource/resource_bundle.h" +#include "weblayer/public/main.h" + +#if defined(OS_ANDROID) +#include "net/android/network_change_notifier_factory_android.h" +#include "net/base/network_change_notifier.h" +#endif + +#if defined(USE_X11) +#include "ui/base/x/x11_util.h" // nogncheck +#endif +#if defined(USE_AURA) && defined(USE_X11) +#include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck +#endif +#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX) +#include "ui/base/ime/init/input_method_initializer.h" +#endif + +namespace weblayer { + +namespace { + +void StopMessageLoop(base::OnceClosure quit_closure) { + for (auto it = content::RenderProcessHost::AllHostsIterator(); !it.IsAtEnd(); + it.Advance()) { + it.GetCurrentValue()->DisableKeepAliveRefCount(); + } + + std::move(quit_closure).Run(); +} + +} // namespace + +BrowserMainPartsImpl::BrowserMainPartsImpl( + MainParams* params, + const content::MainFunctionParams& main_function_params) + : params_(params) {} + +BrowserMainPartsImpl::~BrowserMainPartsImpl() = default; + +void BrowserMainPartsImpl::PreMainMessageLoopStart() { +#if defined(USE_AURA) && defined(USE_X11) + ui::TouchFactory::SetTouchDeviceListFromCommandLine(); +#endif +} + +int BrowserMainPartsImpl::PreEarlyInitialization() { +#if defined(USE_X11) + ui::SetDefaultX11ErrorHandlers(); +#endif +#if defined(USE_AURA) && defined(OS_LINUX) + ui::InitializeInputMethodForTesting(); +#endif +#if defined(OS_ANDROID) + net::NetworkChangeNotifier::SetFactory( + new net::NetworkChangeNotifierFactoryAndroid()); +#endif + return service_manager::RESULT_CODE_NORMAL_EXIT; +} + +void BrowserMainPartsImpl::PreMainMessageLoopRun() { + ui::MaterialDesignController::Initialize(); + params_->delegate->PreMainMessageLoopRun(); +} + +void BrowserMainPartsImpl::PreDefaultMainMessageLoopRun( + base::OnceClosure quit_closure) { + // Wrap the method that stops the message loop so we can do other shutdown + // cleanup inside content. + params_->delegate->SetMainMessageLoopQuitClosure( + base::BindOnce(StopMessageLoop, std::move(quit_closure))); +} + +} // namespace weblayer |