Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6ed63b5 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

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
parent ea6c7db2
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -357,16 +357,22 @@ 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) {
            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;
    }
+2 −3
Original line number Diff line number Diff line
@@ -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;
+8 −1
Original line number Diff line number Diff line
@@ -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();
    }
}