Loading packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt +6 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -296,7 +301,7 @@ class CommunalWidgetRepositoryImplTest : SysuiTestCase() { private fun initCommunalWidgetRepository(): CommunalWidgetRepositoryImpl { return CommunalWidgetRepositoryImpl( appWidgetManager, appWidgetManagerOptional, appWidgetHost, testScope.backgroundScope, testDispatcher, Loading packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt +4 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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, Loading Loading @@ -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) } Loading Loading @@ -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, ) } Loading packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryModule.kt +4 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -54,7 +55,7 @@ interface CommunalWidgetRepositoryModule { @SysUISingleton @Provides fun provideCommunalWidgetHost( appWidgetManager: AppWidgetManager, appWidgetManager: Optional<AppWidgetManager>, appWidgetHost: AppWidgetHost, @CommunalLog logBuffer: LogBuffer, ): CommunalWidgetHost { Loading packages/SystemUI/src/com/android/systemui/communal/shared/CommunalWidgetHost.kt +8 −3 Original line number Diff line number Diff line Loading @@ -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 /** Loading @@ -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, ) { Loading @@ -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 } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryImplTest.kt +6 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -296,7 +301,7 @@ class CommunalWidgetRepositoryImplTest : SysuiTestCase() { private fun initCommunalWidgetRepository(): CommunalWidgetRepositoryImpl { return CommunalWidgetRepositoryImpl( appWidgetManager, appWidgetManagerOptional, appWidgetHost, testScope.backgroundScope, testDispatcher, Loading
packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepository.kt +4 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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, Loading Loading @@ -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) } Loading Loading @@ -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, ) } Loading
packages/SystemUI/src/com/android/systemui/communal/data/repository/CommunalWidgetRepositoryModule.kt +4 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -54,7 +55,7 @@ interface CommunalWidgetRepositoryModule { @SysUISingleton @Provides fun provideCommunalWidgetHost( appWidgetManager: AppWidgetManager, appWidgetManager: Optional<AppWidgetManager>, appWidgetHost: AppWidgetHost, @CommunalLog logBuffer: LogBuffer, ): CommunalWidgetHost { Loading
packages/SystemUI/src/com/android/systemui/communal/shared/CommunalWidgetHost.kt +8 −3 Original line number Diff line number Diff line Loading @@ -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 /** Loading @@ -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, ) { Loading @@ -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 } }