| 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.
|
|
|