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

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

Change-Id: Iab90d1c48653beca4b4bd0d85e5131a18641258a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Florence Yang
2022-10-31 23:02:35 +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/ClockRegistry.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/system/UncaughtExceptionPreHandlerManager.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/UnfoldMoveFromCenterAnimatorTest.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/system/UncaughtExceptionPreHandlerTest.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.util.concurrent.Executor
/**
* Class for instance of RegionSamplingHelper
*/
open class RegionSamplingInstance(
sampledView: View?,
mainExecutor: Executor?,
bgExecutor: Executor?,
regionSamplingEnabled: Boolean,
updateFun: UpdateColorCallback
/** Class for instance of RegionSamplingHelper */
open class RegionSampler(
sampledView: View?,
mainExecutor: Executor?,
bgExecutor: Executor?,
regionSamplingEnabled: Boolean,
updateFun: UpdateColorCallback
) {
private var regionDarkness = RegionDarkness.DEFAULT
private var samplingBounds = Rect()
@@ -40,23 +38,13 @@ open class RegionSamplingInstance(
@VisibleForTesting var regionSampler: RegionSamplingHelper? = null
private var lightForegroundColor = Color.WHITE
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
open fun createRegionSamplingHelper(
sampledView: View,
callback: SamplingCallback,
mainExecutor: Executor?,
bgExecutor: Executor?
sampledView: View,
callback: SamplingCallback,
mainExecutor: Executor?,
bgExecutor: Executor?
): RegionSamplingHelper {
return RegionSamplingHelper(sampledView, callback, mainExecutor, bgExecutor)
}
@@ -77,7 +65,7 @@ open class RegionSamplingInstance(
*
* @return the determined foreground color
*/
fun currentForegroundColor(): Int{
fun currentForegroundColor(): Int {
return if (regionDarkness.isDark) {
lightForegroundColor
} else {
@@ -97,41 +85,37 @@ open class RegionSamplingInstance(
return regionDarkness
}
/**
* Start region sampler
*/
/** Start region sampler */
fun startRegionSampler() {
regionSampler?.start(samplingBounds)
}
/**
* Stop region sampler
*/
/** Stop region sampler */
fun stopRegionSampler() {
regionSampler?.stop()
}
/**
* Dump region sampler
*/
/** Dump region sampler */
fun dump(pw: PrintWriter) {
regionSampler?.dump(pw)
}
init {
if (regionSamplingEnabled && sampledView != null) {
regionSampler = createRegionSamplingHelper(sampledView,
regionSampler =
createRegionSamplingHelper(
sampledView,
object : SamplingCallback {
override fun onRegionDarknessChanged(isRegionDark: Boolean) {
regionDarkness = convertToClockDarkness(isRegionDark)
updateFun.updateColors()
updateFun()
}
/**
* The method getLocationOnScreen is used to obtain the view coordinates
* relative to its left and top edges on the device screen.
* Directly accessing the X and Y coordinates of the view returns the
* location relative to its parent view instead.
*/
* The method getLocationOnScreen is used to obtain the view coordinates
* relative to its left and top edges on the device screen. Directly
* accessing the X and Y coordinates of the view returns the location
* relative to its parent view instead.
*/
override fun getSampledRegion(sampledView: View): Rect {
val screenLocation = tmpScreenLocation
sampledView.getLocationOnScreen(screenLocation)
@@ -147,8 +131,13 @@ open class RegionSamplingInstance(
override fun isSamplingEnabled(): Boolean {
return regionSamplingEnabled
}
}, mainExecutor, bgExecutor)
},
mainExecutor,
bgExecutor
)
}
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.plugins.ClockController
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.BatteryStateChangeCallback
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.DisposableHandle
import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.combine
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
@@ -142,21 +142,17 @@ open class ClockEventController @Inject constructor(
bgExecutor: Executor?,
regionSamplingEnabled: Boolean,
updateColors: () -> Unit
): RegionSamplingInstance {
return RegionSamplingInstance(
): RegionSampler {
return RegionSampler(
sampledView,
mainExecutor,
bgExecutor,
regionSamplingEnabled,
object : RegionSamplingInstance.UpdateColorCallback {
override fun updateColors() {
updateColors()
}
})
updateFun = { updateColors() } )
}
var smallRegionSampler: RegionSamplingInstance? = null
var largeRegionSampler: RegionSamplingInstance? = null
var smallRegionSampler: RegionSampler? = null
var largeRegionSampler: RegionSampler? = null
private var smallClockIsDark = 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.statusbar.StatusBarStateController
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.policy.ConfigurationController
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
private var smartspaceViews = mutableSetOf<SmartspaceView>()
private var regionSamplingInstances =
mutableMapOf<SmartspaceView, RegionSamplingInstance>()
private var regionSamplers =
mutableMapOf<SmartspaceView, RegionSampler>()
private val regionSamplingEnabled =
featureFlags.isEnabled(Flags.REGION_SAMPLING)
@@ -101,27 +102,23 @@ class LockscreenSmartspaceController @Inject constructor(
private var showSensitiveContentForManagedUser = false
private var managedUserHandle: UserHandle? = null
private val updateFun = object : RegionSamplingInstance.UpdateColorCallback {
override fun updateColors() {
updateTextColorFromRegionSampler()
}
}
private val updateFun: UpdateColorCallback = { updateTextColorFromRegionSampler() }
// TODO: Move logic into SmartspaceView
var stateChangeListener = object : View.OnAttachStateChangeListener {
override fun onViewAttachedToWindow(v: View) {
smartspaceViews.add(v as SmartspaceView)
var regionSamplingInstance = RegionSamplingInstance(
var regionSampler = RegionSampler(
v,
uiExecutor,
bgExecutor,
regionSamplingEnabled,
updateFun
)
initializeTextColors(regionSamplingInstance)
regionSamplingInstance.startRegionSampler()
regionSamplingInstances.put(v, regionSamplingInstance)
initializeTextColors(regionSampler)
regionSampler.startRegionSampler()
regionSamplers.put(v, regionSampler)
connectSession()
updateTextColorFromWallpaper()
@@ -131,9 +128,9 @@ class LockscreenSmartspaceController @Inject constructor(
override fun onViewDetachedFromWindow(v: View) {
smartspaceViews.remove(v as SmartspaceView)
var regionSamplingInstance = regionSamplingInstances.getValue(v)
regionSamplingInstance.stopRegionSampler()
regionSamplingInstances.remove(v)
var regionSampler = regionSamplers.getValue(v)
regionSampler.stopRegionSampler()
regionSamplers.remove(v)
if (smartspaceViews.isEmpty()) {
disconnect()
@@ -363,19 +360,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 darkColor = Utils.getColorAttrDefaultColor(lightThemeContext, R.attr.wallpaperTextColor)
val darkThemeContext = ContextThemeWrapper(context, R.style.Theme_SystemUI)
val lightColor = Utils.getColorAttrDefaultColor(darkThemeContext, R.attr.wallpaperTextColor)
regionSamplingInstance.setForegroundColors(lightColor, darkColor)
regionSampler.setForegroundColors(lightColor, darkColor)
}
private fun updateTextColorFromRegionSampler() {
smartspaceViews.forEach {
val textColor = regionSamplingInstances.getValue(it).currentForegroundColor()
val textColor = regionSamplers.getValue(it).currentForegroundColor()
it.setPrimaryTextColor(textColor)
}
}

View File

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