Index: base/android/java/src/org/chromium/base/ActivityStatus.java |
diff --git a/base/android/java/src/org/chromium/base/ActivityStatus.java b/base/android/java/src/org/chromium/base/ActivityStatus.java |
deleted file mode 100644 |
index df43dbebfbb9bf95df55fbb72607ecd9a1f85ff2..0000000000000000000000000000000000000000 |
--- a/base/android/java/src/org/chromium/base/ActivityStatus.java |
+++ /dev/null |
@@ -1,259 +0,0 @@ |
-// Copyright 2012 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.base; |
- |
-import android.app.Activity; |
-import android.app.Application; |
-import android.app.Application.ActivityLifecycleCallbacks; |
-import android.os.Bundle; |
- |
-import java.util.HashMap; |
-import java.util.Map; |
- |
-/** |
- * Provides information about the current activity's status, and a way |
- * to register / unregister listeners for state changes. |
- */ |
-@JNINamespace("base::android") |
-public class ActivityStatus { |
- |
- // Constants matching activity states reported to StateListener.onStateChange |
- // As an implementation detail, these are now defined in the auto-generated |
- // ActivityState interface, to be shared with C++. |
- public static final int CREATED = ActivityState.CREATED; |
- public static final int STARTED = ActivityState.STARTED; |
- public static final int RESUMED = ActivityState.RESUMED; |
- public static final int PAUSED = ActivityState.PAUSED; |
- public static final int STOPPED = ActivityState.STOPPED; |
- public static final int DESTROYED = ActivityState.DESTROYED; |
- |
- // Last activity that was shown (or null if none or it was destroyed). |
- private static Activity sActivity; |
- |
- private static final Map<Activity, Integer> sActivityStates = |
- new HashMap<Activity, Integer>(); |
- |
- private static final ObserverList<StateListener> sStateListeners = |
- new ObserverList<StateListener>(); |
- |
- /** |
- * Interface to be implemented by listeners. |
- */ |
- public interface StateListener { |
- /** |
- * Called when the activity's state changes. |
- * @param newState New activity state. |
- */ |
- public void onActivityStateChange(int newState); |
- } |
- |
- private ActivityStatus() {} |
- |
- /** |
- * Initializes the activity status for a specified application. |
- * |
- * @param application The application whose status you wish to monitor. |
- */ |
- public static void initialize(Application application) { |
- application.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { |
- @Override |
- public void onActivityCreated(Activity activity, Bundle savedInstanceState) { |
- onStateChange(activity, CREATED); |
- } |
- |
- @Override |
- public void onActivityDestroyed(Activity activity) { |
- onStateChange(activity, DESTROYED); |
- } |
- |
- @Override |
- public void onActivityPaused(Activity activity) { |
- onStateChange(activity, PAUSED); |
- } |
- |
- @Override |
- public void onActivityResumed(Activity activity) { |
- onStateChange(activity, RESUMED); |
- } |
- |
- @Override |
- public void onActivitySaveInstanceState(Activity activity, Bundle outState) {} |
- |
- @Override |
- public void onActivityStarted(Activity activity) { |
- onStateChange(activity, STARTED); |
- } |
- |
- @Override |
- public void onActivityStopped(Activity activity) { |
- onStateChange(activity, STOPPED); |
- } |
- }); |
- } |
- |
- /** |
- * Must be called by the main activity when it changes state. |
- * |
- * @param activity Current activity. |
- * @param newState New state value. |
- */ |
- private static void onStateChange(Activity activity, int newState) { |
- if (activity == null) throw new IllegalArgumentException("null activity is not supported"); |
- |
- if (sActivity != activity) { |
- // ActivityStatus is notified with the CREATED event very late during the main activity |
- // creation to avoid making startup performance worse than it is by notifying observers |
- // that could do some expensive work. This can lead to non-CREATED events being fired |
- // before the CREATED event which is problematic. |
- // TODO(pliard): fix http://crbug.com/176837. |
- if (sActivity == null |
- || newState == CREATED || newState == RESUMED || newState == STARTED) { |
- sActivity = activity; |
- } |
- } |
- |
- if (newState != DESTROYED) { |
- sActivityStates.put(activity, newState); |
- } else { |
- sActivityStates.remove(activity); |
- } |
- |
- if (sActivity == activity) { |
- for (StateListener listener : sStateListeners) { |
- listener.onActivityStateChange(newState); |
- } |
- if (newState == DESTROYED) { |
- sActivity = null; |
- } |
- } |
- } |
- |
- /** |
- * Testing method to update the state of the specified activity. |
- */ |
- public static void onStateChangeForTesting(Activity activity, int newState) { |
- onStateChange(activity, newState); |
- } |
- |
- /** |
- * @return The current activity. |
- */ |
- public static Activity getActivity() { |
- return sActivity; |
- } |
- |
- /** |
- * @return The current activity's state (if no activity is registered, then DESTROYED will |
- * be returned). |
- */ |
- public static int getState() { |
- return getStateForActivity(sActivity); |
- } |
- |
- /** |
- * Query the state for a given activity. If the activity is not being tracked, this will |
- * return {@link #DESTROYED}. |
- * |
- * <p> |
- * When relying on this method, be familiar with the expected life cycle state |
- * transitions: |
- * <a href="http://developer.android.com/guide/components/activities.html#Lifecycle"> |
- * Activity Lifecycle |
- * </a> |
- * |
- * <p> |
- * During activity transitions (activity B launching in front of activity A), A will completely |
- * paused before the creation of activity B begins. |
- * |
- * <p> |
- * A basic flow for activity A starting, followed by activity B being opened and then closed: |
- * <ul> |
- * <li> -- Starting Activity A -- |
- * <li> Activity A - CREATED |
- * <li> Activity A - STARTED |
- * <li> Activity A - RESUMED |
- * <li> -- Starting Activity B -- |
- * <li> Activity A - PAUSED |
- * <li> Activity B - CREATED |
- * <li> Activity B - STARTED |
- * <li> Activity B - RESUMED |
- * <li> Activity A - STOPPED |
- * <li> -- Closing Activity B, Activity A regaining focus -- |
- * <li> Activity B - PAUSED |
- * <li> Activity A - STARTED |
- * <li> Activity A - RESUMED |
- * <li> Activity B - STOPPED |
- * <li> Activity B - DESTROYED |
- * </ul> |
- * |
- * @param activity The activity whose state is to be returned. |
- * @return The state of the specified activity. |
- */ |
- public static int getStateForActivity(Activity activity) { |
- Integer currentStatus = sActivityStates.get(activity); |
- return currentStatus != null ? currentStatus.intValue() : DESTROYED; |
- } |
- |
- /** |
- * Registers the given listener to receive activity state changes. |
- * @param listener Listener to receive state changes. |
- */ |
- public static void registerStateListener(StateListener listener) { |
- sStateListeners.addObserver(listener); |
- } |
- |
- /** |
- * Unregisters the given listener from receiving activity state changes. |
- * @param listener Listener that doesn't want to receive state changes. |
- */ |
- public static void unregisterStateListener(StateListener listener) { |
- sStateListeners.removeObserver(listener); |
- } |
- |
- /** |
- * Registers the single thread-safe native activity status listener. |
- * This handles the case where the caller is not on the main thread. |
- * Note that this is used by a leaky singleton object from the native |
- * side, hence lifecycle management is greatly simplified. |
- */ |
- @CalledByNative |
- private static void registerThreadSafeNativeStateListener() { |
- ThreadUtils.runOnUiThread(new Runnable () { |
- @Override |
- public void run() { |
- // Register a new listener that calls nativeOnActivityStateChange. |
- sStateListeners.addObserver(new StateListener() { |
- @Override |
- public void onActivityStateChange(int newState) { |
- nativeOnActivityStateChange(newState); |
- } |
- }); |
- } |
- }); |
- } |
- |
- // Called to notify the native side of state changes. |
- // IMPORTANT: This is always called on the main thread! |
- private static native void nativeOnActivityStateChange(int newState); |
- |
- /** |
- * Checks whether or not the Application's current Activity is visible to the user. Note that |
- * this includes the PAUSED state, which can happen when the Activity is temporarily covered |
- * by another Activity's Fragment (e.g.). |
- * @return True if the Activity is visible, false otherwise. |
- */ |
- public static boolean isApplicationVisible() { |
- int state = getState(); |
- return state != STOPPED && state != DESTROYED; |
- } |
- |
- /** |
- * Checks to see if there are any active Activity instances being watched by ActivityStatus. |
- * @return True if all Activities have been destroyed. |
- */ |
- public static boolean isEveryActivityDestroyed() { |
- return sActivityStates.isEmpty(); |
- } |
-} |