Index: chrome/android/java_staging/src/org/chromium/chrome/browser/gcore/ConnectedTask.java |
diff --git a/chrome/android/java_staging/src/org/chromium/chrome/browser/gcore/ConnectedTask.java b/chrome/android/java_staging/src/org/chromium/chrome/browser/gcore/ConnectedTask.java |
deleted file mode 100644 |
index 1d87ad55380c3c0f2a922e2b96a4844428c82671..0000000000000000000000000000000000000000 |
--- a/chrome/android/java_staging/src/org/chromium/chrome/browser/gcore/ConnectedTask.java |
+++ /dev/null |
@@ -1,136 +0,0 @@ |
-// 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.gcore; |
- |
-import org.chromium.base.Log; |
-import org.chromium.base.TraceEvent; |
-import org.chromium.base.VisibleForTesting; |
-import org.chromium.base.annotations.RemovableInRelease; |
- |
-import java.util.concurrent.TimeUnit; |
- |
-/** |
- * Base class for tasks which connects to Google Play Services using given GoogleApiClient, |
- * performs action specified in doWhenConnected method, disconnects the client and cleans up |
- * by invoking cleanUp method. |
- * |
- * <p> |
- * Using the same client for tasks running in more than one thread is a serious error, as |
- * the state can then be modified while other threads are still using the client. The |
- * recommended way to use these tasks is with a {@link java.util.concurrent.ThreadPoolExecutor} |
- * having a pool size of 1. |
- * </p> |
- * <p> |
- * This class waits {@link #CONNECTION_TIMEOUT_MS} milliseconds for connection to be established. |
- * If connection is unsuccessful then it will retry after {@link #CONNECTION_RETRY_TIME_MS} |
- * milliseconds as long as Google Play Services is available. Number of retries is limited to |
- * {@link #RETRY_NUMBER_LIMIT}. |
- * </p> |
- * |
- * @param <T> type of {@link ChromeGoogleApiClient} to use for the tasks |
- */ |
-public abstract class ConnectedTask<T extends ChromeGoogleApiClient> implements Runnable { |
- private static final String TAG = "cr.GCore"; |
- |
- public static final long CONNECTION_TIMEOUT_MS = TimeUnit.SECONDS.toMillis(5); |
- public static final long CONNECTION_RETRY_TIME_MS = TimeUnit.SECONDS.toMillis(10); |
- public static final int RETRY_NUMBER_LIMIT = 5; |
- |
- private final T mClient; |
- private int mRetryNumber; |
- |
- /** |
- * Used for logging and tracing. |
- * <ul> |
- * <li>Log format: "{logPrefix}| {{@link #getName()}} {message}"</li> |
- * <li>Trace format: "ConnectedTask:{logPrefix}:{traceEventName}"</li> |
- * </ul> |
- */ |
- private final String mLogPrefix; |
- |
- /** |
- * @param client |
- * @param logPrefix used for logging and tracing. |
- */ |
- public ConnectedTask(T client, String logPrefix) { |
- assert logPrefix != null; |
- mClient = client; |
- mLogPrefix = logPrefix; |
- } |
- |
- /** Creates a connected task with an empty log prefix. */ |
- @VisibleForTesting |
- public ConnectedTask(T client) { |
- this(client, ""); |
- } |
- |
- /** |
- * Executed with client connected to Google Play Services. |
- * This method is intended to be overridden by a subclass. |
- */ |
- protected abstract void doWhenConnected(T client); |
- |
- /** |
- * Returns a name of a task. Implementations should not have side effects |
- * as we want to have the logging related calls removed. |
- */ |
- @RemovableInRelease |
- protected abstract String getName(); |
- |
- /** |
- * Executed after doWhenConnected was done and client was disconnected. |
- * May also be executed when Google Play Services is no longer available, which means connection |
- * was unsuccessful and won't be retried. |
- * This method is intended to be overridden by a subclass. |
- */ |
- protected void cleanUp() {} |
- |
- /** |
- * Executed if the connection was unsuccessful. |
- * This method is intended to be overridden by a subclass. |
- */ |
- protected void connectionFailed() {} |
- |
- @Override |
- @VisibleForTesting |
- public final void run() { |
- TraceEvent.begin("GCore:" + mLogPrefix + ":run"); |
- try { |
- Log.d(TAG, "%s:%s started", mLogPrefix, getName()); |
- if (mClient.connectWithTimeout(CONNECTION_TIMEOUT_MS)) { |
- try { |
- Log.d(TAG, "%s:%s connected", mLogPrefix, getName()); |
- doWhenConnected(mClient); |
- Log.d(TAG, "%s:%s finished", mLogPrefix, getName()); |
- } finally { |
- mClient.disconnect(); |
- Log.d(TAG, "%s:%s disconnected", mLogPrefix, getName()); |
- cleanUp(); |
- Log.d(TAG, "%s:%s cleaned up", mLogPrefix, getName()); |
- } |
- } else { |
- mRetryNumber++; |
- if (mRetryNumber < RETRY_NUMBER_LIMIT && mClient.isGooglePlayServicesAvailable()) { |
- Log.d(TAG, "%s:%s calling retry", mLogPrefix, getName()); |
- retry(this, CONNECTION_RETRY_TIME_MS); |
- } else { |
- connectionFailed(); |
- Log.d(TAG, "%s:%s number of retries exceeded", mLogPrefix, getName()); |
- cleanUp(); |
- Log.d(TAG, "%s:%s cleaned up", mLogPrefix, getName()); |
- } |
- } |
- } catch (RuntimeException e) { |
- Log.e(TAG, "%s:%s runtime exception %s: %s", mLogPrefix, getName(), |
- e.getClass().getName(), e.getMessage()); |
- throw e; |
- } finally { |
- TraceEvent.end("GCore:" + mLogPrefix + ":run"); |
- } |
- } |
- |
- /** Method to implement to determine how to run the retry task. */ |
- protected abstract void retry(Runnable task, long delayMs); |
-} |