summaryrefslogtreecommitdiff
path: root/tests/src/com/android/launcher3/AppWidgetsRestoredReceiverTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/launcher3/AppWidgetsRestoredReceiverTest.kt')
-rw-r--r--tests/src/com/android/launcher3/AppWidgetsRestoredReceiverTest.kt171
1 files changed, 171 insertions, 0 deletions
diff --git a/tests/src/com/android/launcher3/AppWidgetsRestoredReceiverTest.kt b/tests/src/com/android/launcher3/AppWidgetsRestoredReceiverTest.kt
new file mode 100644
index 0000000000..21abab4d49
--- /dev/null
+++ b/tests/src/com/android/launcher3/AppWidgetsRestoredReceiverTest.kt
@@ -0,0 +1,171 @@
+package com.android.launcher3
+
+import android.appwidget.AppWidgetManager.ACTION_APPWIDGET_DELETED
+import android.appwidget.AppWidgetManager.ACTION_APPWIDGET_HOST_RESTORED
+import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_IDS
+import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_OLD_IDS
+import android.appwidget.AppWidgetManager.EXTRA_HOST_ID
+import android.content.Intent
+import android.platform.uiautomator_helpers.DeviceHelpers
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+import com.android.launcher3.LauncherPrefs.Companion.APP_WIDGET_IDS
+import com.android.launcher3.LauncherPrefs.Companion.OLD_APP_WIDGET_IDS
+import com.android.launcher3.util.IntArray
+import com.android.launcher3.util.LauncherModelHelper.TEST_PACKAGE
+import com.android.launcher3.widget.LauncherWidgetHolder.APPWIDGET_HOST_ID
+import com.google.common.truth.Truth.assertThat
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+/** Tests for [AppWidgetsRestoredReceiver] */
+@SmallTest
+@RunWith(AndroidJUnit4::class)
+class AppWidgetsRestoredReceiverTest {
+ private lateinit var launcherPrefs: LauncherPrefs
+ private lateinit var receiverUnderTest: AppWidgetsRestoredReceiver
+
+ @Before
+ fun setup() {
+ launcherPrefs = LauncherPrefs(DeviceHelpers.context)
+ receiverUnderTest = AppWidgetsRestoredReceiver()
+ }
+
+ @After
+ fun tearDown() {
+ launcherPrefs.remove(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)
+ }
+
+ @Test
+ fun `When AppWidgetsRestoredReceiver gets valid broadcast it sets old and new app widget ids`() {
+ // Given
+ val oldIds = intArrayOf(1, 2, 10)
+ val newIds = intArrayOf(10, 11, 12)
+ val expectedOldIds = IntArray.wrap(*oldIds).toConcatString()
+ val expectedNewIds = IntArray.wrap(*newIds).toConcatString()
+ val intent =
+ Intent().apply {
+ component = null
+ `package` = TEST_PACKAGE
+ action = ACTION_APPWIDGET_HOST_RESTORED
+ putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
+ putExtra(EXTRA_APPWIDGET_IDS, newIds)
+ putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
+ }
+
+ // When
+ receiverUnderTest.onReceive(DeviceHelpers.context, intent)
+
+ // Then
+ assertThat(launcherPrefs.get(OLD_APP_WIDGET_IDS)).isEqualTo(expectedOldIds)
+ assertThat(launcherPrefs.get(APP_WIDGET_IDS)).isEqualTo(expectedNewIds)
+ }
+
+ @Test
+ fun `AppWidgetsRestoredReceiver does not set widget ids when Intent action is invalid`() {
+ // Given
+ val oldIds = intArrayOf(1, 2, 10)
+ val newIds = intArrayOf(10, 11, 12)
+ val intent =
+ Intent().apply {
+ component = null
+ `package` = TEST_PACKAGE
+ action = ACTION_APPWIDGET_DELETED
+ putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
+ putExtra(EXTRA_APPWIDGET_IDS, newIds)
+ putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
+ }
+
+ // When
+ receiverUnderTest.onReceive(DeviceHelpers.context, intent)
+
+ // Then
+ assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
+ }
+
+ @Test
+ fun `AppWidgetsRestoredReceiver does not set widget ids when Intent host id is not Launcher`() {
+ // Given
+ val oldIds = intArrayOf(1, 2, 10)
+ val newIds = intArrayOf(10, 11, 12)
+ val intent =
+ Intent().apply {
+ component = null
+ `package` = TEST_PACKAGE
+ action = ACTION_APPWIDGET_HOST_RESTORED
+ putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
+ putExtra(EXTRA_APPWIDGET_IDS, newIds)
+ putExtra(EXTRA_HOST_ID, 999999999)
+ }
+
+ // When
+ receiverUnderTest.onReceive(DeviceHelpers.context, intent)
+
+ // Then
+ assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
+ }
+
+ @Test
+ fun `AppWidgetsRestoredReceiver does not set ids when new and old ids differ in length`() {
+ // Given
+ val oldIds = intArrayOf(10)
+ val newIds = intArrayOf(10, 11, 12)
+ val intent =
+ Intent().apply {
+ component = null
+ `package` = TEST_PACKAGE
+ action = ACTION_APPWIDGET_HOST_RESTORED
+ putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
+ putExtra(EXTRA_APPWIDGET_IDS, newIds)
+ putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
+ }
+
+ // When
+ receiverUnderTest.onReceive(DeviceHelpers.context, intent)
+
+ // Then
+ assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
+ }
+
+ @Test
+ fun `AppWidgetsRestoredReceiver does not set widget ids when old ids not set`() {
+ // Given
+ val newIds = intArrayOf(10, 11, 12)
+ val intent =
+ Intent().apply {
+ component = null
+ `package` = TEST_PACKAGE
+ action = ACTION_APPWIDGET_HOST_RESTORED
+ putExtra(EXTRA_APPWIDGET_IDS, newIds)
+ putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
+ }
+
+ // When
+ receiverUnderTest.onReceive(DeviceHelpers.context, intent)
+
+ // Then
+ assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
+ }
+
+ @Test
+ fun `AppWidgetsRestoredReceiver does not set widget ids when new ids not set`() {
+ // Given
+ val oldIds = intArrayOf(10, 11, 12)
+ val intent =
+ Intent().apply {
+ component = null
+ `package` = TEST_PACKAGE
+ action = ACTION_APPWIDGET_HOST_RESTORED
+ putExtra(EXTRA_APPWIDGET_OLD_IDS, oldIds)
+ putExtra(EXTRA_HOST_ID, APPWIDGET_HOST_ID)
+ }
+
+ // When
+ receiverUnderTest.onReceive(DeviceHelpers.context, intent)
+
+ // Then
+ assertThat(launcherPrefs.has(OLD_APP_WIDGET_IDS, APP_WIDGET_IDS)).isFalse()
+ }
+}