summaryrefslogtreecommitdiff
path: root/chromium/weblayer/browser/browser_main_parts_impl.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-20 13:40:20 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-22 12:41:23 +0000
commit7961cea6d1041e3e454dae6a1da660b453efd238 (patch)
treec0eeb4a9ff9ba32986289c1653d9608e53ccb444 /chromium/weblayer/browser/browser_main_parts_impl.cc
parentb7034d0803538058e5c9d904ef03cf5eab34f6ef (diff)
downloadqtwebengine-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.cc96
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