Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java |
| index c27abfc27322015806994fedb0e175f22f46ec60..5898c5a52a80d022d3a8d34803bfcd064bf775c4 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java |
| @@ -5,7 +5,6 @@ |
| package org.chromium.chrome.browser; |
| import android.content.Context; |
| -import android.os.Bundle; |
| import com.google.android.gms.gcm.GcmNetworkManager; |
| import com.google.android.gms.gcm.GcmTaskService; |
| @@ -15,48 +14,29 @@ import org.chromium.base.Log; |
| import org.chromium.base.ThreadUtils; |
| import org.chromium.base.VisibleForTesting; |
| import org.chromium.base.annotations.SuppressFBWarnings; |
| -import org.chromium.base.library_loader.LibraryProcessType; |
| import org.chromium.base.library_loader.ProcessInitException; |
| import org.chromium.chrome.browser.download.DownloadResumptionScheduler; |
| import org.chromium.chrome.browser.init.ChromeBrowserInitializer; |
| import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge; |
| import org.chromium.chrome.browser.ntp.snippets.SnippetsLauncher; |
| -import org.chromium.chrome.browser.offlinepages.BackgroundOfflinerTask; |
| import org.chromium.chrome.browser.offlinepages.BackgroundScheduler; |
| -import org.chromium.chrome.browser.offlinepages.BackgroundSchedulerProcessorImpl; |
| import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; |
| import org.chromium.chrome.browser.precache.PrecacheController; |
| import org.chromium.chrome.browser.precache.PrecacheUMA; |
| -import org.chromium.content.browser.BrowserStartupController; |
| /** |
| * {@link ChromeBackgroundService} is scheduled through the {@link GcmNetworkManager} when the |
| * browser needs to be launched for scheduled tasks, or in response to changing network or power |
| * conditions. |
| - * |
| - * If HOLD_WAKELOCK is set to true in a bundle in the task params, then the ChromeBackgroundService |
|
Pete Williamson
2017/05/24 21:41:02
How come we don't need a wakelock anymore? (and w
fgorski
2017/05/24 23:10:12
Offline pages was the only code that used it and c
|
| - * will wait until the task reports done before returning control to the {@link GcmNetworkManager}. |
| - * This both guarantees that the wakelock keeps chrome awake and that the GcmNetworkManager does not |
| - * start another task in place of the one just started. The GcmNetworkManager can start more than |
| - * one task concurrently, thought, so it does not guarantee that a different task won't start. |
| */ |
| public class ChromeBackgroundService extends GcmTaskService { |
| private static final String TAG = "BackgroundService"; |
| - /** Bundle key to use to specify we should block the GcmNetworkManager thread until the task on |
| - * the UI thread is done before returning to the GcmNetworkManager. |
| - */ |
| - public static final String HOLD_WAKELOCK = "HoldWakelock"; |
| - // GCM will return our wakelock after 3 minutes, we should be a second less than that. |
| - private static final int WAKELOCK_TIMEOUT_SECONDS = 3 * 60 - 1; |
| - |
| - private BackgroundOfflinerTask mBackgroundOfflinerTask; |
| @Override |
| @VisibleForTesting |
| public int onRunTask(final TaskParams params) { |
| final String taskTag = params.getTag(); |
| Log.i(TAG, "[" + taskTag + "] Woken up at " + new java.util.Date().toString()); |
| - final ChromeBackgroundServiceWaiter waiter = getWaiterIfNeeded(params.getExtras()); |
| final Context context = this; |
| ThreadUtils.runOnUiThread(new Runnable() { |
| @Override |
| @@ -67,8 +47,10 @@ public class ChromeBackgroundService extends GcmTaskService { |
| break; |
| case OfflinePageUtils.TASK_TAG: |
| - handleOfflinePageBackgroundLoad( |
| - context, params.getExtras(), waiter, taskTag); |
| + // Offline pages are migrating to BackgroundTaskScheduler, therefor getting |
|
Pete Williamson
2017/05/24 21:41:02
nit: therefor -> therefore
fgorski
2017/05/24 23:10:12
Done.
|
| + // a task through ChromeBackgroundSerivce should cause a rescheduling using |
| + // the new component. |
| + rescheduleOfflinePages(); |
| break; |
| case SnippetsLauncher.TASK_TAG_WIFI: |
| @@ -92,8 +74,6 @@ public class ChromeBackgroundService extends GcmTaskService { |
| } |
| } |
| }); |
| - // If needed, block the GcmNetworkManager thread until the UI thread has finished its work. |
| - waitForTaskIfNeeded(waiter); |
| return GcmNetworkManager.RESULT_SUCCESS; |
| } |
| @@ -144,46 +124,6 @@ public class ChromeBackgroundService extends GcmTaskService { |
| PrecacheController.get(context).precache(tag); |
| } |
| - private void handleOfflinePageBackgroundLoad( |
| - Context context, Bundle bundle, ChromeBackgroundServiceWaiter waiter, String tag) { |
| - if (!BrowserStartupController.get(LibraryProcessType.PROCESS_BROWSER) |
| - .isStartupSuccessfullyCompleted()) { |
| - launchBrowser(context, tag); |
| - } |
| - |
| - // Call BackgroundTask, provide context. |
| - if (mBackgroundOfflinerTask == null) { |
| - mBackgroundOfflinerTask = |
| - new BackgroundOfflinerTask(new BackgroundSchedulerProcessorImpl()); |
| - } |
| - mBackgroundOfflinerTask.startBackgroundRequests(context, bundle, waiter); |
| - } |
| - |
| - /** |
| - * If the bundle contains the special HOLD_WAKELOCK key set to true, then we create a |
| - * CountDownLatch for use later in the wait step, and set its initial count to one. |
| - */ |
| - @VisibleForTesting |
| - public ChromeBackgroundServiceWaiter getWaiterIfNeeded(Bundle bundle) { |
| - // If wait_needed is set to true, wait. |
| - if (bundle != null && bundle.getBoolean(HOLD_WAKELOCK, false)) { |
| - return new ChromeBackgroundServiceWaiter(WAKELOCK_TIMEOUT_SECONDS); |
| - } |
| - return null; |
| - } |
| - |
| - /** |
| - * Some tasks need to block the GcmNetworkManager thread (and thus hold the wake lock) until the |
| - * task is done. If we have a waiter, then start waiting. |
| - */ |
| - @VisibleForTesting |
| - public void waitForTaskIfNeeded(ChromeBackgroundServiceWaiter waiter) { |
| - if (waiter != null) { |
| - // Block current thread until the onWaitDone method is called, or a timeout occurs. |
| - waiter.startWaiting(); |
| - } |
| - } |
| - |
| @VisibleForTesting |
| @SuppressFBWarnings("DM_EXIT") |
| protected void launchBrowser(Context context, String tag) { |
| @@ -227,8 +167,9 @@ public class ChromeBackgroundService extends GcmTaskService { |
| } |
| } |
| - protected void rescheduleOfflinePagesTasksOnUpgrade() { |
| - BackgroundScheduler.getInstance(this).rescheduleOfflinePagesTasksOnUpgrade(); |
| + /** Reschedules offline pages (using appropriate version of Background Task Scheduler). */ |
| + protected void rescheduleOfflinePages() { |
| + BackgroundScheduler.getInstance().reschedule(); |
| } |
| @Override |
| @@ -236,6 +177,5 @@ public class ChromeBackgroundService extends GcmTaskService { |
| rescheduleBackgroundSyncTasksOnUpgrade(); |
| reschedulePrecacheTasksOnUpgrade(); |
| rescheduleSnippetsTasksOnUpgrade(); |
| - rescheduleOfflinePagesTasksOnUpgrade(); |
| } |
| } |