Chromium Code Reviews| Index: base/android/java/src/org/chromium/base/BaseChromiumApplication.java |
| diff --git a/base/android/java/src/org/chromium/base/BaseChromiumApplication.java b/base/android/java/src/org/chromium/base/BaseChromiumApplication.java |
| index 97b2ab49a803293c50911add5a6bc8891ea5a650..1c969c279cd984effdd3a83fbe4c1c4fd82894a5 100644 |
| --- a/base/android/java/src/org/chromium/base/BaseChromiumApplication.java |
| +++ b/base/android/java/src/org/chromium/base/BaseChromiumApplication.java |
| @@ -4,17 +4,85 @@ |
| package org.chromium.base; |
| +import android.app.Activity; |
| import android.app.Application; |
| +import android.os.Bundle; |
| +import android.view.Window; |
| /** |
| * Basic application functionality that should be shared among all browser applications. |
| */ |
| public class BaseChromiumApplication extends Application { |
| + /** |
| + * Interface to be implemented by listeners for window focus events. |
| + */ |
| + public interface WindowFocusChangedListener { |
| + /** |
| + * Called when the window focus changes for {@code activity}. |
| + * @param activity The {@link Activity} that has a window focus changed event. |
| + * @param hasFocus Whether or not {@code activity} gained or lost focus. |
| + */ |
| + public void onWindowFocusChanged(Activity activity, boolean hasFocus); |
| + } |
| + |
| + private ObserverList<WindowFocusChangedListener> sWindowFocusListeners = |
| + new ObserverList<WindowFocusChangedListener>(); |
| @Override |
| public void onCreate() { |
| super.onCreate(); |
| ActivityStatus.initialize(this); |
| + |
| + registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { |
| + @Override |
| + public void onActivityCreated(final Activity activity, Bundle savedInstanceState) { |
| + Window.Callback callback = activity.getWindow().getCallback(); |
| + activity.getWindow().setCallback(new WindowCallbackWrapper(callback) { |
| + @Override |
| + public void onWindowFocusChanged(boolean hasFocus) { |
| + super.onWindowFocusChanged(hasFocus); |
| + |
| + for (WindowFocusChangedListener listener : sWindowFocusListeners) { |
| + listener.onWindowFocusChanged(activity, hasFocus); |
| + } |
| + } |
| + }); |
| + } |
| + |
| + @Override |
| + public void onActivityDestroyed(Activity activity) { } |
| + |
| + @Override |
| + public void onActivityPaused(Activity activity) { } |
| + |
| + @Override |
| + public void onActivityResumed(Activity activity) { } |
|
Ted C
2014/02/13 04:38:44
I would add some asserts in a couple of these meth
David Trainor- moved to gerrit
2014/02/13 05:03:55
Ah yes I forgot about this! Good idea.
David Trainor- moved to gerrit
2014/02/14 19:13:36
Done.
|
| + |
| + @Override |
| + public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } |
| + |
| + @Override |
| + public void onActivityStarted(Activity activity) { } |
| + |
| + @Override |
| + public void onActivityStopped(Activity activity) { } |
| + |
| + }); |
| } |
| + /** |
| + * Registers a listener to receive window focus updates on activities in this application. |
| + * @param listener Listener to receive window focus events. |
| + */ |
| + public void registerWindowFocusChangedListener(WindowFocusChangedListener listener) { |
| + sWindowFocusListeners.addObserver(listener); |
| + } |
| + |
| + /** |
| + * Unregisters a listener from receiving window focus updates on activities in this application. |
| + * @param listener Listener that doesn't want to receive window focus events. |
| + */ |
| + public void unregisterWindowFocusChangedListener(WindowFocusChangedListener listener) { |
| + sWindowFocusListeners.removeObserver(listener); |
| + } |
| } |