Merge "Reset notification shade background tints when theme changes." into tm-d1-dev am: abf75512db
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18868865 Change-Id: Ic122c03388adaf37758078998ba3a05fafdc0af6 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -151,6 +151,10 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView
|
||||
R.color.notification_ripple_tinted_color);
|
||||
mNormalRippleColor = mContext.getColor(
|
||||
R.color.notification_ripple_untinted_color);
|
||||
// Reset background color tint and override tint, as they are from an old theme
|
||||
mBgTint = NO_COLOR;
|
||||
mOverrideTint = NO_COLOR;
|
||||
mOverrideAmount = 0.0f;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright (C) 2022 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License
|
||||
*/
|
||||
package com.android.systemui.statusbar.notification.row
|
||||
|
||||
import android.annotation.ColorInt
|
||||
import android.graphics.Color
|
||||
import android.testing.AndroidTestingRunner
|
||||
import android.testing.TestableLooper.RunWithLooper
|
||||
import android.view.View
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.settingslib.Utils
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.statusbar.notification.FakeShadowView
|
||||
import com.android.systemui.statusbar.notification.NotificationUtils
|
||||
import com.android.systemui.util.mockito.mock
|
||||
import com.google.common.truth.Truth.assertThat
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner::class)
|
||||
@RunWithLooper
|
||||
class ActivatableNotificationViewTest : SysuiTestCase() {
|
||||
private val mContentView: View = mock()
|
||||
private lateinit var mView: ActivatableNotificationView
|
||||
|
||||
@ColorInt
|
||||
private var mNormalColor = 0
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
mView = object : ActivatableNotificationView(mContext, null) {
|
||||
|
||||
init {
|
||||
onFinishInflate()
|
||||
}
|
||||
|
||||
override fun getContentView(): View {
|
||||
return mContentView
|
||||
}
|
||||
|
||||
override fun <T : View> findViewTraversal(id: Int): T? = when (id) {
|
||||
R.id.backgroundNormal -> mock<NotificationBackgroundView>()
|
||||
R.id.fake_shadow -> mock<FakeShadowView>()
|
||||
else -> null
|
||||
} as T?
|
||||
}
|
||||
mNormalColor =
|
||||
Utils.getColorAttrDefaultColor(mContext, com.android.internal.R.attr.colorSurface)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testBackgroundBehaviors() {
|
||||
// Color starts with the normal color
|
||||
mView.updateBackgroundColors()
|
||||
assertThat(mView.currentBackgroundTint).isEqualTo(mNormalColor)
|
||||
|
||||
// Setting a tint changes the background to that color specifically
|
||||
mView.setTintColor(Color.BLUE)
|
||||
assertThat(mView.currentBackgroundTint).isEqualTo(Color.BLUE)
|
||||
|
||||
// Setting an override tint blends with the previous tint
|
||||
mView.setOverrideTintColor(Color.RED, 0.5f)
|
||||
assertThat(mView.currentBackgroundTint)
|
||||
.isEqualTo(NotificationUtils.interpolateColors(Color.BLUE, Color.RED, 0.5f))
|
||||
|
||||
// Updating the background colors resets tints, as those won't match the latest theme
|
||||
mView.updateBackgroundColors()
|
||||
assertThat(mView.currentBackgroundTint).isEqualTo(mNormalColor)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user