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

Unified Diff: chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java

Issue 1141283003: Upstream oodles of Chrome for Android code into Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: final patch? Created 5 years, 7 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_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..35a4ae71deae168eb02634826c4b1ab8c1b58e68
--- /dev/null
+++ b/chrome/android/java_staging/src/org/chromium/chrome/browser/DeferredStartupHandler.java
@@ -0,0 +1,121 @@
+// Copyright 2015 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;
+
+import android.os.AsyncTask;
+
+import org.chromium.base.PowerMonitor;
+import org.chromium.base.ThreadUtils;
+import org.chromium.base.TraceEvent;
+import org.chromium.base.VisibleForTesting;
+import org.chromium.chrome.browser.bookmarkswidget.BookmarkThumbnailWidgetProviderBase;
+import org.chromium.chrome.browser.crash.CrashFileManager;
+import org.chromium.chrome.browser.crash.MinidumpUploadService;
+import org.chromium.chrome.browser.download.DownloadManagerService;
+import org.chromium.chrome.browser.media.MediaNotificationService;
+import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
+import org.chromium.chrome.browser.precache.PrecacheLauncher;
+import org.chromium.chrome.browser.preferences.ChromePreferenceManager;
+import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager;
+import org.chromium.chrome.browser.share.ShareHelper;
+import org.chromium.chrome.browser.signin.AccountManagementFragmentDelegateImpl;
+
+/**
+ * Handler for application level tasks to be completed on deferred startup.
+ */
+public class DeferredStartupHandler {
+ private static DeferredStartupHandler sDeferredStartupHandler;
+ private boolean mDeferredStartupComplete;
+
+ /**
+ * This class is an application specific object that handles the deferred startup.
+ * @return The singleton instance of {@link DeferredStartupHandler}.
+ */
+ public static DeferredStartupHandler getInstance() {
+ if (sDeferredStartupHandler == null) {
+ sDeferredStartupHandler = new DeferredStartupHandler();
+ }
+ return sDeferredStartupHandler;
+ }
+
+ private DeferredStartupHandler() { }
+
+ /**
+ * Handle application level deferred startup tasks that can be lazily done after all
+ * the necessary initialization has been completed. Any calls requiring network access should
+ * probably go here.
+ * @param application The application object to use for context.
+ * @param crashDumpUploadingDisabled Whether crash dump uploading should be disabled.
+ */
+ public void onDeferredStartup(final ChromeMobileApplication application,
+ final boolean crashDumpUploadingDisabled) {
+ if (mDeferredStartupComplete) return;
+ ThreadUtils.assertOnUiThread();
+
+ // Punt all tasks that may block the UI thread off onto a background thread.
+ new AsyncTask<Void, Void, Void>() {
+ @Override
+ protected Void doInBackground(Void... params) {
+ try {
+ TraceEvent.begin("ChromeBrowserInitializer.onDeferredStartup.doInBackground");
+ if (crashDumpUploadingDisabled) {
+ PrivacyPreferencesManager.getInstance(application).disableCrashUploading();
+ } else {
+ MinidumpUploadService.tryUploadAllCrashDumps(application);
+ }
+ CrashFileManager crashFileManager =
+ new CrashFileManager(application.getCacheDir());
+ crashFileManager.cleanOutAllNonFreshMinidumpFiles();
+
+ MinidumpUploadService.storeBreakpadUploadAttemptsInUma(
+ ChromePreferenceManager.getInstance(application));
+
+ // Force a widget refresh in order to wake up any possible zombie widgets.
+ // This is needed to ensure the right behavior when the process is suddenly
+ // killed.
+ BookmarkThumbnailWidgetProviderBase.refreshAllWidgets(application);
+
+ // Initialize whether or not precaching is enabled.
+ PrecacheLauncher.updatePrecachingEnabled(
+ PrivacyPreferencesManager.getInstance(application), application);
+
+ return null;
+ } finally {
+ TraceEvent.end("ChromeBrowserInitializer.onDeferredStartup.doInBackground");
+ }
+ }
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+
+ // TODO(aruslan): http://b/6397072 This will be moved elsewhere
+ PartnerBookmarksShim.kickOffReading(application);
+
+ PowerMonitor.create(application);
+
+ // Starts syncing with GSA.
+ application.createGsaHelper().startSync();
+
+ DownloadManagerService.getDownloadManagerService(application)
+ .clearPendingDownloadNotifications();
+
+ AccountManagementFragmentDelegateImpl.registerAccountManagementFragmentDelegate();
+
+ application.initializeSharedClasses();
+
+ ShareHelper.clearSharedScreenshots(application);
+
+ // Clear any media notifications that existed when Chrome was last killed.
+ MediaNotificationService.clearMediaNotifications(application);
+
+ mDeferredStartupComplete = true;
+ }
+
+ /**
+ * @return Whether deferred startup has been completed.
+ */
+ @VisibleForTesting
+ public boolean isDeferredStartupComplete() {
+ return mDeferredStartupComplete;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698