Index: content/public/android/java/src/org/chromium/content/browser/LocationProvider.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/LocationProvider.java b/content/public/android/java/src/org/chromium/content/browser/LocationProvider.java |
index afcc17a68e9bf6b0978667fe5526f91e9e334755..46800f38ca20a38a08105b4862a74be6920334c7 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/LocationProvider.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/LocationProvider.java |
@@ -52,16 +52,24 @@ class LocationProvider { |
@Override |
public void onActivityStateChange(int state) { |
if (state == ActivityStatus.PAUSED) { |
- mShouldRunAfterActivityResume |= mIsRunning; |
- unregisterFromLocationUpdates(); |
+ pauseUpdates(); |
} else if (state == ActivityStatus.RESUMED) { |
- assert !mIsRunning; |
- if (mShouldRunAfterActivityResume) { |
- registerForLocationUpdates(); |
- } |
+ resumeUpdates(); |
} |
} |
+ private void pauseUpdates() { |
+ mShouldRunAfterActivityResume |= mIsRunning; |
+ unregisterFromLocationUpdates(); |
+ } |
+ |
+ private void resumeUpdates() { |
+ assert !mIsRunning; |
+ if (mShouldRunAfterActivityResume) { |
+ registerForLocationUpdates(); |
+ } |
+ } |
+ |
/** |
* Start listening for location updates. |
* @param gpsEnabled Whether or not we're interested in high accuracy GPS. |
@@ -249,6 +257,28 @@ class LocationProvider { |
ThreadUtils.runOnUiThread(task); |
} |
+ @CalledByNative |
+ public void pause() { |
+ FutureTask<Void> task = new FutureTask<Void>(new Runnable() { |
+ @Override |
+ public void run() { |
+ mImpl.pauseUpdates(); |
+ } |
+ }, null); |
+ ThreadUtils.runOnUiThread(task); |
+ } |
+ |
+ @CalledByNative |
+ public void resume() { |
+ FutureTask<Void> task = new FutureTask<Void>(new Runnable() { |
+ @Override |
+ public void run() { |
+ mImpl.resumeUpdates(); |
+ } |
+ }, null); |
+ ThreadUtils.runOnUiThread(task); |
+ } |
+ |
/** |
* Returns true if we are currently listening for location updates, false if not. |
* Must be called only in the UI thread. |