summaryrefslogtreecommitdiffstats
path: root/base
diff options
context:
space:
mode:
authoryfriedman@chromium.org <yfriedman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-20 03:24:07 +0000
committeryfriedman@chromium.org <yfriedman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-20 03:24:07 +0000
commitad116b2e8ccdb745d9310de17db9fe3aeb311b04 (patch)
tree95f9b52f8b4dc9e79fd9448d4ed29b28213d684f /base
parentd587575ca2f7233baf8fd2bc677c238b9a80c521 (diff)
downloadchromium_src-ad116b2e8ccdb745d9310de17db9fe3aeb311b04.zip
chromium_src-ad116b2e8ccdb745d9310de17db9fe3aeb311b04.tar.gz
chromium_src-ad116b2e8ccdb745d9310de17db9fe3aeb311b04.tar.bz2
Add NetworkChangeNotifier for Android.
The native notifier spawns a Java-side notifier that registers for notifications from Android's ConnectivityManager. As for the lack of tests, they're written at a higher-level downstream. Review URL: http://codereview.chromium.org/10073024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@133142 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r--base/android/java/org/chromium/base/ActivityStatus.java83
-rw-r--r--base/android/jni_generator/jni_generator.py1
2 files changed, 84 insertions, 0 deletions
diff --git a/base/android/java/org/chromium/base/ActivityStatus.java b/base/android/java/org/chromium/base/ActivityStatus.java
new file mode 100644
index 0000000..765d841
--- /dev/null
+++ b/base/android/java/org/chromium/base/ActivityStatus.java
@@ -0,0 +1,83 @@
+// Copyright (c) 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.os.Looper;
+
+import java.util.ArrayList;
+
+/**
+ * Provides information about the parent activity's status.
+ */
+public class ActivityStatus {
+ public interface Listener {
+ /**
+ * Called when the activity's status changes.
+ * @param isPaused true if the activity is paused, false if not.
+ */
+ public void onActivityStatusChanged(boolean isPaused);
+ }
+
+ private boolean mIsPaused = false;
+ private ArrayList<Listener> mListeners = new ArrayList<Listener>();
+ private static ActivityStatus sActivityStatus;
+
+ private ActivityStatus() {
+ }
+
+ public static ActivityStatus getInstance() {
+ // Can only be called on the UI thread.
+ assert Looper.myLooper() == Looper.getMainLooper();
+ if (sActivityStatus == null) {
+ sActivityStatus = new ActivityStatus();
+ }
+ return sActivityStatus;
+ }
+
+ /**
+ * Indicates that the parent activity was paused.
+ */
+ public void onPause() {
+ mIsPaused = true;
+ informAllListeners();
+ }
+
+ /**
+ * Indicates that the parent activity was resumed.
+ */
+ public void onResume() {
+ mIsPaused = false;
+ informAllListeners();
+ }
+
+ /**
+ * Indicates that the parent activity is currently paused.
+ */
+ public boolean isPaused() {
+ return mIsPaused;
+ }
+
+ /**
+ * Registers the given listener to receive activity status updates.
+ * @param listener Listener to receive status updates.
+ */
+ public void registerListener(Listener listener) {
+ mListeners.add(listener);
+ }
+
+ /**
+ * Unregisters the given listener from receiving activity status updates.
+ * @param listener Listener that doesn't want to receive status updates.
+ */
+ public void unregisterListener(Listener listener) {
+ mListeners.remove(listener);
+ }
+
+ private void informAllListeners() {
+ for (Listener listener : mListeners) {
+ listener.onActivityStatusChanged(mIsPaused);
+ }
+ }
+}
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py
index bb80d98..fe2ec57 100644
--- a/base/android/jni_generator/jni_generator.py
+++ b/base/android/jni_generator/jni_generator.py
@@ -180,6 +180,7 @@ def JavaParamToJni(param):
'Lorg/chromium/chromeview/SurfaceTextureListener',
'Lorg/chromium/chromeview/TouchPoint',
'Lorg/chromium/media/MediaPlayerListener',
+ 'Lorg/chromium/net/NetworkChangeNotifier',
]
if param == 'byte[][]':
return '[[B'