diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDKTestApp')
8 files changed, 256 insertions, 8 deletions
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/CacheTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/CacheTest.kt new file mode 100644 index 0000000000..299e193c96 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/CacheTest.kt @@ -0,0 +1,89 @@ +package com.mapbox.mapboxsdk.testapp.offline + +import android.content.Context +import android.support.test.rule.ActivityTestRule +import android.support.test.runner.AndroidJUnit4 +import com.mapbox.mapboxsdk.offline.OfflineManager +import com.mapbox.mapboxsdk.testapp.activity.FeatureOverviewActivity +import org.junit.Assert +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import java.util.concurrent.CountDownLatch + +@RunWith(AndroidJUnit4::class) +class CacheTest { + + @Rule + @JvmField + var rule = ActivityTestRule(FeatureOverviewActivity::class.java) + + private val context: Context by lazy { rule.activity } + + private val countDownLatch = CountDownLatch(1) + + @Test + fun testSetMaximumAmbientCacheSize() { + rule.activity.runOnUiThread { + OfflineManager.getInstance(context).setMaximumAmbientCacheSize(10000000, object : OfflineManager.FileSourceCallback { + override fun onSuccess() { + countDownLatch.countDown() + } + + override fun onError(message: String) { + Assert.assertNull("onError should not be called", message) + } + }) + } + countDownLatch.await() + } + + @Test + fun testSetClearAmbientCache() { + rule.activity.runOnUiThread { + OfflineManager.getInstance(context).clearAmbientCache(object : OfflineManager.FileSourceCallback { + override fun onSuccess() { + countDownLatch.countDown() + } + + override fun onError(message: String) { + Assert.assertNull("onError should not be called", message) + } + }) + } + countDownLatch.await() + } + + @Test + fun testSetInvalidateAmbientCache() { + rule.activity.runOnUiThread { + OfflineManager.getInstance(context).invalidateAmbientCache(object : OfflineManager.FileSourceCallback { + override fun onSuccess() { + countDownLatch.countDown() + } + + override fun onError(message: String) { + Assert.assertNull("onError should not be called", message) + } + }) + } + countDownLatch.await() + } + + @Test + fun testSetResetDatabase() { + rule.activity.runOnUiThread { + OfflineManager.getInstance(context).resetDatabase(object : OfflineManager.FileSourceCallback { + override fun onSuccess() { + countDownLatch.countDown() + } + + override fun onError(message: String) { + Assert.assertNull("onError should not be called", message) + } + }) + } + countDownLatch.await() + } + +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/OfflineManagerTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/OfflineManagerTest.kt index 3f98937527..6b73623ae7 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/OfflineManagerTest.kt +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/testapp/offline/OfflineManagerTest.kt @@ -35,7 +35,7 @@ class OfflineManagerTest : AppCenter() { @Test(timeout = 30_000) fun a_copyFileFromAssets() { val latch = CountDownLatch(1) - rule.runOnUiThread { + rule.activity.runOnUiThread { FileUtils.CopyFileFromAssetsTask(rule.activity, object : FileUtils.OnFileCopiedFromAssetsListener { override fun onFileCopiedFromAssets() { latch.countDown() @@ -52,7 +52,7 @@ class OfflineManagerTest : AppCenter() { @Test(timeout = 30_000) fun b_mergeRegion() { val latch = CountDownLatch(1) - rule.runOnUiThread { + rule.activity.runOnUiThread { OfflineManager.getInstance(context).mergeOfflineRegions( FileSource.getResourcesCachePath(rule.activity) + "/" + TEST_DB_FILE_NAME, object : OfflineManager.MergeOfflineRegionsCallback { @@ -72,7 +72,7 @@ class OfflineManagerTest : AppCenter() { @Test(timeout = 30_000) fun c_listRegion() { val latch = CountDownLatch(1) - rule.runOnUiThread { + rule.activity.runOnUiThread { OfflineManager.getInstance(context).listOfflineRegions(object : OfflineManager.ListOfflineRegionsCallback { override fun onList(offlineRegions: Array<out OfflineRegion>?) { assert(offlineRegions?.size == 1) @@ -89,9 +89,26 @@ class OfflineManagerTest : AppCenter() { } @Test(timeout = 30_000) - fun d_deleteRegion() { + fun d_invalidateRegion() { val latch = CountDownLatch(1) - rule.runOnUiThread { + rule.activity.runOnUiThread { + mergedRegion.invalidate(object : OfflineRegion.OfflineRegionInvalidateCallback { + override fun onInvalidate() { + latch.countDown() + } + + override fun onError(error: String?) { + throw RuntimeException("Unable to delete region") + } + }) + } + latch.await() + } + + @Test(timeout = 30_000) + fun e_deleteRegion() { + val latch = CountDownLatch(1) + rule.activity.runOnUiThread { mergedRegion.delete(object : OfflineRegion.OfflineRegionDeleteCallback { override fun onDelete() { latch.countDown() diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index bb2bef35fb..d2a5032c81 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -709,6 +709,17 @@ android:value=".activity.FeatureOverviewActivity" /> </activity> <activity + android:name=".activity.storage.CacheManagementActivity" + android:description="@string/description_cache_management" + android:label="@string/activity_cache_management"> + <meta-data + android:name="@string/category" + android:value="@string/category_storage" /> + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".activity.FeatureOverviewActivity" /> + </activity> + <activity android:name=".activity.maplayout.BottomSheetActivity" android:description="@string/description_bottom_sheet" android:label="@string/activity_bottom_sheet"> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DeleteRegionActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DeleteRegionActivity.java index 037c51f723..11ee68702f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DeleteRegionActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/DeleteRegionActivity.java @@ -12,7 +12,6 @@ import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; - import com.mapbox.mapboxsdk.offline.OfflineManager; import com.mapbox.mapboxsdk.offline.OfflineRegion; import com.mapbox.mapboxsdk.testapp.R; @@ -25,7 +24,8 @@ import java.util.List; /** * Test activity showing integration of deleting an OfflineRegion. */ -public class DeleteRegionActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { +public class DeleteRegionActivity extends AppCompatActivity implements AdapterView.OnItemClickListener, + AdapterView.OnItemLongClickListener { private OfflineRegionAdapter adapter; @@ -34,10 +34,11 @@ public class DeleteRegionActivity extends AppCompatActivity implements AdapterVi super.onCreate(savedInstanceState); setContentView(R.layout.activity_offline_region_delete); - ListView listView = (ListView) findViewById(R.id.listView); + ListView listView = findViewById(R.id.listView); listView.setAdapter(adapter = new OfflineRegionAdapter(this)); listView.setEmptyView(findViewById(android.R.id.empty)); listView.setOnItemClickListener(this); + listView.setOnItemLongClickListener(this); } @Override @@ -58,6 +59,23 @@ public class DeleteRegionActivity extends AppCompatActivity implements AdapterVi builder.show(); } + @Override + public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { + final OfflineRegion region = adapter.getItem(position); + region.invalidate(new OfflineRegion.OfflineRegionInvalidateCallback() { + @Override + public void onInvalidate() { + Toast.makeText(DeleteRegionActivity.this, "Invalidate region success", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onError(String error) { + Toast.makeText(DeleteRegionActivity.this, "Error:" + error, Toast.LENGTH_LONG).show(); + } + }); + return true; + } + private void delete(OfflineRegion region) { region.delete(new OfflineRegion.OfflineRegionDeleteCallback() { @Override diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/storage/CacheManagementActivity.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/storage/CacheManagementActivity.kt new file mode 100644 index 0000000000..c9fdb79e6e --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/storage/CacheManagementActivity.kt @@ -0,0 +1,79 @@ +package com.mapbox.mapboxsdk.testapp.activity.storage + +import android.os.Bundle +import android.os.Looper +import android.support.design.widget.Snackbar +import android.support.v7.app.AppCompatActivity +import com.mapbox.mapboxsdk.offline.OfflineManager +import com.mapbox.mapboxsdk.storage.FileSource +import com.mapbox.mapboxsdk.testapp.R +import junit.framework.Assert.assertTrue +import kotlinx.android.synthetic.main.activity_cache_management.* + +/** + * Test activity showcasing the cache management APIs + */ +class CacheManagementActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_cache_management) + + val fileSource = OfflineManager.getInstance(this) + resetDatabaseButton.setOnClickListener { + fileSource.resetDatabase(object : OfflineManager.FileSourceCallback { + override fun onSuccess() { + showSnackbar("Reset database success") + } + + override fun onError(message: String) { + showSnackbar("Reset database fail: $message") + } + }) + } + + invalidateAmbientCacheButton.setOnClickListener { + fileSource.invalidateAmbientCache(object : OfflineManager.FileSourceCallback { + override fun onSuccess() { + showSnackbar("Invalidate ambient cache success") + } + + override fun onError(message: String) { + showSnackbar("Invalidate ambient cache fail: $message") + } + }) + } + + clearAmbientCacheButton.setOnClickListener { + fileSource.clearAmbientCache(object : OfflineManager.FileSourceCallback { + override fun onSuccess() { + showSnackbar("Clear ambient cache success") + } + + override fun onError(message: String) { + showSnackbar("Clear ambient cache fail: $message") + } + }) + } + + setMaximumAmbientCacheSizeButton.setOnClickListener { + fileSource.setMaximumAmbientCacheSize(5000000, object : OfflineManager.FileSourceCallback { + override fun onSuccess() { + showSnackbar("Set maximum ambient cache size success") + } + + override fun onError(message: String) { + showSnackbar("Set maximum ambient cache size fail: $message") + } + }) + } + } + + fun showSnackbar(message: String) { + // validate that all callbacks occur on main thread + assertTrue(Looper.myLooper() == Looper.getMainLooper()) + + // show snackbar + Snackbar.make(container, message, Snackbar.LENGTH_SHORT).show() + } +}
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_cache_management.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_cache_management.xml new file mode 100644 index 0000000000..a79ed9352b --- /dev/null +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_cache_management.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/container" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <Button + android:id="@+id/resetDatabaseButton" + android:text="Reset Database" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + + <Button + android:id="@+id/invalidateAmbientCacheButton" + android:text="Invalidate Ambient Cache" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + + <Button + android:id="@+id/clearAmbientCacheButton" + android:text="Clear Ambient Cache" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + + <Button + android:id="@+id/setMaximumAmbientCacheSizeButton" + android:text="Set Maximum Ambient Cache Size to 5mb" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + +</LinearLayout>
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml index 684220f2c4..082eb39256 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml @@ -51,6 +51,7 @@ <string name="description_map_in_dialog">Display a map inside a dialog fragment</string> <string name="description_circle_layer">Show bus stops and route in Singapore</string> <string name="description_url_transform">Transform urls on the fly</string> + <string name="description_cache_management">Control the cache management with FileSource API</string> <string name="description_restricted_bounds">Limit viewport to Iceland</string> <string name="description_fill_extrusion_layer">Shows how to add 3D extruded shapes</string> <string name="description_building_fill_extrusion_layer">Shows how to show 3D extruded buildings</string> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/titles.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/titles.xml index 027198c71b..94566ea995 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/titles.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/titles.xml @@ -50,6 +50,7 @@ <string name="activity_map_visibility">Visibility Map</string> <string name="activity_map_in_dialog">Dialog with map</string> <string name="activity_url_transform">Url transform</string> + <string name="activity_cache_management">Cache management</string> <string name="activity_restricted_bounds">Restrict camera to a bounds</string> <string name="activity_fill_extrusion_layer">Fill extrusions</string> <string name="activity_building_fill_extrusion_layer">Building layer</string> |