chrome_browser_main_android.cc revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/chrome_browser_main_android.h"
6
7#include "base/command_line.h"
8#include "base/debug/trace_event.h"
9#include "base/path_service.h"
10#include "cc/base/switches.h"
11#include "chrome/app/breakpad_linux.h"
12#include "chrome/browser/android/crash_dump_manager.h"
13#include "chrome/common/chrome_switches.h"
14#include "content/public/browser/android/compositor.h"
15#include "content/public/common/main_function_params.h"
16#include "net/android/network_change_notifier_factory_android.h"
17#include "net/base/network_change_notifier.h"
18#include "ui/base/resource/resource_bundle.h"
19#include "ui/base/ui_base_paths.h"
20
21ChromeBrowserMainPartsAndroid::ChromeBrowserMainPartsAndroid(
22    const content::MainFunctionParams& parameters)
23    : ChromeBrowserMainParts(parameters) {
24}
25
26ChromeBrowserMainPartsAndroid::~ChromeBrowserMainPartsAndroid() {
27}
28
29void ChromeBrowserMainPartsAndroid::PreProfileInit() {
30  TRACE_EVENT0("startup", "ChromeBrowserMainPartsAndroid::PreProfileInit")
31#if defined(USE_LINUX_BREAKPAD)
32#if defined(GOOGLE_CHROME_BUILD)
33  // TODO(jcivelli): we should not initialize the crash-reporter when it was not
34  // enabled. Right now if it is disabled we still generate the minidumps but we
35  // do not upload them.
36  bool breakpad_enabled = true;
37#else
38  bool breakpad_enabled = false;
39#endif
40
41  // Allow Breakpad to be enabled in Chromium builds for testing purposes.
42  if (!breakpad_enabled)
43    breakpad_enabled = CommandLine::ForCurrentProcess()->HasSwitch(
44          switches::kEnableCrashReporterForTesting);
45
46  if (breakpad_enabled) {
47    InitCrashReporter();
48    crash_dump_manager_.reset(new CrashDumpManager());
49  }
50#endif
51
52  ChromeBrowserMainParts::PreProfileInit();
53}
54
55void ChromeBrowserMainPartsAndroid::PreEarlyInitialization() {
56  TRACE_EVENT0("startup",
57    "ChromeBrowserMainPartsAndroid::PreEarlyInitialization")
58  net::NetworkChangeNotifier::SetFactory(
59      new net::NetworkChangeNotifierFactoryAndroid());
60
61  content::Compositor::Initialize();
62
63  // Chrome on Android does not use default MessageLoop. It has its own
64  // Android specific MessageLoop.
65  DCHECK(!main_message_loop_.get());
66
67  // Create and start the MessageLoop.
68  // This is a critical point in the startup process.
69  {
70    TRACE_EVENT0("startup",
71      "ChromeBrowserMainPartsAndroid::PreEarlyInitialization:CreateUiMsgLoop");
72    main_message_loop_.reset(new base::MessageLoop(base::MessageLoop::TYPE_UI));
73  }
74
75  {
76    TRACE_EVENT0("startup",
77      "ChromeBrowserMainPartsAndroid::PreEarlyInitialization:StartUiMsgLoop");
78    base::MessageLoopForUI::current()->Start();
79  }
80
81  CommandLine::ForCurrentProcess()->AppendSwitch(
82      cc::switches::kCompositeToMailbox);
83
84  ChromeBrowserMainParts::PreEarlyInitialization();
85}
86
87void ChromeBrowserMainPartsAndroid::ShowMissingLocaleMessageBox() {
88  NOTREACHED();
89}
90
91void RecordBreakpadStatusUMA(MetricsService* metrics) {
92  // TODO: crbug.com/139023
93  NOTIMPLEMENTED();
94}
95
96void WarnAboutMinimumSystemRequirements() {
97}
98