summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryModule.kt7
-rw-r--r--packages/SystemUI/src/com/android/systemui/communal/shared/CommunalWidgetHost.kt11
4 files changed, 22 insertions, 10 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt
index ddaa4889d6f3..449ee6f414dd 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt
@@ -42,6 +42,7 @@ import com.android.systemui.util.mockito.kotlinArgumentCaptor
import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.mockito.whenever
import com.google.common.truth.Truth.assertThat
+import java.util.Optional
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.flowOf
@@ -63,6 +64,8 @@ import org.mockito.MockitoAnnotations
@SmallTest
@RunWith(AndroidJUnit4::class)
class CommunalWidgetRepositoryImplTest : SysuiTestCase() {
+ @Mock private lateinit var appWidgetManagerOptional: Optional<AppWidgetManager>
+
@Mock private lateinit var appWidgetManager: AppWidgetManager
@Mock private lateinit var appWidgetHost: AppWidgetHost
@@ -113,6 +116,8 @@ class CommunalWidgetRepositoryImplTest : SysuiTestCase() {
whenever(stopwatchProviderInfo.loadLabel(any())).thenReturn("Stopwatch")
whenever(userTracker.userHandle).thenReturn(userHandle)
whenever(communalWidgetDao.getWidgets()).thenReturn(flowOf(emptyMap()))
+ whenever(appWidgetManagerOptional.isPresent).thenReturn(true)
+ whenever(appWidgetManagerOptional.get()).thenReturn(appWidgetManager)
}
@Test
@@ -296,7 +301,7 @@ class CommunalWidgetRepositoryImplTest : SysuiTestCase() {
private fun initCommunalWidgetRepository(): CommunalWidgetRepositoryImpl {
return CommunalWidgetRepositoryImpl(
- appWidgetManager,
+ appWidgetManagerOptional,
appWidgetHost,
testScope.backgroundScope,
testDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt
index d1bbe5743a24..cab8adfc0bd9 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt
@@ -38,6 +38,7 @@ import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.Logger
import com.android.systemui.log.dagger.CommunalLog
import com.android.systemui.settings.UserTracker
+import java.util.Optional
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
@@ -75,7 +76,7 @@ interface CommunalWidgetRepository {
class CommunalWidgetRepositoryImpl
@Inject
constructor(
- private val appWidgetManager: AppWidgetManager,
+ private val appWidgetManager: Optional<AppWidgetManager>,
private val appWidgetHost: AppWidgetHost,
@Application private val applicationScope: CoroutineScope,
@Background private val bgDispatcher: CoroutineDispatcher,
@@ -144,7 +145,7 @@ constructor(
override val communalWidgets: Flow<List<CommunalWidgetContentModel>> =
isHostActive.flatMapLatest { isHostActive ->
- if (!isHostActive) {
+ if (!isHostActive || !appWidgetManager.isPresent) {
return@flatMapLatest flowOf(emptyList())
}
communalWidgetDao.getWidgets().map { it.map(::mapToContentModel) }
@@ -187,7 +188,7 @@ constructor(
val (_, widgetId) = entry.value
return CommunalWidgetContentModel(
appWidgetId = widgetId,
- providerInfo = appWidgetManager.getAppWidgetInfo(widgetId),
+ providerInfo = appWidgetManager.get().getAppWidgetInfo(widgetId),
priority = entry.key.rank,
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryModule.kt b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryModule.kt
index 5793f1043aca..d0d9e3fabc7b 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryModule.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryModule.kt
@@ -31,6 +31,7 @@ import com.android.systemui.res.R
import dagger.Binds
import dagger.Module
import dagger.Provides
+import java.util.Optional
import javax.inject.Named
@Module
@@ -41,8 +42,8 @@ interface CommunalWidgetRepositoryModule {
@SysUISingleton
@Provides
- fun provideAppWidgetManager(@Application context: Context): AppWidgetManager {
- return AppWidgetManager.getInstance(context)
+ fun provideAppWidgetManager(@Application context: Context): Optional<AppWidgetManager> {
+ return Optional.ofNullable(AppWidgetManager.getInstance(context))
}
@SysUISingleton
@@ -54,7 +55,7 @@ interface CommunalWidgetRepositoryModule {
@SysUISingleton
@Provides
fun provideCommunalWidgetHost(
- appWidgetManager: AppWidgetManager,
+ appWidgetManager: Optional<AppWidgetManager>,
appWidgetHost: AppWidgetHost,
@CommunalLog logBuffer: LogBuffer,
): CommunalWidgetHost {
diff --git a/packages/SystemUI/src/com/android/systemui/communal/shared/CommunalWidgetHost.kt b/packages/SystemUI/src/com/android/systemui/communal/shared/CommunalWidgetHost.kt
index 086d729e1a60..155de323d3a6 100644
--- a/packages/SystemUI/src/com/android/systemui/communal/shared/CommunalWidgetHost.kt
+++ b/packages/SystemUI/src/com/android/systemui/communal/shared/CommunalWidgetHost.kt
@@ -22,6 +22,7 @@ import android.content.ComponentName
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.core.Logger
import com.android.systemui.log.dagger.CommunalLog
+import java.util.Optional
import javax.inject.Inject
/**
@@ -31,7 +32,7 @@ import javax.inject.Inject
class CommunalWidgetHost
@Inject
constructor(
- private val appWidgetManager: AppWidgetManager,
+ private val appWidgetManager: Optional<AppWidgetManager>,
private val appWidgetHost: AppWidgetHost,
@CommunalLog logBuffer: LogBuffer,
) {
@@ -56,6 +57,10 @@ constructor(
return null
}
- private fun bindWidget(widgetId: Int, provider: ComponentName): Boolean =
- appWidgetManager.bindAppWidgetIdIfAllowed(widgetId, provider)
+ private fun bindWidget(widgetId: Int, provider: ComponentName): Boolean {
+ if (appWidgetManager.isPresent) {
+ return appWidgetManager.get().bindAppWidgetIdIfAllowed(widgetId, provider)
+ }
+ return false
+ }
}