Commit 82d2c332 authored by aurimas@chromium.org's avatar aurimas@chromium.org

Upstreaming ChromeBrowserMainAndroid

Upstreaming the chrome_browser_main_android and its immediate dependencies. This code is used to override the default chromium initialization with android specific initialization. Android uses custom MessageLoop.

BUG=138184
TEST=Compile unit_tests_apk target


Review URL: https://chromiumcodereview.appspot.com/10819003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150438 0039d316-1c4b-4281-b951-d872f2087c98
parent 4f78c628
...@@ -1392,6 +1392,12 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { ...@@ -1392,6 +1392,12 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() {
} }
bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) { bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) {
#if defined(OS_ANDROID)
// Chrome on Android does not use default MessageLoop. It has its own
// Android specific MessageLoop
NOTREACHED();
return true;
#else
// Set the result code set in PreMainMessageLoopRun or set above. // Set the result code set in PreMainMessageLoopRun or set above.
*result_code = result_code_; *result_code = result_code_;
if (!run_message_loop_) if (!run_message_loop_)
...@@ -1411,9 +1417,15 @@ bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) { ...@@ -1411,9 +1417,15 @@ bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) {
run_loop.Run(); run_loop.Run();
return true; return true;
#endif
} }
void ChromeBrowserMainParts::PostMainMessageLoopRun() { void ChromeBrowserMainParts::PostMainMessageLoopRun() {
#if defined(OS_ANDROID)
// Chrome on Android does not use default MessageLoop. It has its own
// Android specific MessageLoop
NOTREACHED();
#else
// Start watching for jank during shutdown. It gets disarmed when // Start watching for jank during shutdown. It gets disarmed when
// |shutdown_watcher_| object is destructed. // |shutdown_watcher_| object is destructed.
shutdown_watcher_->Arm(base::TimeDelta::FromSeconds(300)); shutdown_watcher_->Arm(base::TimeDelta::FromSeconds(300));
...@@ -1459,6 +1471,7 @@ void ChromeBrowserMainParts::PostMainMessageLoopRun() { ...@@ -1459,6 +1471,7 @@ void ChromeBrowserMainParts::PostMainMessageLoopRun() {
restart_last_session_ = browser_shutdown::ShutdownPreThreadsStop(); restart_last_session_ = browser_shutdown::ShutdownPreThreadsStop();
browser_process_->StartTearDown(); browser_process_->StartTearDown();
#endif
} }
void ChromeBrowserMainParts::PostDestroyThreads() { void ChromeBrowserMainParts::PostDestroyThreads() {
......
// Copyright (c) 2012 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 "chrome/browser/chrome_browser_main_android.h"
#include "base/android/jni_android.h"
#include "chrome/browser/android/chrome_jni_registrar.h"
#include "chrome/common/chrome_switches.h"
#include "content/public/common/main_function_params.h"
#include "net/android/network_change_notifier_factory.h"
#include "net/base/network_change_notifier.h"
ChromeBrowserMainPartsAndroid::ChromeBrowserMainPartsAndroid(
const content::MainFunctionParams& parameters)
: ChromeBrowserMainParts(parameters) {
}
ChromeBrowserMainPartsAndroid::~ChromeBrowserMainPartsAndroid() {
}
void ChromeBrowserMainPartsAndroid::PreEarlyInitialization() {
JNIEnv* env = base::android::AttachCurrentThread();
DCHECK(env);
chrome::android::RegisterJni(env);
net::NetworkChangeNotifier::SetFactory(
new net::android::NetworkChangeNotifierFactory());
// Chrome on Android does not use default MessageLoop. It has its own
// Android specific MessageLoop.
DCHECK(!main_message_loop_.get());
main_message_loop_.reset(new MessageLoop(MessageLoop::TYPE_UI));
MessageLoopForUI::current()->Start();
ChromeBrowserMainParts::PreEarlyInitialization();
}
void ChromeBrowserMainPartsAndroid::ShowMissingLocaleMessageBox() {
NOTREACHED();
}
void RecordBreakpadStatusUMA(MetricsService* metrics) {
// TODO: crbug.com/139023
NOTIMPLEMENTED();
}
void WarnAboutMinimumSystemRequirements() {
}
// Copyright (c) 2012 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.
#ifndef CHROME_BROWSER_CHROME_BROWSER_MAIN_ANDROID_H_
#define CHROME_BROWSER_CHROME_BROWSER_MAIN_ANDROID_H_
#include "chrome/browser/chrome_browser_main.h"
class ChromeBrowserMainPartsAndroid : public ChromeBrowserMainParts {
public:
explicit ChromeBrowserMainPartsAndroid(
const content::MainFunctionParams& parameters);
virtual ~ChromeBrowserMainPartsAndroid();
// content::BrowserMainParts overrides.
virtual void PreEarlyInitialization() OVERRIDE;
// ChromeBrowserMainParts overrides.
virtual void ShowMissingLocaleMessageBox() OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(ChromeBrowserMainPartsAndroid);
scoped_ptr<MessageLoop> main_message_loop_;
};
#endif // CHROME_BROWSER_CHROME_BROWSER_MAIN_ANDROID_H_
...@@ -22,10 +22,6 @@ ...@@ -22,10 +22,6 @@
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#if defined(OS_ANDROID)
#include <asm/page.h> // for PAGE_SIZE needed by PTHREAD_STACK_MIN
#endif
#if defined(TOOLKIT_GTK) #if defined(TOOLKIT_GTK)
#include "chrome/browser/ui/gtk/chrome_browser_main_extra_parts_gtk.h" #include "chrome/browser/ui/gtk/chrome_browser_main_extra_parts_gtk.h"
#include "chrome/browser/printing/print_dialog_gtk.h" #include "chrome/browser/printing/print_dialog_gtk.h"
...@@ -283,11 +279,6 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopStart() { ...@@ -283,11 +279,6 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopStart() {
void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() { void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() {
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
NOTREACHED(); // Should not ever happen on ChromeOS. NOTREACHED(); // Should not ever happen on ChromeOS.
#elif defined(OS_ANDROID)
// TODO(port) Update this as needed.
// Probably should not ever happen on Android, but at the time of this
// writing, Android isn't even using ChromeBrowserMainPartsPosix yet.
NOTREACHED();
#elif defined(OS_MACOSX) #elif defined(OS_MACOSX)
// Not called on Mac because we load the locale files differently. // Not called on Mac because we load the locale files differently.
NOTREACHED(); NOTREACHED();
......
...@@ -411,6 +411,8 @@ ...@@ -411,6 +411,8 @@
'browser/chrome_browser_field_trials.h', 'browser/chrome_browser_field_trials.h',
'browser/chrome_browser_main.cc', 'browser/chrome_browser_main.cc',
'browser/chrome_browser_main.h', 'browser/chrome_browser_main.h',
'browser/chrome_browser_main_android.cc',
'browser/chrome_browser_main_android.h',
'browser/chrome_browser_main_extra_parts.h', 'browser/chrome_browser_main_extra_parts.h',
'browser/chrome_browser_main_linux.cc', 'browser/chrome_browser_main_linux.cc',
'browser/chrome_browser_main_linux.h', 'browser/chrome_browser_main_linux.h',
...@@ -4996,6 +4998,10 @@ ...@@ -4996,6 +4998,10 @@
'browser/upgrade_detector.h', 'browser/upgrade_detector.h',
'browser/upgrade_detector_impl.cc', 'browser/upgrade_detector_impl.cc',
'browser/upgrade_detector_impl.h', 'browser/upgrade_detector_impl.h',
# Not used by Android
'browser/chrome_browser_main_posix.cc',
'browser/chrome_browser_main_posix.h',
], ],
'sources/': [ 'sources/': [
['exclude', '^browser/captive_portal/'], ['exclude', '^browser/captive_portal/'],
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment