aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortobrun <tobrun.van.nuland@gmail.com>2019-07-31 13:02:45 +0300
committertobrun <tobrun.van.nuland@gmail.com>2019-07-31 13:02:45 +0300
commit2901b09c5d6b8adbe58b697353ae5d09734331b3 (patch)
tree20e191a974010b0ec7b22ad030d563bfa6f2f439
parentf86f0226dd7f87fef97378cff225754ae5d69c90 (diff)
test
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java44
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java21
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/OfflineRegionTest.kt89
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DownloadRegionActivity.kt17
4 files changed, 137 insertions, 34 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
index 5bd0dd4bf..c6b65d3b5 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java
@@ -166,7 +166,7 @@ public class OfflineManager {
* @param callback the callback to be invoked
*/
public void listOfflineRegions(@NonNull final ListOfflineRegionsCallback callback) {
- fileSource.activate();
+ // fileSource.activate();
listOfflineRegions(fileSource, new ListOfflineRegionsCallback() {
@Override
@@ -174,7 +174,7 @@ public class OfflineManager {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ //fileSource.deactivate();
callback.onList(offlineRegions);
}
});
@@ -185,7 +185,7 @@ public class OfflineManager {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ //fileSource.deactivate();
callback.onError(error);
}
});
@@ -276,14 +276,14 @@ public class OfflineManager {
* @param callback the callback to be invoked when the database was reset or when the operation erred.
*/
public void resetDatabase(@Nullable final FileSourceCallback callback) {
- fileSource.activate();
+ //fileSource.activate();
nativeResetDatabase(new FileSourceCallback() {
@Override
public void onSuccess() {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ //fileSource.deactivate();
if (callback != null) {
callback.onSuccess();
}
@@ -296,7 +296,7 @@ public class OfflineManager {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ //fileSource.deactivate();
if (callback != null) {
callback.onError(message);
}
@@ -322,14 +322,14 @@ public class OfflineManager {
* @param callback the callback to be invoked when the ambient cache was invalidated or when the operation erred.
*/
public void invalidateAmbientCache(@Nullable final FileSourceCallback callback) {
- fileSource.activate();
+ // fileSource.activate();
nativeInvalidateAmbientCache(new FileSourceCallback() {
@Override
public void onSuccess() {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
if (callback != null) {
callback.onSuccess();
}
@@ -342,7 +342,7 @@ public class OfflineManager {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
if (callback != null) {
callback.onError(message);
}
@@ -367,14 +367,14 @@ public class OfflineManager {
* @param callback the callback to be invoked when the ambient cache was cleared or when the operation erred.
*/
public void clearAmbientCache(@Nullable final FileSourceCallback callback) {
- fileSource.activate();
+ ///fileSource.activate();
nativeClearAmbientCache(new FileSourceCallback() {
@Override
public void onSuccess() {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ //fileSource.deactivate();
if (callback != null) {
callback.onSuccess();
}
@@ -387,7 +387,7 @@ public class OfflineManager {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
if (callback != null) {
callback.onError(message);
}
@@ -427,14 +427,14 @@ public class OfflineManager {
* @param callback the callback to be invoked when the the maximum size has been set or when the operation erred.
*/
public void setMaximumAmbientCacheSize(long size, @Nullable final FileSourceCallback callback) {
- fileSource.activate();
+ //fileSource.activate();
nativeSetMaximumAmbientCacheSize(size, new FileSourceCallback() {
@Override
public void onSuccess() {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
if (callback != null) {
callback.onSuccess();
}
@@ -444,11 +444,11 @@ public class OfflineManager {
@Override
public void onError(@NonNull final String message) {
- fileSource.activate();
+ // fileSource.activate();
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
if (callback != null) {
callback.onError(message);
}
@@ -504,7 +504,7 @@ public class OfflineManager {
private void mergeOfflineDatabaseFiles(@NonNull final File file, @NonNull final MergeOfflineRegionsCallback callback,
final boolean isTemporaryFile) {
- fileSource.activate();
+ //fileSource.activate();
mergeOfflineRegions(fileSource, file.getAbsolutePath(), new MergeOfflineRegionsCallback() {
@Override
public void onMerge(final OfflineRegion[] offlineRegions) {
@@ -514,7 +514,7 @@ public class OfflineManager {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
callback.onMerge(offlineRegions);
}
});
@@ -528,7 +528,7 @@ public class OfflineManager {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
callback.onError(error);
}
});
@@ -563,7 +563,7 @@ public class OfflineManager {
}
ConnectivityReceiver.instance(context).activate();
- FileSource.getInstance(context).activate();
+ //FileSource.getInstance(context).activate();
createOfflineRegion(fileSource, definition, metadata, new CreateOfflineRegionCallback() {
@Override
@@ -572,7 +572,7 @@ public class OfflineManager {
@Override
public void run() {
ConnectivityReceiver.instance(context).deactivate();
- FileSource.getInstance(context).deactivate();
+ // FileSource.getInstance(context).deactivate();
callback.onCreate(offlineRegion);
}
});
@@ -584,7 +584,7 @@ public class OfflineManager {
@Override
public void run() {
ConnectivityReceiver.instance(context).deactivate();
- FileSource.getInstance(context).deactivate();
+ //FileSource.getInstance(context).deactivate();
callback.onError(error);
}
});
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java
index f13128da6..1da828e1b 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java
@@ -207,7 +207,7 @@ public class OfflineRegion {
// Keep track of the region state
private int state = STATE_INACTIVE;
- private boolean deliverInactiveMessages = false;
+ private boolean deliverInactiveMessages = true;
/**
* Gets whether or not the `OfflineRegionObserver` will continue to deliver messages even if
@@ -336,9 +336,9 @@ public class OfflineRegion {
if (state == STATE_ACTIVE) {
ConnectivityReceiver.instance(context).activate();
- fileSource.activate();
+ //fileSource.activate();
} else {
- fileSource.deactivate();
+ //fileSource.deactivate();
ConnectivityReceiver.instance(context).deactivate();
}
@@ -354,14 +354,12 @@ public class OfflineRegion {
* @param callback the callback to invoked.
*/
public void getStatus(@NonNull final OfflineRegionStatusCallback callback) {
- fileSource.activate();
getOfflineRegionStatus(new OfflineRegionStatusCallback() {
@Override
public void onStatus(final OfflineRegionStatus status) {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
callback.onStatus(status);
}
});
@@ -372,7 +370,6 @@ public class OfflineRegion {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
callback.onError(error);
}
});
@@ -400,14 +397,14 @@ public class OfflineRegion {
public void delete(@NonNull final OfflineRegionDeleteCallback callback) {
if (!isDeleted) {
isDeleted = true;
- fileSource.activate();
+ //fileSource.activate();
deleteOfflineRegion(new OfflineRegionDeleteCallback() {
@Override
public void onDelete() {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
callback.onDelete();
OfflineRegion.this.finalize();
}
@@ -420,7 +417,7 @@ public class OfflineRegion {
@Override
public void run() {
isDeleted = false;
- fileSource.deactivate();
+ //fileSource.deactivate();
callback.onError(error);
}
});
@@ -438,7 +435,7 @@ public class OfflineRegion {
* @param callback the callback to be invoked
*/
public void invalidate(@Nullable final OfflineRegionInvalidateCallback callback) {
- fileSource.activate();
+ // fileSource.activate();
invalidateOfflineRegion(new OfflineRegionInvalidateCallback() {
@Override
@@ -446,7 +443,7 @@ public class OfflineRegion {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
if (callback != null) {
callback.onInvalidate();
}
@@ -459,7 +456,7 @@ public class OfflineRegion {
handler.post(new Runnable() {
@Override
public void run() {
- fileSource.deactivate();
+ // fileSource.deactivate();
if (callback != null) {
callback.onError(message);
}
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/OfflineRegionTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/OfflineRegionTest.kt
new file mode 100644
index 000000000..fabedcd29
--- /dev/null
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/OfflineRegionTest.kt
@@ -0,0 +1,89 @@
+package com.mapbox.mapboxsdk.testapp.offline
+
+import android.content.Context
+import android.os.Handler
+import android.support.test.rule.ActivityTestRule
+import android.support.test.runner.AndroidJUnit4
+import com.mapbox.geojson.Geometry
+import com.mapbox.geojson.Point
+import com.mapbox.mapboxsdk.log.Logger
+import com.mapbox.mapboxsdk.maps.Style
+import com.mapbox.mapboxsdk.offline.*
+import com.mapbox.mapboxsdk.testapp.activity.FeatureOverviewActivity
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import java.util.concurrent.CountDownLatch
+
+@RunWith(AndroidJUnit4::class)
+class OfflineRegionTest {
+
+ @Rule
+ @JvmField
+ var rule = ActivityTestRule(FeatureOverviewActivity::class.java)
+
+ private val context: Context by lazy { rule.activity }
+
+ private val latch: CountDownLatch = CountDownLatch(1)
+
+ private lateinit var handler: Handler
+
+ @Test
+ fun testRegionDownload() {
+ rule.activity.runOnUiThread {
+ handler = Handler()
+ val definition = OfflineGeometryRegionDefinition(
+ Style.MAPBOX_STREETS,
+ Point.fromLngLat(0.0, 0.0) as Geometry,
+ 5.0,
+ 6.0,
+ 1.0f
+ )
+ OfflineManager.getInstance(context).createOfflineRegion(definition, byteArrayOf(), object : OfflineManager.CreateOfflineRegionCallback {
+ override fun onCreate(offlineRegion: OfflineRegion) {
+ offlineRegion.setObserver(object : OfflineRegion.OfflineRegionObserver {
+ override fun onStatusChanged(status: OfflineRegionStatus) {
+ if (status.isComplete) {
+ Logger.e(TAG, "Download is complete")
+ latch.countDown()
+ } else {
+ Logger.i(TAG, "OnStatusChanged: ${status.completedResourceCount} / ${status.requiredResourceCount}")
+ }
+ }
+
+ override fun onError(error: OfflineRegionError) {
+ Logger.e(TAG, error.message)
+ }
+
+ override fun mapboxTileCountLimitExceeded(limit: Long) {
+ Logger.e(TAG, "Exceeded limit tile count: $limit")
+ }
+ })
+ offlineRegion.setDownloadState(OfflineRegion.STATE_ACTIVE)
+ toggle(offlineRegion)
+ }
+
+ override fun onError(error: String) {
+ Logger.e(TAG, "Exceeded limit tile count: $error")
+ }
+ })
+ }
+ latch.await()
+ }
+
+ private fun toggle(offlineRegion: OfflineRegion) {
+ handler.postDelayed({
+ Logger.e(TAG, "Pausing download!")
+ offlineRegion.setDownloadState(OfflineRegion.STATE_INACTIVE)
+ handler.postDelayed({
+ Logger.e(TAG, "Restarting download!")
+ offlineRegion.setDownloadState(OfflineRegion.STATE_ACTIVE)
+ toggle(offlineRegion)
+ }, 5000)
+ }, 5000)
+ }
+
+ companion object {
+ const val TAG = "OfflineTest"
+ }
+} \ No newline at end of file
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DownloadRegionActivity.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DownloadRegionActivity.kt
index 1febe0bfd..9d8e32d6d 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DownloadRegionActivity.kt
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DownloadRegionActivity.kt
@@ -11,14 +11,18 @@ import android.widget.Toast
import com.mapbox.mapboxsdk.constants.MapboxConstants
import com.mapbox.mapboxsdk.geometry.LatLng
import com.mapbox.mapboxsdk.geometry.LatLngBounds
+import com.mapbox.mapboxsdk.log.Logger
import com.mapbox.mapboxsdk.maps.Style
import com.mapbox.mapboxsdk.offline.*
+import com.mapbox.mapboxsdk.storage.FileSource
import com.mapbox.mapboxsdk.testapp.R
import java.util.*
import java.util.concurrent.TimeUnit
import kotlinx.android.synthetic.main.activity_region_download.*
import timber.log.Timber
+private const val PAUSE_THRESHOLD = 66_000L
+
/**
* Example showcasing how to download an offline region headless, allows to test pausing and resuming the download.
*/
@@ -34,11 +38,14 @@ class DownloadRegionActivity : AppCompatActivity(), OfflineRegion.OfflineRegionO
private var downloading = false
private var previousCompletedResourceCount: Long = 0
private var previousUpdateTimestamp: Long = 0
+ private var once = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_region_download)
+ FileSource.getInstance(this).activate()
+
offlineManager = OfflineManager.getInstance(this)
offlineManager.setOfflineMapboxTileCountLimit(Long.MAX_VALUE)
initUi()
@@ -97,6 +104,7 @@ class DownloadRegionActivity : AppCompatActivity(), OfflineRegion.OfflineRegionO
}
private fun startDownload(region: OfflineRegion) {
+ logMessage("startDownload")
downloading = true
fab.setImageResource(R.drawable.ic_pause_black_24dp)
logMessage("Downloading...")
@@ -117,10 +125,12 @@ class DownloadRegionActivity : AppCompatActivity(), OfflineRegion.OfflineRegionO
}
private fun pauseDownload(region: OfflineRegion) {
+ logMessage("pauseDownload")
downloading = false
fab.setImageResource(R.drawable.ic_play_arrow_black_24dp)
handler.removeCallbacksAndMessages(null)
region.setDownloadState(OfflineRegion.STATE_INACTIVE)
+ handler.postDelayed({ startDownload(region) }, 3000)
"Paused".let {
logMessage(it)
download_status.text = it
@@ -149,6 +159,13 @@ class DownloadRegionActivity : AppCompatActivity(), OfflineRegion.OfflineRegionO
) {
logMessage("FAILURE! Completed > required")
}
+
+ if (previousCompletedResourceCount < PAUSE_THRESHOLD && status.completedResourceCount >= PAUSE_THRESHOLD) {
+ if (once) {
+ once = false
+ offlineRegion?.let { pauseDownload(it) }
+ }
+ }
}
previousCompletedResourceCount = status.completedResourceCount