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:
Jeff DeCew
2022-06-14 16:51:21 +00:00
committed by Automerger Merge Worker
2 changed files with 90 additions and 0 deletions

View File

@@ -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;
}
/**

View File

@@ -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)
}
}