Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2931)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java

Issue 2329813002: Revert of Extract browser shared class initialization from ChromeApplication. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
deleted file mode 100644
index a8e29abae58639bc3763efa8bf4032e475a4c155..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java
+++ /dev/null
@@ -1,226 +0,0 @@
-// Copyright 2016 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.
-
-package org.chromium.chrome.browser.init;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.view.View;
-
-import com.google.ipc.invalidation.external.client.android.service.AndroidLogger;
-
-import org.chromium.base.CommandLine;
-import org.chromium.base.ContextUtils;
-import org.chromium.base.Log;
-import org.chromium.base.ThreadUtils;
-import org.chromium.chrome.browser.ChromeApplication;
-import org.chromium.chrome.browser.DeferredStartupHandler;
-import org.chromium.chrome.browser.DevToolsServer;
-import org.chromium.chrome.browser.download.DownloadController;
-import org.chromium.chrome.browser.download.DownloadManagerService;
-import org.chromium.chrome.browser.firstrun.ForcedSigninProcessor;
-import org.chromium.chrome.browser.identity.UniqueIdentificationGeneratorFactory;
-import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator;
-import org.chromium.chrome.browser.invalidation.UniqueIdInvalidationClientNameGenerator;
-import org.chromium.chrome.browser.multiwindow.MultiWindowUtils;
-import org.chromium.chrome.browser.rlz.RevenueStats;
-import org.chromium.chrome.browser.services.AccountsChangedReceiver;
-import org.chromium.chrome.browser.services.GoogleServicesManager;
-import org.chromium.chrome.browser.sync.SyncController;
-import org.chromium.components.sync.signin.AccountManagerHelper;
-import org.chromium.content.common.ContentSwitches;
-import org.chromium.ui.UiUtils;
-
-/**
- * Handles the initialization dependences of the browser process. This is meant to handle the
- * initialization that is not tied to any particular Activity, and the logic that should only be
- * triggered a single time for the lifetime of the browser process.
- */
-public class ProcessInitializationHandler {
-
- private static final String SESSIONS_UUID_PREF_KEY = "chromium.sync.sessions.id";
- private static final String DEV_TOOLS_SERVER_SOCKET_PREFIX = "chrome";
-
- private static Class<? extends ProcessInitializationHandler> sHandlerClassOverride;
- private static ProcessInitializationHandler sInstance;
-
- private boolean mInitializedPreNative;
- private boolean mInitializedDeferredStartupTasks;
- private DevToolsServer mDevToolsServer;
-
- /**
- * Overrides the type of ProcessInitializationHandler to be created.
- * <p>
- * This must be called before {@link #getInstance()} is triggered.
- *
- * @param classOverride The ProcessInitializationHandler class type to be created instead of
- * the default.
- */
- public static void setProcessInitializationHandlerType(
- Class<? extends ProcessInitializationHandler> classOverride) {
- if (sInstance != null) {
- throw new IllegalStateException("Browser delegate override set after initialized");
- }
- sHandlerClassOverride = classOverride;
- }
-
- /**
- * @return The ProcessInitializationHandler for use during the lifetime of the browser process.
- */
- public static ProcessInitializationHandler getInstance() {
- ThreadUtils.assertOnUiThread();
- if (sInstance == null) {
- if (sHandlerClassOverride != null) {
- try {
- sInstance = sHandlerClassOverride.newInstance();
- } catch (InstantiationException | IllegalAccessException e) {
- assert false : "Unable to instantiate ProcessInitializationHandler override.";
- }
- }
- if (sInstance == null) sInstance = new ProcessInitializationHandler();
- }
- return sInstance;
- }
-
- /**
- * Constructor exposed to allow overriding.
- */
- protected ProcessInitializationHandler() {}
-
- /**
- * Initializes the any dependencies that must occur before native library has been loaded.
- * <p>
- * Adding anything expensive to this must be avoided as it would delay the Chrome startup path.
- * <p>
- * All entry points that do not rely on {@link ChromeBrowserInitializer} must call this on
- * startup.
- */
- public final void initializePreNative() {
- ThreadUtils.assertOnUiThread();
- if (mInitializedPreNative) return;
- mInitializedPreNative = true;
- handlePreNativeInitialization();
- }
-
- /**
- * Performs the shared class initialization.
- */
- protected void handlePreNativeInitialization() {
- ChromeApplication application = (ChromeApplication) ContextUtils.getApplicationContext();
-
- UiUtils.setKeyboardShowingDelegate(new UiUtils.KeyboardShowingDelegate() {
- @Override
- public boolean disableKeyboardCheck(Context context, View view) {
- Activity activity = null;
- if (context instanceof Activity) {
- activity = (Activity) context;
- } else if (view != null && view.getContext() instanceof Activity) {
- activity = (Activity) view.getContext();
- }
-
- // For multiwindow mode we do not track keyboard visibility.
- return activity != null
- && MultiWindowUtils.getInstance().isLegacyMultiWindow(activity);
- }
- });
-
- // Initialize the AccountManagerHelper with the correct AccountManagerDelegate. Must be done
- // only once and before AccountMangerHelper.get(...) is called to avoid using the
- // default AccountManagerDelegate.
- AccountManagerHelper.initializeAccountManagerHelper(
- application, application.createAccountManagerDelegate());
-
- // Set the unique identification generator for invalidations. The
- // invalidations system can start and attempt to fetch the client ID
- // very early. We need this generator to be ready before that happens.
- UniqueIdInvalidationClientNameGenerator.doInitializeAndInstallGenerator(application);
-
- // Set minimum Tango log level. This sets an in-memory static field, and needs to be
- // set in the ApplicationContext instead of an activity, since Tango can be woken up
- // by the system directly though messages from GCM.
- AndroidLogger.setMinimumAndroidLogLevel(Log.WARN);
-
- // Set up the identification generator for sync. The ID is actually generated
- // in the SyncController constructor.
- UniqueIdentificationGeneratorFactory.registerGenerator(SyncController.GENERATOR_ID,
- new UuidBasedUniqueIdentificationGenerator(
- application, SESSIONS_UUID_PREF_KEY), false);
- }
-
- /**
- * Initializes the deferred startup tasks that should only be triggered once per browser process
- * lifetime.
- */
- public final void initializeDeferredStartupTasks() {
- ThreadUtils.assertOnUiThread();
- if (mInitializedDeferredStartupTasks) return;
- mInitializedDeferredStartupTasks = true;
- handleDeferredStartupTasksInitialization();
- }
-
- /**
- * Performs the deferred startup task initialization.
- */
- protected void handleDeferredStartupTasksInitialization() {
- final ChromeApplication application =
- (ChromeApplication) ContextUtils.getApplicationContext();
-
- DeferredStartupHandler.getInstance().addDeferredTask(new Runnable() {
- @Override
- public void run() {
- ForcedSigninProcessor.start(application);
- AccountsChangedReceiver.addObserver(
- new AccountsChangedReceiver.AccountsChangedObserver() {
- @Override
- public void onAccountsChanged(Context context, Intent intent) {
- ThreadUtils.runOnUiThread(new Runnable() {
- @Override
- public void run() {
- ForcedSigninProcessor.start(application);
- }
- });
- }
- });
- }
- });
-
- DeferredStartupHandler.getInstance().addDeferredTask(new Runnable() {
- @Override
- public void run() {
- GoogleServicesManager.get(application).onMainActivityStart();
- RevenueStats.getInstance();
- }
- });
-
- DeferredStartupHandler.getInstance().addDeferredTask(new Runnable() {
- @Override
- public void run() {
- mDevToolsServer = new DevToolsServer(DEV_TOOLS_SERVER_SOCKET_PREFIX);
- mDevToolsServer.setRemoteDebuggingEnabled(
- true, DevToolsServer.Security.ALLOW_DEBUG_PERMISSION);
-
- startApplicationActivityTracker();
- }
- });
-
- DeferredStartupHandler.getInstance().addDeferredTask(new Runnable() {
- @Override
- public void run() {
- // Add process check to diagnose http://crbug.com/606309. Remove this after the bug
- // is fixed.
- assert !CommandLine.getInstance().hasSwitch(ContentSwitches.SWITCH_PROCESS_TYPE);
- if (!CommandLine.getInstance().hasSwitch(ContentSwitches.SWITCH_PROCESS_TYPE)) {
- DownloadController.setDownloadNotificationService(
- DownloadManagerService.getDownloadManagerService(application));
- }
- }
- });
- }
-
- /**
- * Initializes activity logging.
- */
- protected void startApplicationActivityTracker() {}
-}

Powered by Google App Engine
This is Rietveld 408576698