[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 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 | |||||
[email protected] | 82174aa | 2013-01-22 21:53:43 | [diff] [blame] | 7 | #include "base/command_line.h" |
[email protected] | aa328c7 | 2013-05-03 10:55:43 | [diff] [blame] | 8 | #include "base/debug/trace_event.h" |
[email protected] | eb65008 | 2012-11-29 12:05:16 | [diff] [blame] | 9 | #include "base/path_service.h" |
kkimlabs | 948ce92d | 2014-09-09 09:06:42 | [diff] [blame] | 10 | #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h" |
[email protected] | cfcec9c4 | 2014-06-20 22:32:03 | [diff] [blame] | 11 | #include "chrome/browser/google/google_search_counter_android.h" |
kkimlabs | 948ce92d | 2014-09-09 09:06:42 | [diff] [blame] | 12 | #include "chrome/browser/signin/signin_manager_factory.h" |
[email protected] | d9250fa7 | 2013-10-20 05:26:14 | [diff] [blame] | 13 | #include "chrome/common/chrome_paths.h" |
[email protected] | 82174aa | 2013-01-22 21:53:43 | [diff] [blame] | 14 | #include "chrome/common/chrome_switches.h" |
Robert Sesek | abcd810 | 2014-08-27 16:12:44 | [diff] [blame] | 15 | #include "components/crash/app/breakpad_linux.h" |
16 | #include "components/crash/browser/crash_dump_manager_android.h" | ||||
kkimlabs | 948ce92d | 2014-09-09 09:06:42 | [diff] [blame] | 17 | #include "components/signin/core/browser/signin_manager.h" |
[email protected] | 3d97926 | 2012-11-27 20:18:40 | [diff] [blame] | 18 | #include "content/public/browser/android/compositor.h" |
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 19 | #include "content/public/common/main_function_params.h" |
[email protected] | ab3309da | 2012-09-20 02:27:14 | [diff] [blame] | 20 | #include "net/android/network_change_notifier_factory_android.h" |
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 21 | #include "net/base/network_change_notifier.h" |
[email protected] | eb65008 | 2012-11-29 12:05:16 | [diff] [blame] | 22 | #include "ui/base/ui_base_paths.h" |
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 23 | |
24 | ChromeBrowserMainPartsAndroid::ChromeBrowserMainPartsAndroid( | ||||
25 | const content::MainFunctionParams& parameters) | ||||
26 | : ChromeBrowserMainParts(parameters) { | ||||
27 | } | ||||
28 | |||||
29 | ChromeBrowserMainPartsAndroid::~ChromeBrowserMainPartsAndroid() { | ||||
30 | } | ||||
31 | |||||
[email protected] | 40da3e0c | 2012-10-24 22:03:38 | [diff] [blame] | 32 | void ChromeBrowserMainPartsAndroid::PreProfileInit() { |
[email protected] | aa328c7 | 2013-05-03 10:55:43 | [diff] [blame] | 33 | TRACE_EVENT0("startup", "ChromeBrowserMainPartsAndroid::PreProfileInit") |
[email protected] | ce4367d | 2013-01-15 16:13:10 | [diff] [blame] | 34 | #if defined(GOOGLE_CHROME_BUILD) |
[email protected] | 40da3e0c | 2012-10-24 22:03:38 | [diff] [blame] | 35 | // TODO(jcivelli): we should not initialize the crash-reporter when it was not |
36 | // enabled. Right now if it is disabled we still generate the minidumps but we | ||||
37 | // do not upload them. | ||||
[email protected] | ce4367d | 2013-01-15 16:13:10 | [diff] [blame] | 38 | bool breakpad_enabled = true; |
39 | #else | ||||
40 | bool breakpad_enabled = false; | ||||
41 | #endif | ||||
[email protected] | 82174aa | 2013-01-22 21:53:43 | [diff] [blame] | 42 | |
[email protected] | ce4367d | 2013-01-15 16:13:10 | [diff] [blame] | 43 | // Allow Breakpad to be enabled in Chromium builds for testing purposes. |
44 | if (!breakpad_enabled) | ||||
[email protected] | 82174aa | 2013-01-22 21:53:43 | [diff] [blame] | 45 | breakpad_enabled = CommandLine::ForCurrentProcess()->HasSwitch( |
46 | switches::kEnableCrashReporterForTesting); | ||||
[email protected] | ce4367d | 2013-01-15 16:13:10 | [diff] [blame] | 47 | |
[email protected] | 49373c9 | 2013-01-16 09:02:52 | [diff] [blame] | 48 | if (breakpad_enabled) { |
[email protected] | d9250fa7 | 2013-10-20 05:26:14 | [diff] [blame] | 49 | base::FilePath crash_dump_dir; |
50 | PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dump_dir); | ||||
[email protected] | 0b818f7 | 2013-10-22 00:11:03 | [diff] [blame] | 51 | crash_dump_manager_.reset(new breakpad::CrashDumpManager(crash_dump_dir)); |
[email protected] | 49373c9 | 2013-01-16 09:02:52 | [diff] [blame] | 52 | } |
[email protected] | 40da3e0c | 2012-10-24 22:03:38 | [diff] [blame] | 53 | |
54 | ChromeBrowserMainParts::PreProfileInit(); | ||||
55 | } | ||||
56 | |||||
[email protected] | cfcec9c4 | 2014-06-20 22:32:03 | [diff] [blame] | 57 | void ChromeBrowserMainPartsAndroid::PostProfileInit() { |
kkimlabs | 948ce92d | 2014-09-09 09:06:42 | [diff] [blame] | 58 | Profile* main_profile = profile(); |
59 | search_counter_.reset(new GoogleSearchCounterAndroid(main_profile)); | ||||
60 | InitBookmarksExperimentState(main_profile); | ||||
61 | |||||
[email protected] | cfcec9c4 | 2014-06-20 22:32:03 | [diff] [blame] | 62 | ChromeBrowserMainParts::PostProfileInit(); |
63 | } | ||||
64 | |||||
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 65 | void ChromeBrowserMainPartsAndroid::PreEarlyInitialization() { |
[email protected] | aa328c7 | 2013-05-03 10:55:43 | [diff] [blame] | 66 | TRACE_EVENT0("startup", |
67 | "ChromeBrowserMainPartsAndroid::PreEarlyInitialization") | ||||
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 68 | net::NetworkChangeNotifier::SetFactory( |
[email protected] | ab3309da | 2012-09-20 02:27:14 | [diff] [blame] | 69 | new net::NetworkChangeNotifierFactoryAndroid()); |
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 70 | |
[email protected] | 3d97926 | 2012-11-27 20:18:40 | [diff] [blame] | 71 | content::Compositor::Initialize(); |
72 | |||||
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 73 | // Chrome on Android does not use default MessageLoop. It has its own |
74 | // Android specific MessageLoop. | ||||
75 | DCHECK(!main_message_loop_.get()); | ||||
[email protected] | aa328c7 | 2013-05-03 10:55:43 | [diff] [blame] | 76 | |
77 | // Create and start the MessageLoop. | ||||
78 | // This is a critical point in the startup process. | ||||
79 | { | ||||
80 | TRACE_EVENT0("startup", | ||||
81 | "ChromeBrowserMainPartsAndroid::PreEarlyInitialization:CreateUiMsgLoop"); | ||||
[email protected] | 166f2ed | 2013-12-19 19:34:00 | [diff] [blame] | 82 | main_message_loop_.reset(new base::MessageLoopForUI); |
[email protected] | aa328c7 | 2013-05-03 10:55:43 | [diff] [blame] | 83 | } |
84 | |||||
85 | { | ||||
86 | TRACE_EVENT0("startup", | ||||
87 | "ChromeBrowserMainPartsAndroid::PreEarlyInitialization:StartUiMsgLoop"); | ||||
[email protected] | b3a2509 | 2013-05-28 22:08:16 | [diff] [blame] | 88 | base::MessageLoopForUI::current()->Start(); |
[email protected] | aa328c7 | 2013-05-03 10:55:43 | [diff] [blame] | 89 | } |
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 90 | |
91 | ChromeBrowserMainParts::PreEarlyInitialization(); | ||||
92 | } | ||||
93 | |||||
[email protected] | 82d2c33 | 2012-08-07 22:46:31 | [diff] [blame] | 94 | void ChromeBrowserMainPartsAndroid::ShowMissingLocaleMessageBox() { |
95 | NOTREACHED(); | ||||
96 | } |