From b6ed63b5670e64c853ad69bc2262c6ea88535f5d Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Tue, 30 May 2017 16:17:42 -0700 Subject: [PATCH] Fix icon tint on notification shelf Public layout icon color wasn't being propagated correctly. Change-Id: I6396e8dc5a9a18f614afd0e184c99c6d799151cb Fixes: 38371661 Test: runtest -x tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java --- .../statusbar/ExpandableNotificationRow.java | 13 ++++++++++--- .../systemui/statusbar/NotificationShelf.java | 5 ++--- .../statusbar/ExpandableNotificationRowTest.java | 9 ++++++++- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index a81b140e57536..6fb5d6b8a335e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -357,15 +357,21 @@ public class ExpandableNotificationRow extends ActivatableNotificationView updateShelfIconColor(); } - private void updateShelfIconColor() { + @VisibleForTesting + void updateShelfIconColor() { StatusBarIconView expandedIcon = mEntry.expandedIcon; boolean isPreL = Boolean.TRUE.equals(expandedIcon.getTag(R.id.icon_is_pre_L)); boolean colorize = !isPreL || NotificationUtils.isGrayscale(expandedIcon, NotificationColorUtil.getInstance(mContext)); int color = StatusBarIconView.NO_COLOR; if (colorize) { - color = mEntry.getContrastedColor(mContext, mIsLowPriority && !isExpanded(), - getBackgroundColorWithoutTint()); + NotificationHeaderView header = getVisibleNotificationHeader(); + if (header != null) { + color = header.getOriginalIconColor(); + } else { + color = mEntry.getContrastedColor(mContext, mIsLowPriority && !isExpanded(), + getBackgroundColorWithoutTint()); + } } expandedIcon.setStaticDrawableColor(color); } @@ -1728,6 +1734,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView NotificationContentView showingLayout = getShowingLayout(); showingLayout.updateBackgroundColor(animated); mPrivateLayout.updateExpandButtons(isExpandable()); + updateShelfIconColor(); showingLayout.setDark(isDark(), false /* animate */, 0 /* delay */); mShowingPublicInitialized = true; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index 5cb3c1f1f7cd5..bc64f9d6e1af7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -456,9 +456,8 @@ public class NotificationShelf extends ActivatableNotificationView implements } int shelfColor = icon.getStaticDrawableColor(); if (!noIcon && shelfColor != StatusBarIconView.NO_COLOR) { - int notificationColor - = row.getVisibleNotificationHeader().getOriginalNotificationColor(); - shelfColor = NotificationUtils.interpolateColors(notificationColor, shelfColor, + int iconColor = row.getVisibleNotificationHeader().getOriginalIconColor(); + shelfColor = NotificationUtils.interpolateColors(iconColor, shelfColor, iconState.iconAppearAmount); } iconState.iconColor = shelfColor; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java index 1161987d2f2c3..d44f845478618 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/ExpandableNotificationRowTest.java @@ -18,6 +18,7 @@ package com.android.systemui.statusbar; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import android.content.Context; @@ -87,5 +88,11 @@ public class ExpandableNotificationRowTest extends SysuiTestCase { verify(mockContainer).reInflateViews(any(), any()); } - + @Test + public void testIconColorShouldBeUpdatedWhenSensitive() throws Exception { + ExpandableNotificationRow row = spy(mNotificationTestHelper.createRow()); + row.setSensitive(true, true); + row.setHideSensitive(true, false, 0, 0); + verify(row).updateShelfIconColor(); + } }