summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/provider/Settings.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt32
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/management/ControlsRequestDialog.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java7
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsController.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImpl.kt32
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt59
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt4
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt3
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt9
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt29
15 files changed, 61 insertions, 136 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index a9b92a3b3c5b..13819550d7e2 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -9428,9 +9428,12 @@ public final class Settings {
* 0 indicates disabled and 1 indicates enabled. A non existent value should be treated as
* enabled.
*
+ * @deprecated Controls are migrated to Quick Settings, rendering this unnecessary and will
+ * be removed in a future release.
* @hide
*/
@Readable
+ @Deprecated
public static final String CONTROLS_ENABLED = "controls_enabled";
/**
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt
index 496741b1cd6f..ea1ade41dca8 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt
@@ -40,11 +40,6 @@ import java.util.function.Consumer
*/
interface ControlsController : UserAwareController {
- /**
- * Whether the controls system is available for the current user.
- */
- val available: Boolean
-
// SERVICE COMMUNICATION
/**
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
index 8c3ef68f0bde..5d0127a714fb 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
@@ -28,7 +28,6 @@ import android.database.ContentObserver
import android.net.Uri
import android.os.Environment
import android.os.UserHandle
-import android.provider.Settings
import android.service.controls.Control
import android.service.controls.actions.ControlAction
import android.util.ArrayMap
@@ -70,15 +69,10 @@ class ControlsControllerImpl @Inject constructor (
companion object {
private const val TAG = "ControlsControllerImpl"
- internal const val CONTROLS_AVAILABLE = Settings.Secure.CONTROLS_ENABLED
- internal val URI = Settings.Secure.getUriFor(CONTROLS_AVAILABLE)
private const val USER_CHANGE_RETRY_DELAY = 500L // ms
private const val DEFAULT_ENABLED = 1
private const val PERMISSION_SELF = "com.android.systemui.permission.SELF"
const val SUGGESTED_CONTROLS_PER_STRUCTURE = 6
-
- private fun isAvailable(userId: Int, cr: ContentResolver) = Settings.Secure.getIntForUser(
- cr, CONTROLS_AVAILABLE, DEFAULT_ENABLED, userId) != 0
}
private var userChanging: Boolean = true
@@ -93,8 +87,6 @@ class ControlsControllerImpl @Inject constructor (
private val contentResolver: ContentResolver
get() = context.contentResolver
- override var available = isAvailable(currentUserId, contentResolver)
- private set
private val persistenceWrapper: ControlsFavoritePersistenceWrapper
@VisibleForTesting
@@ -126,8 +118,7 @@ class ControlsControllerImpl @Inject constructor (
BackupManager(userStructure.userContext)
)
auxiliaryPersistenceWrapper.changeFile(userStructure.auxiliaryFile)
- available = isAvailable(newUser.identifier, contentResolver)
- resetFavorites(available)
+ resetFavorites()
bindingController.changeUser(newUser)
listingController.changeUser(newUser)
userChanging = false
@@ -157,7 +148,7 @@ class ControlsControllerImpl @Inject constructor (
Log.d(TAG, "Restore finished, storing auxiliary favorites")
auxiliaryPersistenceWrapper.initialize()
persistenceWrapper.storeFavorites(auxiliaryPersistenceWrapper.favorites)
- resetFavorites(available)
+ resetFavorites()
}
}
}
@@ -176,8 +167,7 @@ class ControlsControllerImpl @Inject constructor (
if (userChanging || userId != currentUserId) {
return
}
- available = isAvailable(currentUserId, contentResolver)
- resetFavorites(available)
+ resetFavorites()
}
}
@@ -242,7 +232,7 @@ class ControlsControllerImpl @Inject constructor (
init {
dumpManager.registerDumpable(javaClass.name, this)
- resetFavorites(available)
+ resetFavorites()
userChanging = false
broadcastDispatcher.registerReceiver(
userSwitchReceiver,
@@ -256,23 +246,18 @@ class ControlsControllerImpl @Inject constructor (
PERMISSION_SELF,
null
)
- contentResolver.registerContentObserver(URI, false, settingObserver, UserHandle.USER_ALL)
listingController.addCallback(listingCallback)
}
fun destroy() {
broadcastDispatcher.unregisterReceiver(userSwitchReceiver)
context.unregisterReceiver(restoreFinishedReceiver)
- contentResolver.unregisterContentObserver(settingObserver)
listingController.removeCallback(listingCallback)
}
- private fun resetFavorites(shouldLoad: Boolean) {
+ private fun resetFavorites() {
Favorites.clear()
-
- if (shouldLoad) {
- Favorites.load(persistenceWrapper.readFavorites())
- }
+ Favorites.load(persistenceWrapper.readFavorites())
}
private fun confirmAvailability(): Boolean {
@@ -280,10 +265,6 @@ class ControlsControllerImpl @Inject constructor (
Log.w(TAG, "Controls not available while user is changing")
return false
}
- if (!available) {
- Log.d(TAG, "Controls not available")
- return false
- }
return true
}
@@ -577,7 +558,6 @@ class ControlsControllerImpl @Inject constructor (
override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
pw.println("ControlsController state:")
- pw.println(" Available: $available")
pw.println(" Changing users: $userChanging")
pw.println(" Current user: ${currentUser.identifier}")
pw.println(" Favorites:")
diff --git a/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt b/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
index 6b7a1ac8cb7e..5557c8672596 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/dagger/ControlsComponent.kt
@@ -93,7 +93,7 @@ class ControlsComponent @Inject constructor(
/**
* @return true if controls are feature-enabled and the user has the setting enabled
*/
- fun isEnabled() = featureEnabled && lazyControlsController.get().available
+ fun isEnabled() = featureEnabled
/**
* Returns one of 3 states:
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsRequestDialog.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsRequestDialog.kt
index 4ed610675093..f9e7f0e921f3 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsRequestDialog.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsRequestDialog.kt
@@ -71,10 +71,7 @@ open class ControlsRequestDialog @Inject constructor(
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- if (!controller.available) {
- Log.w(TAG, "Quick Controls not available for this user ")
- finish()
- }
+
currentUserTracker.startTracking()
controlsListingController.addCallback(callback)
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt
index ac13aadeeb40..2bbd3cbbc220 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt
@@ -23,8 +23,6 @@ import android.service.controls.actions.ControlAction
import android.view.ViewGroup
interface ControlsUiController {
- val available: Boolean
-
companion object {
public const val TAG = "ControlsUiController"
public const val EXTRA_ANIMATE = "extra_animate"
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
index 954bfb3ff891..26be98743eed 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
@@ -128,9 +128,6 @@ class ControlsUiControllerImpl @Inject constructor (
reload(parent)
}
- override val available: Boolean
- get() = controlsController.get().available
-
private lateinit var activityContext: Context
private lateinit var listingCallback: ControlsListingController.ControlsListingCallback
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
index 3dd4a3b9300e..fa326203b182 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoTileManager.java
@@ -16,6 +16,7 @@ package com.android.systemui.statusbar.phone;
import static com.android.systemui.qs.dagger.QSFlagsModule.RBC_AVAILABLE;
+import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Resources;
import android.hardware.display.ColorDisplayManager;
@@ -294,9 +295,11 @@ public class AutoTileManager implements UserAwareController {
private final DeviceControlsController.Callback mDeviceControlsCallback =
new DeviceControlsController.Callback() {
@Override
- public void onControlsAvailable(int position) {
+ public void onControlsUpdate(@Nullable Integer position) {
if (mAutoTracker.isAdded(DEVICE_CONTROLS)) return;
- mHost.addTile(DEVICE_CONTROLS, position);
+ if (position != null) {
+ mHost.addTile(DEVICE_CONTROLS, position);
+ }
mAutoTracker.setTileAdded(DEVICE_CONTROLS);
mHandler.post(() -> mDeviceControlsController.removeCallback());
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsController.kt
index b21189802c19..e2bebbe22554 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsController.kt
@@ -24,7 +24,7 @@ interface DeviceControlsController {
/**
* If controls become available, initiate this callback with the desired position
*/
- fun onControlsAvailable(position: Int)
+ fun onControlsUpdate(position: Int?)
}
/** Add callback, supporting only a single callback at once */
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImpl.kt
index a4fd647ee643..7563b3082ed8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImpl.kt
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.policy
import android.content.ComponentName
import android.content.Context
import android.content.SharedPreferences
+import android.provider.Settings
import android.util.Log
import com.android.systemui.R
@@ -29,6 +30,7 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.qs.QSTileHost.POSITION_AT_END
import com.android.systemui.settings.UserContextProvider
import com.android.systemui.statusbar.policy.DeviceControlsController.Callback
+import com.android.systemui.util.settings.SecureSettings
import javax.inject.Inject
@@ -45,7 +47,8 @@ import javax.inject.Inject
public class DeviceControlsControllerImpl @Inject constructor(
private val context: Context,
private val controlsComponent: ControlsComponent,
- private val userContextProvider: UserContextProvider
+ private val userContextProvider: UserContextProvider,
+ private val secureSettings: SecureSettings
) : DeviceControlsController {
private var callback: Callback? = null
@@ -73,6 +76,7 @@ public class DeviceControlsControllerImpl @Inject constructor(
controlsComponent.getControlsController().ifPresent {
if (!it.getFavorites().isEmpty()) {
position = QS_PRIORITY_POSITION
+ fireControlsUpdate()
}
}
}
@@ -80,20 +84,22 @@ public class DeviceControlsControllerImpl @Inject constructor(
/**
* This migration logic assumes that something like [AutoTileManager] is tracking state
* externally, and won't call this method after receiving a response via
- * [Callback#onControlsAvailable], once per user. Otherwise the calculated position may be
+ * [Callback#onControlsUpdate], once per user. Otherwise the calculated position may be
* incorrect.
*/
override fun setCallback(callback: Callback) {
// Treat any additional call as a reset before recalculating
removeCallback()
+ this.callback = callback
- checkMigrationToQs()
- controlsComponent.getControlsListingController().ifPresent {
- it.addCallback(listingCallback)
+ if (secureSettings.getInt(Settings.Secure.CONTROLS_ENABLED, 1) == 0) {
+ fireControlsUpdate()
+ } else {
+ checkMigrationToQs()
+ controlsComponent.getControlsListingController().ifPresent {
+ it.addCallback(listingCallback)
+ }
}
-
- this.callback = callback
- fireControlsAvailable()
}
override fun removeCallback() {
@@ -104,11 +110,9 @@ public class DeviceControlsControllerImpl @Inject constructor(
}
}
- private fun fireControlsAvailable() {
- position?.let {
- Log.i(TAG, "Setting DeviceControlsTile position: $it")
- callback?.onControlsAvailable(it)
- }
+ private fun fireControlsUpdate() {
+ Log.i(TAG, "Setting DeviceControlsTile position: $position")
+ callback?.onControlsUpdate(position)
}
/**
@@ -155,7 +159,7 @@ public class DeviceControlsControllerImpl @Inject constructor(
if (position == null) {
position = QS_DEFAULT_POSITION
}
- fireControlsAvailable()
+ fireControlsUpdate()
controlsComponent.getControlsListingController().ifPresent {
it.removeCallback(listingCallback)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
index f6c836a24f21..a80fbbeb318d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
@@ -24,7 +24,6 @@ import android.content.ContextWrapper
import android.content.Intent
import android.content.pm.ServiceInfo
import android.os.UserHandle
-import android.provider.Settings
import android.service.controls.Control
import android.service.controls.DeviceTypes
import android.service.controls.actions.ControlAction
@@ -141,11 +140,6 @@ class ControlsControllerImplTest : SysuiTestCase() {
fun setUp() {
MockitoAnnotations.initMocks(this)
- Settings.Secure.putInt(mContext.contentResolver,
- ControlsControllerImpl.CONTROLS_AVAILABLE, 1)
- Settings.Secure.putIntForUser(mContext.contentResolver,
- ControlsControllerImpl.CONTROLS_AVAILABLE, 1, otherUser)
-
`when`(userTracker.userHandle).thenReturn(UserHandle.of(user))
delayableExecutor = FakeExecutor(FakeSystemClock())
@@ -172,7 +166,6 @@ class ControlsControllerImplTest : SysuiTestCase() {
)
controller.auxiliaryPersistenceWrapper = auxiliaryPersistenceWrapper
- assertTrue(controller.available)
verify(broadcastDispatcher).registerReceiver(
capture(broadcastReceiverCaptor), any(), any(), eq(UserHandle.ALL))
@@ -527,58 +520,6 @@ class ControlsControllerImplTest : SysuiTestCase() {
verify(listingController).changeUser(UserHandle.of(otherUser))
assertTrue(controller.getFavorites().isEmpty())
assertEquals(otherUser, controller.currentUserId)
- assertTrue(controller.available)
- }
-
- @Test
- fun testDisableFeature_notAvailable() {
- Settings.Secure.putIntForUser(mContext.contentResolver,
- ControlsControllerImpl.CONTROLS_AVAILABLE, 0, user)
- controller.settingObserver.onChange(false, listOf(ControlsControllerImpl.URI), 0, 0)
- assertFalse(controller.available)
- }
-
- @Test
- fun testDisableFeature_clearFavorites() {
- controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO)
- delayableExecutor.runAllReady()
-
- assertFalse(controller.getFavorites().isEmpty())
-
- Settings.Secure.putIntForUser(mContext.contentResolver,
- ControlsControllerImpl.CONTROLS_AVAILABLE, 0, user)
- controller.settingObserver.onChange(false, listOf(ControlsControllerImpl.URI), 0, user)
- assertTrue(controller.getFavorites().isEmpty())
- }
-
- @Test
- fun testDisableFeature_noChangeForNotCurrentUser() {
- controller.replaceFavoritesForStructure(TEST_STRUCTURE_INFO)
- delayableExecutor.runAllReady()
-
- Settings.Secure.putIntForUser(mContext.contentResolver,
- ControlsControllerImpl.CONTROLS_AVAILABLE, 0, otherUser)
- controller.settingObserver.onChange(false, listOf(ControlsControllerImpl.URI), 0, otherUser)
-
- assertTrue(controller.available)
- assertFalse(controller.getFavorites().isEmpty())
- }
-
- @Test
- fun testCorrectUserSettingOnUserChange() {
- Settings.Secure.putIntForUser(mContext.contentResolver,
- ControlsControllerImpl.CONTROLS_AVAILABLE, 0, otherUser)
-
- val intent = Intent(Intent.ACTION_USER_SWITCHED).apply {
- putExtra(Intent.EXTRA_USER_HANDLE, otherUser)
- }
- val pendingResult = mock(BroadcastReceiver.PendingResult::class.java)
- `when`(pendingResult.sendingUserId).thenReturn(otherUser)
- broadcastReceiverCaptor.value.pendingResult = pendingResult
-
- broadcastReceiverCaptor.value.onReceive(mContext, intent)
-
- assertFalse(controller.available)
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
index b8f91b8d4719..c678f46c0c7e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/dagger/ControlsComponentTest.kt
@@ -103,7 +103,6 @@ class ControlsComponentTest : SysuiTestCase() {
@Test
fun testFeatureEnabledAfterBootVisibility() {
- `when`(controller.available).thenReturn(true)
`when`(lockPatternUtils.getStrongAuthForUser(anyInt()))
.thenReturn(STRONG_AUTH_REQUIRED_AFTER_BOOT)
val component = setupComponent(true)
@@ -113,7 +112,6 @@ class ControlsComponentTest : SysuiTestCase() {
@Test
fun testFeatureEnabledAndCannotShowOnLockScreenVisibility() {
- `when`(controller.available).thenReturn(true)
`when`(lockPatternUtils.getStrongAuthForUser(anyInt()))
.thenReturn(STRONG_AUTH_NOT_REQUIRED)
`when`(keyguardStateController.isUnlocked()).thenReturn(false)
@@ -126,7 +124,6 @@ class ControlsComponentTest : SysuiTestCase() {
@Test
fun testFeatureEnabledAndCanShowOnLockScreenVisibility() {
- `when`(controller.available).thenReturn(true)
`when`(lockPatternUtils.getStrongAuthForUser(anyInt()))
.thenReturn(STRONG_AUTH_NOT_REQUIRED)
`when`(keyguardStateController.isUnlocked()).thenReturn(false)
@@ -141,7 +138,6 @@ class ControlsComponentTest : SysuiTestCase() {
fun testFeatureEnabledAndCanShowWhileUnlockedVisibility() {
`when`(secureSettings.getInt(eq(Settings.Secure.POWER_MENU_LOCKED_SHOW_CONTENT), anyInt()))
.thenReturn(0)
- `when`(controller.available).thenReturn(true)
`when`(lockPatternUtils.getStrongAuthForUser(anyInt()))
.thenReturn(STRONG_AUTH_NOT_REQUIRED)
`when`(keyguardStateController.isUnlocked()).thenReturn(true)
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt
index 0122db6c4965..a328d9e06a74 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsRequestDialogTest.kt
@@ -110,7 +110,6 @@ class ControlsRequestDialogTest : SysuiTestCase() {
intent.putExtra(ControlsProviderService.EXTRA_CONTROL, control)
`when`(controller.currentUserId).thenReturn(USER_ID)
- `when`(controller.available).thenReturn(true)
`when`(listingController.getAppLabel(CONTROL_COMPONENT)).thenReturn(LABEL)
`when`(controller.getFavoritesForComponent(CONTROL_COMPONENT)).thenReturn(emptyList())
@@ -142,4 +141,4 @@ class ControlsRequestDialogTest : SysuiTestCase() {
assertEquals(control.deviceType, it.deviceType)
}
}
-} \ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt
index a59f45d53597..aa766515cc13 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/DeviceControlsTileTest.kt
@@ -105,7 +105,6 @@ class DeviceControlsTileTest : SysuiTestCase() {
doNothing().`when`(spiedContext).startActivity(any(Intent::class.java))
`when`(qsHost.context).thenReturn(spiedContext)
`when`(qsHost.uiEventLogger).thenReturn(uiEventLogger)
- `when`(controlsController.available).thenReturn(true)
`when`(controlsComponent.isEnabled()).thenReturn(true)
secureSettings.putInt(Settings.Secure.POWER_MENU_LOCKED_SHOW_CONTENT, 1)
@@ -154,14 +153,6 @@ class DeviceControlsTileTest : SysuiTestCase() {
}
@Test
- fun testAvailableControlsSettingOff() {
- `when`(controlsController.available).thenReturn(false)
-
- tile = createTile()
- assertThat(tile.isAvailable).isTrue()
- }
-
- @Test
fun testObservingCallback() {
verify(controlsListingController).observe(
any(LifecycleOwner::class.java),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt
index 95a363ee110e..e9d16a6738ca 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.policy
import android.content.ComponentName
import android.content.Context
import android.content.pm.ServiceInfo
+import android.provider.Settings
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
@@ -37,6 +38,7 @@ import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Compan
import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.PREFS_CONTROLS_SEEDING_COMPLETED
import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.QS_DEFAULT_POSITION
import com.android.systemui.statusbar.policy.DeviceControlsControllerImpl.Companion.QS_PRIORITY_POSITION
+import com.android.systemui.util.settings.SecureSettings
import java.util.Optional
import java.util.function.Consumer
@@ -55,6 +57,7 @@ import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.ArgumentMatchers.anyInt
+import org.mockito.ArgumentMatchers.anyObject
@SmallTest
@RunWith(AndroidTestingRunner::class)
@@ -76,6 +79,8 @@ class DeviceControlsControllerImplTest : SysuiTestCase() {
private lateinit var serviceInfo: ServiceInfo
@Mock
private lateinit var userContextProvider: UserContextProvider
+ @Mock
+ private lateinit var secureSettings: SecureSettings
@Captor
private lateinit var seedCallback: ArgumentCaptor<Consumer<SeedResponse>>
@@ -98,7 +103,14 @@ class DeviceControlsControllerImplTest : SysuiTestCase() {
`when`(controlsComponent.getControlsListingController())
.thenReturn(Optional.of(controlsListingController))
- controller = DeviceControlsControllerImpl(mContext, controlsComponent, userContextProvider)
+ controller = DeviceControlsControllerImpl(
+ mContext,
+ controlsComponent,
+ userContextProvider,
+ secureSettings
+ )
+
+ `when`(secureSettings.getInt(Settings.Secure.CONTROLS_ENABLED, 1)).thenReturn(1)
`when`(serviceInfo.componentName).thenReturn(TEST_COMPONENT)
controlsServiceInfo = ControlsServiceInfo(mContext, serviceInfo)
@@ -116,7 +128,16 @@ class DeviceControlsControllerImplTest : SysuiTestCase() {
verify(controlsListingController).addCallback(capture(listingCallbackCaptor))
listingCallbackCaptor.value.onServicesUpdated(emptyList())
- verify(callback, never()).onControlsAvailable(anyInt())
+ verify(callback, never()).onControlsUpdate(anyInt())
+ }
+
+ @Test
+ fun testCallbackWithNullValueWhenSettingIsDisabled() {
+ `when`(secureSettings.getInt(Settings.Secure.CONTROLS_ENABLED, 1)).thenReturn(0)
+ controller.setCallback(callback)
+
+ verify(controlsListingController, never()).addCallback(anyObject())
+ verify(callback).onControlsUpdate(null)
}
@Test
@@ -126,7 +147,7 @@ class DeviceControlsControllerImplTest : SysuiTestCase() {
verify(controlsListingController).addCallback(capture(listingCallbackCaptor))
listingCallbackCaptor.value.onServicesUpdated(listOf(controlsServiceInfo))
- verify(callback).onControlsAvailable(QS_PRIORITY_POSITION)
+ verify(callback).onControlsUpdate(QS_PRIORITY_POSITION)
}
@Test
@@ -146,6 +167,6 @@ class DeviceControlsControllerImplTest : SysuiTestCase() {
capture(seedCallback)
)
seedCallback.value.accept(SeedResponse(TEST_PKG, true))
- verify(callback).onControlsAvailable(QS_DEFAULT_POSITION)
+ verify(callback).onControlsUpdate(QS_DEFAULT_POSITION)
}
}