Index: chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitTaskRunner.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitTaskRunner.java b/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitTaskRunner.java |
deleted file mode 100644 |
index 4ad3136de67419162bb3d4829bf50359e985df02..0000000000000000000000000000000000000000 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/init/AsyncInitTaskRunner.java |
+++ /dev/null |
@@ -1,134 +0,0 @@ |
-// Copyright 2017 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.os.AsyncTask; |
- |
-import org.chromium.base.ContextUtils; |
-import org.chromium.base.ThreadUtils; |
-import org.chromium.base.VisibleForTesting; |
-import org.chromium.base.library_loader.LibraryLoader; |
-import org.chromium.base.library_loader.LibraryProcessType; |
-import org.chromium.base.library_loader.ProcessInitException; |
-import org.chromium.chrome.browser.ChromeVersionInfo; |
-import org.chromium.components.variations.firstrun.VariationsSeedFetcher; |
-import org.chromium.content.browser.ChildProcessLauncher; |
- |
-import java.util.concurrent.Executor; |
- |
-/** |
- * Runs asynchronous startup task that need to be run before the native side is |
- * started. Currently it runs two tasks: |
- * - Native library loading |
- * - Fetching the variations seed on first run |
- */ |
-public abstract class AsyncInitTaskRunner { |
- private boolean mFetchingVariations; |
- private boolean mLibraryLoaded; |
- |
- private LoadTask mLoadTask; |
- private FetchSeedTask mFetchSeedTask; |
- |
- @VisibleForTesting |
- boolean shouldFetchVariationsSeedDuringFirstRun() { |
- return ChromeVersionInfo.isOfficialBuild(); |
- } |
- |
- private class LoadTask extends AsyncTask<Boolean, Void, Boolean> { |
- @Override |
- protected Boolean doInBackground(Boolean... allocateChildConnection) { |
- try { |
- LibraryLoader libraryLoader = LibraryLoader.get(LibraryProcessType.PROCESS_BROWSER); |
- libraryLoader.ensureInitialized(); |
- // The prefetch is done after the library load for two reasons: |
- // - It is easier to know the library location after it has |
- // been loaded. |
- // - Testing has shown that this gives the best compromise, |
- // by avoiding performance regression on any tested |
- // device, and providing performance improvement on |
- // some. Doing it earlier delays UI inflation and more |
- // generally startup on some devices, most likely by |
- // competing for IO. |
- // For experimental results, see http://crbug.com/460438. |
- libraryLoader.asyncPrefetchLibrariesToMemory(); |
- } catch (ProcessInitException e) { |
- return false; |
- } |
- if (allocateChildConnection[0]) { |
- ChildProcessLauncher.warmUp(ContextUtils.getApplicationContext()); |
- } |
- return true; |
- } |
- |
- @Override |
- protected void onPostExecute(Boolean result) { |
- mLibraryLoaded = result; |
- tasksPossiblyComplete(mLibraryLoaded); |
- } |
- } |
- |
- private class FetchSeedTask extends AsyncTask<Void, Void, Void> { |
- @Override |
- protected Void doInBackground(Void... params) { |
- VariationsSeedFetcher.get().fetchSeed(); |
- return null; |
- } |
- |
- @Override |
- protected void onPostExecute(Void result) { |
- mFetchingVariations = false; |
- tasksPossiblyComplete(true); |
- } |
- } |
- |
- /** |
- * Starts the background tasks. |
- * @param allocateChildConnection Whether a spare child connection should be allocated. Set to |
- * false if you know that no new renderer is needed. |
- * @param fetchVariationSeed Whether to initialize the variations seed, if it hasn't been |
- * initialized in a previous run. |
- */ |
- public void startBackgroundTasks(boolean allocateChildConnection, boolean fetchVariationSeed) { |
- ThreadUtils.assertOnUiThread(); |
- assert mLoadTask == null; |
- if (fetchVariationSeed && shouldFetchVariationsSeedDuringFirstRun()) { |
- mFetchingVariations = true; |
- mFetchSeedTask = new FetchSeedTask(); |
- mFetchSeedTask.executeOnExecutor(getExecutor()); |
- } |
- |
- mLoadTask = new LoadTask(); |
- mLoadTask.executeOnExecutor(getExecutor(), allocateChildConnection); |
- } |
- |
- private void tasksPossiblyComplete(boolean result) { |
- ThreadUtils.assertOnUiThread(); |
- |
- if (!result) { |
- mLoadTask.cancel(true); |
- if (mFetchSeedTask != null) mFetchSeedTask.cancel(true); |
- onFailure(); |
- } |
- |
- if (mLibraryLoaded && !mFetchingVariations) { |
- onSuccess(); |
- } |
- } |
- |
- @VisibleForTesting |
- protected Executor getExecutor() { |
- return AsyncTask.THREAD_POOL_EXECUTOR; |
- } |
- |
- /** |
- * Handle successful completion of the Async initialization tasks. |
- */ |
- protected abstract void onSuccess(); |
- |
- /** |
- * Handle failed completion of the Async initialization tasks. |
- */ |
- protected abstract void onFailure(); |
-} |