Merge "Rename RegionSamplingInstance to RegionSampler" into tm-qpr-dev am: ef6a85b104

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20294062

Change-Id: I4fb2fae0eb9e7be449da3dab7b4b717644e465fa
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Florence Yang
2022-10-31 22:28:44 +00:00
committed by Automerger Merge Worker
5 changed files with 77 additions and 110 deletions

View File

@@ -27,8 +27,6 @@
-packages/SystemUI/shared/src/com/android/systemui/shared/clocks/AnimatableClockView.kt -packages/SystemUI/shared/src/com/android/systemui/shared/clocks/AnimatableClockView.kt
-packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockRegistry.kt -packages/SystemUI/shared/src/com/android/systemui/shared/clocks/ClockRegistry.kt
-packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt -packages/SystemUI/shared/src/com/android/systemui/shared/clocks/DefaultClockProvider.kt
-packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionDarkness.kt
-packages/SystemUI/shared/src/com/android/systemui/shared/regionsampling/RegionSamplingInstance.kt
-packages/SystemUI/shared/src/com/android/systemui/shared/rotation/FloatingRotationButtonPositionCalculator.kt -packages/SystemUI/shared/src/com/android/systemui/shared/rotation/FloatingRotationButtonPositionCalculator.kt
-packages/SystemUI/shared/src/com/android/systemui/shared/system/UncaughtExceptionPreHandlerManager.kt -packages/SystemUI/shared/src/com/android/systemui/shared/system/UncaughtExceptionPreHandlerManager.kt
-packages/SystemUI/shared/src/com/android/systemui/shared/system/smartspace/SmartspaceState.kt -packages/SystemUI/shared/src/com/android/systemui/shared/system/smartspace/SmartspaceState.kt
@@ -683,8 +681,6 @@
-packages/SystemUI/tests/src/com/android/systemui/shared/animation/UnfoldConstantTranslateAnimatorTest.kt -packages/SystemUI/tests/src/com/android/systemui/shared/animation/UnfoldConstantTranslateAnimatorTest.kt
-packages/SystemUI/tests/src/com/android/systemui/shared/animation/UnfoldMoveFromCenterAnimatorTest.kt -packages/SystemUI/tests/src/com/android/systemui/shared/animation/UnfoldMoveFromCenterAnimatorTest.kt
-packages/SystemUI/tests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt -packages/SystemUI/tests/src/com/android/systemui/shared/clocks/ClockRegistryTest.kt
-packages/SystemUI/tests/src/com/android/systemui/shared/navigationbar/RegionSamplingHelperTest.kt
-packages/SystemUI/tests/src/com/android/systemui/shared/regionsampling/RegionSamplingInstanceTest.kt
-packages/SystemUI/tests/src/com/android/systemui/shared/rotation/RotationButtonControllerTest.kt -packages/SystemUI/tests/src/com/android/systemui/shared/rotation/RotationButtonControllerTest.kt
-packages/SystemUI/tests/src/com/android/systemui/shared/system/UncaughtExceptionPreHandlerTest.kt -packages/SystemUI/tests/src/com/android/systemui/shared/system/UncaughtExceptionPreHandlerTest.kt
-packages/SystemUI/tests/src/com/android/systemui/smartspace/DreamSmartspaceControllerTest.kt -packages/SystemUI/tests/src/com/android/systemui/smartspace/DreamSmartspaceControllerTest.kt

View File

@@ -24,15 +24,13 @@ import com.android.systemui.shared.navigationbar.RegionSamplingHelper.SamplingCa
import java.io.PrintWriter import java.io.PrintWriter
import java.util.concurrent.Executor import java.util.concurrent.Executor
/** /** Class for instance of RegionSamplingHelper */
* Class for instance of RegionSamplingHelper open class RegionSampler(
*/ sampledView: View?,
open class RegionSamplingInstance( mainExecutor: Executor?,
sampledView: View?, bgExecutor: Executor?,
mainExecutor: Executor?, regionSamplingEnabled: Boolean,
bgExecutor: Executor?, updateFun: UpdateColorCallback
regionSamplingEnabled: Boolean,
updateFun: UpdateColorCallback
) { ) {
private var regionDarkness = RegionDarkness.DEFAULT private var regionDarkness = RegionDarkness.DEFAULT
private var samplingBounds = Rect() private var samplingBounds = Rect()
@@ -40,23 +38,13 @@ open class RegionSamplingInstance(
@VisibleForTesting var regionSampler: RegionSamplingHelper? = null @VisibleForTesting var regionSampler: RegionSamplingHelper? = null
private var lightForegroundColor = Color.WHITE private var lightForegroundColor = Color.WHITE
private var darkForegroundColor = Color.BLACK private var darkForegroundColor = Color.BLACK
/**
* Interface for method to be passed into RegionSamplingHelper
*/
@FunctionalInterface
interface UpdateColorCallback {
/**
* Method to update the foreground colors after clock darkness changed.
*/
fun updateColors()
}
@VisibleForTesting @VisibleForTesting
open fun createRegionSamplingHelper( open fun createRegionSamplingHelper(
sampledView: View, sampledView: View,
callback: SamplingCallback, callback: SamplingCallback,
mainExecutor: Executor?, mainExecutor: Executor?,
bgExecutor: Executor? bgExecutor: Executor?
): RegionSamplingHelper { ): RegionSamplingHelper {
return RegionSamplingHelper(sampledView, callback, mainExecutor, bgExecutor) return RegionSamplingHelper(sampledView, callback, mainExecutor, bgExecutor)
} }
@@ -77,7 +65,7 @@ open class RegionSamplingInstance(
* *
* @return the determined foreground color * @return the determined foreground color
*/ */
fun currentForegroundColor(): Int{ fun currentForegroundColor(): Int {
return if (regionDarkness.isDark) { return if (regionDarkness.isDark) {
lightForegroundColor lightForegroundColor
} else { } else {
@@ -97,41 +85,37 @@ open class RegionSamplingInstance(
return regionDarkness return regionDarkness
} }
/** /** Start region sampler */
* Start region sampler
*/
fun startRegionSampler() { fun startRegionSampler() {
regionSampler?.start(samplingBounds) regionSampler?.start(samplingBounds)
} }
/** /** Stop region sampler */
* Stop region sampler
*/
fun stopRegionSampler() { fun stopRegionSampler() {
regionSampler?.stop() regionSampler?.stop()
} }
/** /** Dump region sampler */
* Dump region sampler
*/
fun dump(pw: PrintWriter) { fun dump(pw: PrintWriter) {
regionSampler?.dump(pw) regionSampler?.dump(pw)
} }
init { init {
if (regionSamplingEnabled && sampledView != null) { if (regionSamplingEnabled && sampledView != null) {
regionSampler = createRegionSamplingHelper(sampledView, regionSampler =
createRegionSamplingHelper(
sampledView,
object : SamplingCallback { object : SamplingCallback {
override fun onRegionDarknessChanged(isRegionDark: Boolean) { override fun onRegionDarknessChanged(isRegionDark: Boolean) {
regionDarkness = convertToClockDarkness(isRegionDark) regionDarkness = convertToClockDarkness(isRegionDark)
updateFun.updateColors() updateFun()
} }
/** /**
* The method getLocationOnScreen is used to obtain the view coordinates * The method getLocationOnScreen is used to obtain the view coordinates
* relative to its left and top edges on the device screen. * relative to its left and top edges on the device screen. Directly
* Directly accessing the X and Y coordinates of the view returns the * accessing the X and Y coordinates of the view returns the location
* location relative to its parent view instead. * relative to its parent view instead.
*/ */
override fun getSampledRegion(sampledView: View): Rect { override fun getSampledRegion(sampledView: View): Rect {
val screenLocation = tmpScreenLocation val screenLocation = tmpScreenLocation
sampledView.getLocationOnScreen(screenLocation) sampledView.getLocationOnScreen(screenLocation)
@@ -147,8 +131,13 @@ open class RegionSamplingInstance(
override fun isSamplingEnabled(): Boolean { override fun isSamplingEnabled(): Boolean {
return regionSamplingEnabled return regionSamplingEnabled
} }
}, mainExecutor, bgExecutor) },
mainExecutor,
bgExecutor
)
} }
regionSampler?.setWindowVisible(true) regionSampler?.setWindowVisible(true)
} }
} }
typealias UpdateColorCallback = () -> Unit

View File

@@ -38,21 +38,21 @@ import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.log.dagger.KeyguardClockLog import com.android.systemui.log.dagger.KeyguardClockLog
import com.android.systemui.plugins.ClockController import com.android.systemui.plugins.ClockController
import com.android.systemui.plugins.log.LogBuffer import com.android.systemui.plugins.log.LogBuffer
import com.android.systemui.shared.regionsampling.RegionSamplingInstance import com.android.systemui.shared.regionsampling.RegionSampler
import com.android.systemui.statusbar.policy.BatteryController import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback import com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import java.io.PrintWriter
import java.util.Locale
import java.util.TimeZone
import java.util.concurrent.Executor
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.DisposableHandle
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.io.PrintWriter
import java.util.Locale
import java.util.TimeZone
import java.util.concurrent.Executor
import javax.inject.Inject
/** /**
* Controller for a Clock provided by the registry and used on the keyguard. Instantiated by * Controller for a Clock provided by the registry and used on the keyguard. Instantiated by
@@ -142,21 +142,17 @@ open class ClockEventController @Inject constructor(
bgExecutor: Executor?, bgExecutor: Executor?,
regionSamplingEnabled: Boolean, regionSamplingEnabled: Boolean,
updateColors: () -> Unit updateColors: () -> Unit
): RegionSamplingInstance { ): RegionSampler {
return RegionSamplingInstance( return RegionSampler(
sampledView, sampledView,
mainExecutor, mainExecutor,
bgExecutor, bgExecutor,
regionSamplingEnabled, regionSamplingEnabled,
object : RegionSamplingInstance.UpdateColorCallback { updateFun = { updateColors() } )
override fun updateColors() {
updateColors()
}
})
} }
var smallRegionSampler: RegionSamplingInstance? = null var smallRegionSampler: RegionSampler? = null
var largeRegionSampler: RegionSamplingInstance? = null var largeRegionSampler: RegionSampler? = null
private var smallClockIsDark = true private var smallClockIsDark = true
private var largeClockIsDark = true private var largeClockIsDark = true

View File

@@ -48,7 +48,8 @@ import com.android.systemui.plugins.BcSmartspaceDataPlugin.SmartspaceView
import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.FalsingManager
import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.settings.UserTracker import com.android.systemui.settings.UserTracker
import com.android.systemui.shared.regionsampling.RegionSamplingInstance import com.android.systemui.shared.regionsampling.RegionSampler
import com.android.systemui.shared.regionsampling.UpdateColorCallback
import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.statusbar.phone.KeyguardBypassController
import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.DeviceProvisionedController import com.android.systemui.statusbar.policy.DeviceProvisionedController
@@ -90,8 +91,8 @@ class LockscreenSmartspaceController @Inject constructor(
// Smartspace can be used on multiple displays, such as when the user casts their screen // Smartspace can be used on multiple displays, such as when the user casts their screen
private var smartspaceViews = mutableSetOf<SmartspaceView>() private var smartspaceViews = mutableSetOf<SmartspaceView>()
private var regionSamplingInstances = private var regionSamplers =
mutableMapOf<SmartspaceView, RegionSamplingInstance>() mutableMapOf<SmartspaceView, RegionSampler>()
private val regionSamplingEnabled = private val regionSamplingEnabled =
featureFlags.isEnabled(Flags.REGION_SAMPLING) featureFlags.isEnabled(Flags.REGION_SAMPLING)
@@ -101,26 +102,22 @@ class LockscreenSmartspaceController @Inject constructor(
private var showSensitiveContentForManagedUser = false private var showSensitiveContentForManagedUser = false
private var managedUserHandle: UserHandle? = null private var managedUserHandle: UserHandle? = null
private val updateFun = object : RegionSamplingInstance.UpdateColorCallback { private val updateFun: UpdateColorCallback = { updateTextColorFromRegionSampler() }
override fun updateColors() {
updateTextColorFromRegionSampler()
}
}
var stateChangeListener = object : View.OnAttachStateChangeListener { var stateChangeListener = object : View.OnAttachStateChangeListener {
override fun onViewAttachedToWindow(v: View) { override fun onViewAttachedToWindow(v: View) {
smartspaceViews.add(v as SmartspaceView) smartspaceViews.add(v as SmartspaceView)
var regionSamplingInstance = RegionSamplingInstance( var regionSampler = RegionSampler(
v, v,
uiExecutor, uiExecutor,
bgExecutor, bgExecutor,
regionSamplingEnabled, regionSamplingEnabled,
updateFun updateFun
) )
initializeTextColors(regionSamplingInstance) initializeTextColors(regionSampler)
regionSamplingInstance.startRegionSampler() regionSampler.startRegionSampler()
regionSamplingInstances.put(v, regionSamplingInstance) regionSamplers.put(v, regionSampler)
connectSession() connectSession()
updateTextColorFromWallpaper() updateTextColorFromWallpaper()
@@ -130,9 +127,9 @@ class LockscreenSmartspaceController @Inject constructor(
override fun onViewDetachedFromWindow(v: View) { override fun onViewDetachedFromWindow(v: View) {
smartspaceViews.remove(v as SmartspaceView) smartspaceViews.remove(v as SmartspaceView)
var regionSamplingInstance = regionSamplingInstances.getValue(v) var regionSampler = regionSamplers.getValue(v)
regionSamplingInstance.stopRegionSampler() regionSampler.stopRegionSampler()
regionSamplingInstances.remove(v) regionSamplers.remove(v)
if (smartspaceViews.isEmpty()) { if (smartspaceViews.isEmpty()) {
disconnect() disconnect()
@@ -362,19 +359,19 @@ class LockscreenSmartspaceController @Inject constructor(
} }
} }
private fun initializeTextColors(regionSamplingInstance: RegionSamplingInstance) { private fun initializeTextColors(regionSampler: RegionSampler) {
val lightThemeContext = ContextThemeWrapper(context, R.style.Theme_SystemUI_LightWallpaper) val lightThemeContext = ContextThemeWrapper(context, R.style.Theme_SystemUI_LightWallpaper)
val darkColor = Utils.getColorAttrDefaultColor(lightThemeContext, R.attr.wallpaperTextColor) val darkColor = Utils.getColorAttrDefaultColor(lightThemeContext, R.attr.wallpaperTextColor)
val darkThemeContext = ContextThemeWrapper(context, R.style.Theme_SystemUI) val darkThemeContext = ContextThemeWrapper(context, R.style.Theme_SystemUI)
val lightColor = Utils.getColorAttrDefaultColor(darkThemeContext, R.attr.wallpaperTextColor) val lightColor = Utils.getColorAttrDefaultColor(darkThemeContext, R.attr.wallpaperTextColor)
regionSamplingInstance.setForegroundColors(lightColor, darkColor) regionSampler.setForegroundColors(lightColor, darkColor)
} }
private fun updateTextColorFromRegionSampler() { private fun updateTextColorFromRegionSampler() {
smartspaceViews.forEach { smartspaceViews.forEach {
val textColor = regionSamplingInstances.getValue(it).currentForegroundColor() val textColor = regionSamplers.getValue(it).currentForegroundColor()
it.setPrimaryTextColor(textColor) it.setPrimaryTextColor(textColor)
} }
} }

View File

@@ -21,61 +21,55 @@ import org.mockito.junit.MockitoJUnit
@RunWith(AndroidTestingRunner::class) @RunWith(AndroidTestingRunner::class)
@SmallTest @SmallTest
class RegionSamplingInstanceTest : SysuiTestCase() { class RegionSamplerTest : SysuiTestCase() {
@JvmField @Rule @JvmField @Rule val mockito = MockitoJUnit.rule()
val mockito = MockitoJUnit.rule()
@Mock private lateinit var sampledView: View @Mock private lateinit var sampledView: View
@Mock private lateinit var mainExecutor: Executor @Mock private lateinit var mainExecutor: Executor
@Mock private lateinit var bgExecutor: Executor @Mock private lateinit var bgExecutor: Executor
@Mock private lateinit var regionSampler: RegionSamplingHelper @Mock private lateinit var regionSampler: RegionSamplingHelper
@Mock private lateinit var updateFun: RegionSamplingInstance.UpdateColorCallback
@Mock private lateinit var pw: PrintWriter @Mock private lateinit var pw: PrintWriter
@Mock private lateinit var callback: RegionSamplingHelper.SamplingCallback @Mock private lateinit var callback: RegionSamplingHelper.SamplingCallback
private lateinit var regionSamplingInstance: RegionSamplingInstance private lateinit var mRegionSampler: RegionSampler
private var updateFun: UpdateColorCallback = {}
@Before @Before
fun setUp() { fun setUp() {
whenever(sampledView.isAttachedToWindow).thenReturn(true) whenever(sampledView.isAttachedToWindow).thenReturn(true)
whenever(regionSampler.callback).thenReturn(this@RegionSamplingInstanceTest.callback) whenever(regionSampler.callback).thenReturn(this@RegionSamplerTest.callback)
regionSamplingInstance = object : RegionSamplingInstance( mRegionSampler =
sampledView, object : RegionSampler(sampledView, mainExecutor, bgExecutor, true, updateFun) {
mainExecutor, override fun createRegionSamplingHelper(
bgExecutor,
true,
updateFun
) {
override fun createRegionSamplingHelper(
sampledView: View, sampledView: View,
callback: RegionSamplingHelper.SamplingCallback, callback: RegionSamplingHelper.SamplingCallback,
mainExecutor: Executor?, mainExecutor: Executor?,
bgExecutor: Executor? bgExecutor: Executor?
): RegionSamplingHelper { ): RegionSamplingHelper {
return this@RegionSamplingInstanceTest.regionSampler return this@RegionSamplerTest.regionSampler
}
} }
}
} }
@Test @Test
fun testStartRegionSampler() { fun testStartRegionSampler() {
regionSamplingInstance.startRegionSampler() mRegionSampler.startRegionSampler()
verify(regionSampler).start(Rect(0, 0, 0, 0)) verify(regionSampler).start(Rect(0, 0, 0, 0))
} }
@Test @Test
fun testStopRegionSampler() { fun testStopRegionSampler() {
regionSamplingInstance.stopRegionSampler() mRegionSampler.stopRegionSampler()
verify(regionSampler).stop() verify(regionSampler).stop()
} }
@Test @Test
fun testDump() { fun testDump() {
regionSamplingInstance.dump(pw) mRegionSampler.dump(pw)
verify(regionSampler).dump(pw) verify(regionSampler).dump(pw)
} }
@@ -91,23 +85,18 @@ class RegionSamplingInstanceTest : SysuiTestCase() {
@Test @Test
fun testFlagFalse() { fun testFlagFalse() {
regionSamplingInstance = object : RegionSamplingInstance( mRegionSampler =
sampledView, object : RegionSampler(sampledView, mainExecutor, bgExecutor, false, updateFun) {
mainExecutor, override fun createRegionSamplingHelper(
bgExecutor,
false,
updateFun
) {
override fun createRegionSamplingHelper(
sampledView: View, sampledView: View,
callback: RegionSamplingHelper.SamplingCallback, callback: RegionSamplingHelper.SamplingCallback,
mainExecutor: Executor?, mainExecutor: Executor?,
bgExecutor: Executor? bgExecutor: Executor?
): RegionSamplingHelper { ): RegionSamplingHelper {
return this@RegionSamplingInstanceTest.regionSampler return this@RegionSamplerTest.regionSampler
}
} }
}
Assert.assertEquals(regionSamplingInstance.regionSampler, null) Assert.assertEquals(mRegionSampler.regionSampler, null)
} }
} }