Index: ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java |
diff --git a/ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java b/ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java |
index 5dfb5f168aced4442ba3ab16457d38f01d4df8aa..59108ce0fefcf6a919892ccbdccebeaa36ef2b55 100644 |
--- a/ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java |
+++ b/ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java |
@@ -11,6 +11,8 @@ import android.content.Intent; |
import android.content.IntentSender.SendIntentException; |
import android.view.View; |
+import org.chromium.base.ActivityState; |
+import org.chromium.base.ApplicationStatus; |
import org.chromium.ui.UiUtils; |
import java.lang.ref.WeakReference; |
@@ -20,7 +22,9 @@ import java.lang.ref.WeakReference; |
* Activity Instance. |
* Only instantiate this class when you need the implemented features. |
*/ |
-public class ActivityWindowAndroid extends WindowAndroid implements View.OnLayoutChangeListener { |
+public class ActivityWindowAndroid |
+ extends WindowAndroid |
+ implements ApplicationStatus.ActivityStateListener, View.OnLayoutChangeListener { |
// Constants used for intent request code bounding. |
private static final int REQUEST_CODE_PREFIX = 1000; |
private static final int REQUEST_CODE_RANGE_SIZE = 100; |
@@ -29,10 +33,28 @@ public class ActivityWindowAndroid extends WindowAndroid implements View.OnLayou |
private final WeakReference<Activity> mActivityRef; |
private int mNextRequestCode = 0; |
+ /** |
+ * Creates an Activity-specific WindowAndroid with associated intent functionality. |
+ * TODO(jdduke): Remove this overload when all callsites have been updated to |
+ * indicate their activity state listening preference. |
+ * @param activity The activity associated with the WindowAndroid. |
+ */ |
public ActivityWindowAndroid(Activity activity) { |
+ this(activity, true); |
+ } |
+ |
+ /** |
+ * Creates an Activity-specific WindowAndroid with associated intent functionality. |
+ * @param activity The activity associated with the WindowAndroid. |
+ * @param listenToActivityState Whether to listen to activity state changes. |
+ */ |
+ public ActivityWindowAndroid(Activity activity, boolean listenToActivityState) { |
super(activity.getApplicationContext()); |
mActivityRef = new WeakReference<Activity>(activity); |
activity.findViewById(android.R.id.content).addOnLayoutChangeListener(this); |
+ if (listenToActivityState) { |
+ ApplicationStatus.registerStateListenerForActivity(this, activity); |
+ } |
} |
@Override |
@@ -104,6 +126,15 @@ public class ActivityWindowAndroid extends WindowAndroid implements View.OnLayou |
} |
@Override |
+ public void onActivityStateChange(Activity activity, int newState) { |
+ if (newState == ActivityState.PAUSED) { |
+ onActivityPaused(); |
+ } else if (newState == ActivityState.RESUMED) { |
+ onActivityResumed(); |
+ } |
+ } |
+ |
+ @Override |
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, |
int oldTop, int oldRight, int oldBottom) { |
keyboardVisibilityPossiblyChanged(UiUtils.isKeyboardShowing(mActivityRef.get(), v)); |