diff options
author | yfriedman@chromium.org <yfriedman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-20 03:24:07 +0000 |
---|---|---|
committer | yfriedman@chromium.org <yfriedman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-20 03:24:07 +0000 |
commit | ad116b2e8ccdb745d9310de17db9fe3aeb311b04 (patch) | |
tree | 95f9b52f8b4dc9e79fd9448d4ed29b28213d684f /base | |
parent | d587575ca2f7233baf8fd2bc677c238b9a80c521 (diff) | |
download | chromium_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.java | 83 | ||||
-rw-r--r-- | base/android/jni_generator/jni_generator.py | 1 |
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' |