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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/ChromeApplication.java

Issue 1521013002: Make the ChromeBrowserInitializer the only way to start the browser process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: yfriedman@ comment Created 5 years 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/ChromeBrowserProvider.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser; 5 package org.chromium.chrome.browser;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.content.Context; 8 import android.content.Context;
9 import android.content.Intent; 9 import android.content.Intent;
10 import android.content.SharedPreferences; 10 import android.content.SharedPreferences;
(...skipping 15 matching lines...) Expand all
26 import org.chromium.base.ApplicationStatus.ApplicationStateListener; 26 import org.chromium.base.ApplicationStatus.ApplicationStateListener;
27 import org.chromium.base.BuildInfo; 27 import org.chromium.base.BuildInfo;
28 import org.chromium.base.CommandLineInitUtil; 28 import org.chromium.base.CommandLineInitUtil;
29 import org.chromium.base.PathUtils; 29 import org.chromium.base.PathUtils;
30 import org.chromium.base.ResourceExtractor; 30 import org.chromium.base.ResourceExtractor;
31 import org.chromium.base.ThreadUtils; 31 import org.chromium.base.ThreadUtils;
32 import org.chromium.base.TraceEvent; 32 import org.chromium.base.TraceEvent;
33 import org.chromium.base.VisibleForTesting; 33 import org.chromium.base.VisibleForTesting;
34 import org.chromium.base.annotations.CalledByNative; 34 import org.chromium.base.annotations.CalledByNative;
35 import org.chromium.base.annotations.SuppressFBWarnings; 35 import org.chromium.base.annotations.SuppressFBWarnings;
36 import org.chromium.base.library_loader.LibraryLoader;
37 import org.chromium.base.library_loader.LibraryProcessType;
38 import org.chromium.base.library_loader.ProcessInitException; 36 import org.chromium.base.library_loader.ProcessInitException;
39 import org.chromium.base.metrics.RecordHistogram; 37 import org.chromium.base.metrics.RecordHistogram;
40 import org.chromium.chrome.R; 38 import org.chromium.chrome.R;
41 import org.chromium.chrome.browser.accessibility.FontSizePrefs; 39 import org.chromium.chrome.browser.accessibility.FontSizePrefs;
42 import org.chromium.chrome.browser.banners.AppBannerManager; 40 import org.chromium.chrome.browser.banners.AppBannerManager;
43 import org.chromium.chrome.browser.banners.AppDetailsDelegate; 41 import org.chromium.chrome.browser.banners.AppDetailsDelegate;
44 import org.chromium.chrome.browser.customtabs.CustomTabsConnection; 42 import org.chromium.chrome.browser.customtabs.CustomTabsConnection;
45 import org.chromium.chrome.browser.datausage.ExternalDataUseObserver; 43 import org.chromium.chrome.browser.datausage.ExternalDataUseObserver;
46 import org.chromium.chrome.browser.document.DocumentActivity; 44 import org.chromium.chrome.browser.document.DocumentActivity;
47 import org.chromium.chrome.browser.document.IncognitoDocumentActivity; 45 import org.chromium.chrome.browser.document.IncognitoDocumentActivity;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 import org.chromium.chrome.browser.sync.SyncController; 84 import org.chromium.chrome.browser.sync.SyncController;
87 import org.chromium.chrome.browser.tab.AuthenticatorNavigationInterceptor; 85 import org.chromium.chrome.browser.tab.AuthenticatorNavigationInterceptor;
88 import org.chromium.chrome.browser.tab.Tab; 86 import org.chromium.chrome.browser.tab.Tab;
89 import org.chromium.chrome.browser.tabmodel.TabModelSelector; 87 import org.chromium.chrome.browser.tabmodel.TabModelSelector;
90 import org.chromium.chrome.browser.tabmodel.document.ActivityDelegateImpl; 88 import org.chromium.chrome.browser.tabmodel.document.ActivityDelegateImpl;
91 import org.chromium.chrome.browser.tabmodel.document.DocumentTabModelSelector; 89 import org.chromium.chrome.browser.tabmodel.document.DocumentTabModelSelector;
92 import org.chromium.chrome.browser.tabmodel.document.StorageDelegate; 90 import org.chromium.chrome.browser.tabmodel.document.StorageDelegate;
93 import org.chromium.chrome.browser.tabmodel.document.TabDelegate; 91 import org.chromium.chrome.browser.tabmodel.document.TabDelegate;
94 import org.chromium.chrome.browser.util.FeatureUtilities; 92 import org.chromium.chrome.browser.util.FeatureUtilities;
95 import org.chromium.content.app.ContentApplication; 93 import org.chromium.content.app.ContentApplication;
96 import org.chromium.content.browser.BrowserStartupController;
97 import org.chromium.content.browser.ChildProcessLauncher; 94 import org.chromium.content.browser.ChildProcessLauncher;
98 import org.chromium.content.browser.ContentViewStatics; 95 import org.chromium.content.browser.ContentViewStatics;
99 import org.chromium.content.browser.DownloadController; 96 import org.chromium.content.browser.DownloadController;
100 import org.chromium.policy.AppRestrictionsProvider; 97 import org.chromium.policy.AppRestrictionsProvider;
101 import org.chromium.policy.CombinedPolicyProvider; 98 import org.chromium.policy.CombinedPolicyProvider;
102 import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener; 99 import org.chromium.policy.CombinedPolicyProvider.PolicyChangeListener;
103 import org.chromium.printing.PrintingController; 100 import org.chromium.printing.PrintingController;
104 import org.chromium.sync.signin.AccountManagerDelegate; 101 import org.chromium.sync.signin.AccountManagerDelegate;
105 import org.chromium.sync.signin.AccountManagerHelper; 102 import org.chromium.sync.signin.AccountManagerHelper;
106 import org.chromium.sync.signin.SystemAccountManagerDelegate; 103 import org.chromium.sync.signin.SystemAccountManagerDelegate;
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 480
484 PrefServiceBridge.getInstance().migratePreferences(this); 481 PrefServiceBridge.getInstance().migratePreferences(this);
485 } 482 }
486 483
487 @Override 484 @Override
488 public void initCommandLine() { 485 public void initCommandLine() {
489 CommandLineInitUtil.initCommandLine(this, COMMAND_LINE_FILE); 486 CommandLineInitUtil.initCommandLine(this, COMMAND_LINE_FILE);
490 } 487 }
491 488
492 /** 489 /**
493 * Start the browser process asynchronously. This will set up a queue of UI
494 * thread tasks to initialize the browser process.
495 *
496 * Note that this can only be called on the UI thread.
497 *
498 * @param callback the callback to be called when browser startup is complet e.
499 * @throws ProcessInitException
500 */
501 public void startChromeBrowserProcessesAsync(BrowserStartupController.Startu pCallback callback)
502 throws ProcessInitException {
503 assert ThreadUtils.runningOnUiThread() : "Tried to start the browser on the wrong thread";
504 // The policies are used by browser startup, so we need to register the policy providers
505 // before starting the browser process.
506 registerPolicyProviders(CombinedPolicyProvider.get());
507 Context applicationContext = getApplicationContext();
508 BrowserStartupController.get(applicationContext, LibraryProcessType.PROC ESS_BROWSER)
509 .startBrowserProcessesAsync(callback);
510 }
511
512 /**
513 * Loads native Libraries synchronously and starts Chrome browser processes.
514 * Must be called on the main thread. Makes sure the process is initialized as a
515 * Browser process instead of a ContentView process.
516 *
517 * @param initGoogleServicesManager when true the GoogleServicesManager is i nitialized.
518 */
519 public void startBrowserProcessesAndLoadLibrariesSync(boolean initGoogleServ icesManager)
520 throws ProcessInitException {
521 ThreadUtils.assertOnUiThread();
522 initCommandLine();
523 Context context = getApplicationContext();
524 LibraryLoader libraryLoader = LibraryLoader.get(LibraryProcessType.PROCE SS_BROWSER);
525 libraryLoader.ensureInitialized(context);
526 libraryLoader.asyncPrefetchLibrariesToMemory();
527 // The policies are used by browser startup, so we need to register the policy providers
528 // before starting the browser process.
529 registerPolicyProviders(CombinedPolicyProvider.get());
530 BrowserStartupController.get(context, LibraryProcessType.PROCESS_BROWSER )
531 .startBrowserProcessesSync(false);
532 if (initGoogleServicesManager) {
533 GoogleServicesManager.get(getApplicationContext());
534 }
535 }
536
537 /**
538 * Shows an error dialog following a startup error, and then exits the appli cation. 490 * Shows an error dialog following a startup error, and then exits the appli cation.
539 * @param e The exception reported by Chrome initialization. 491 * @param e The exception reported by Chrome initialization.
540 */ 492 */
541 public static void reportStartupErrorAndExit(final ProcessInitException e) { 493 public static void reportStartupErrorAndExit(final ProcessInitException e) {
542 Activity activity = ApplicationStatus.getLastTrackedFocusedActivity(); 494 Activity activity = ApplicationStatus.getLastTrackedFocusedActivity();
543 if (ApplicationStatus.getStateForActivity(activity) == ActivityState.DES TROYED) { 495 if (ApplicationStatus.getStateForActivity(activity) == ActivityState.DES TROYED) {
544 return; 496 return;
545 } 497 }
546 InvalidStartupDialog.show(activity, e.getErrorCode()); 498 InvalidStartupDialog.show(activity, e.getErrorCode());
547 } 499 }
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 public GSAHelper createGsaHelper() { 682 public GSAHelper createGsaHelper() {
731 return new GSAHelper(); 683 return new GSAHelper();
732 } 684 }
733 685
734 /** 686 /**
735 * Registers various policy providers with the policy manager. 687 * Registers various policy providers with the policy manager.
736 * Providers are registered in increasing order of precedence so overrides s hould call this 688 * Providers are registered in increasing order of precedence so overrides s hould call this
737 * method in the end for this method to maintain the highest precedence. 689 * method in the end for this method to maintain the highest precedence.
738 * @param combinedProvider The {@link CombinedPolicyProvider} to register th e providers with. 690 * @param combinedProvider The {@link CombinedPolicyProvider} to register th e providers with.
739 */ 691 */
740 protected void registerPolicyProviders(CombinedPolicyProvider combinedProvid er) { 692 public void registerPolicyProviders(CombinedPolicyProvider combinedProvider) {
741 combinedProvider.registerProvider(new AppRestrictionsProvider(getApplica tionContext())); 693 combinedProvider.registerProvider(new AppRestrictionsProvider(getApplica tionContext()));
742 } 694 }
743 695
744 /** 696 /**
745 * Add a listener to be notified upon policy changes. 697 * Add a listener to be notified upon policy changes.
746 */ 698 */
747 public void addPolicyChangeListener(PolicyChangeListener listener) { 699 public void addPolicyChangeListener(PolicyChangeListener listener) {
748 CombinedPolicyProvider.get().addPolicyChangeListener(listener); 700 CombinedPolicyProvider.get().addPolicyChangeListener(listener);
749 } 701 }
750 702
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 */ 862 */
911 private void updatePasswordEchoState() { 863 private void updatePasswordEchoState() {
912 boolean systemEnabled = Settings.System.getInt( 864 boolean systemEnabled = Settings.System.getInt(
913 getApplicationContext().getContentResolver(), 865 getApplicationContext().getContentResolver(),
914 Settings.System.TEXT_SHOW_PASSWORD, 1) == 1; 866 Settings.System.TEXT_SHOW_PASSWORD, 1) == 1;
915 if (PrefServiceBridge.getInstance().getPasswordEchoEnabled() == systemEn abled) return; 867 if (PrefServiceBridge.getInstance().getPasswordEchoEnabled() == systemEn abled) return;
916 868
917 PrefServiceBridge.getInstance().setPasswordEchoEnabled(systemEnabled); 869 PrefServiceBridge.getInstance().setPasswordEchoEnabled(systemEnabled);
918 } 870 }
919 } 871 }
OLDNEW
« no previous file with comments | « no previous file | chrome/android/java/src/org/chromium/chrome/browser/ChromeBrowserProvider.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698