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() {
}
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.
*result_code = result_code_;
if (!run_message_loop_)
......@@ -1411,9 +1417,15 @@ bool ChromeBrowserMainParts::MainMessageLoopRun(int* result_code) {
run_loop.Run();
return true;
#endif
}
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
// |shutdown_watcher_| object is destructed.
shutdown_watcher_->Arm(base::TimeDelta::FromSeconds(300));
......@@ -1459,6 +1471,7 @@ void ChromeBrowserMainParts::PostMainMessageLoopRun() {
restart_last_session_ = browser_shutdown::ShutdownPreThreadsStop();
browser_process_->StartTearDown();
#endif
}
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 @@
#include "chrome/common/chrome_switches.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)
#include "chrome/browser/ui/gtk/chrome_browser_main_extra_parts_gtk.h"
#include "chrome/browser/printing/print_dialog_gtk.h"
......@@ -283,11 +279,6 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopStart() {
void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() {
#if defined(OS_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)
// Not called on Mac because we load the locale files differently.
NOTREACHED();
......
......@@ -411,6 +411,8 @@
'browser/chrome_browser_field_trials.h',
'browser/chrome_browser_main.cc',
'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_linux.cc',
'browser/chrome_browser_main_linux.h',
......@@ -4996,6 +4998,10 @@
'browser/upgrade_detector.h',
'browser/upgrade_detector_impl.cc',
'browser/upgrade_detector_impl.h',
# Not used by Android
'browser/chrome_browser_main_posix.cc',
'browser/chrome_browser_main_posix.h',
],
'sources/': [
['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