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

Commit b6a04365 authored by Selim Cinek's avatar Selim Cinek Committed by Android (Google) Code Review
Browse files

Merge "Fixed an issue where groups could stay userlocked"

parents 0267910f 817abe7e
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -827,11 +827,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
    public void onDensityOrFontScaleChanged() {
        super.onDensityOrFontScaleChanged();
        initDimens();
        if (mIsSummaryWithChildren) {
        // Let's update our childrencontainer. This is intentionally not guarded with
        // mIsSummaryWithChildren since we might have had children but not anymore.
        if (mChildrenContainer != null) {
            mChildrenContainer.reInflateViews(mExpandClickListener, mEntry.notification);
        }
        }
        if (mGuts != null) {
            View oldGuts = mGuts;
            int index = indexOfChild(oldGuts);
@@ -1496,9 +1496,11 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
    public void setUserLocked(boolean userLocked) {
        mUserLocked = userLocked;
        mPrivateLayout.setUserExpanding(userLocked);
        if (mIsSummaryWithChildren) {
        // This is intentionally not guarded with mIsSummaryWithChildren since we might have had
        // children but not anymore.
        if (mChildrenContainer != null) {
            mChildrenContainer.setUserLocked(userLocked);
            if (userLocked || !isGroupExpanded()) {
            if (mIsSummaryWithChildren && (userLocked || !isGroupExpanded())) {
                updateBackgroundForGroupState();
            }
        }
@@ -2228,4 +2230,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
            }
        }
    }

    @VisibleForTesting
    protected void setChildrenContainer(NotificationChildrenContainer childrenContainer) {
        mChildrenContainer = childrenContainer;
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.RemoteViews;
import android.widget.TextView;

import com.android.internal.annotations.VisibleForTesting;
import com.android.systemui.R;
import com.android.systemui.statusbar.CrossFadeHelper;
import com.android.systemui.statusbar.ExpandableNotificationRow;
@@ -1243,4 +1245,9 @@ public class NotificationChildrenContainer extends ViewGroup {
        }
        return getGroupExpandFraction();
    }

    @VisibleForTesting
    public boolean isUserLocked() {
        return mUserLocked;
    }
}
+24 −0
Original line number Diff line number Diff line
@@ -16,7 +16,9 @@

package com.android.systemui.statusbar;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import android.content.Context;
import android.support.test.InstrumentationRegistry;
@@ -26,6 +28,7 @@ import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.view.View;

import com.android.systemui.statusbar.stack.NotificationChildrenContainer;
import com.android.systemui.SysuiTestCase;

import org.junit.Assert;
@@ -65,4 +68,25 @@ public class ExpandableNotificationRowTest extends SysuiTestCase {
                == View.VISIBLE);
    }

    @Test
    public void testUserLockedResetEvenWhenNoChildren() {
        mGroup.setUserLocked(true);
        mGroup.removeAllChildren();
        mGroup.setUserLocked(false);
        Assert.assertFalse("The childrencontainer should not be userlocked but is, the state "
                + "seems out of sync.", mGroup.getChildrenContainer().isUserLocked());
    }

    @Test
    public void testReinflatedOnDensityChange() {
        mGroup.setUserLocked(true);
        mGroup.removeAllChildren();
        mGroup.setUserLocked(false);
        NotificationChildrenContainer mockContainer = mock(NotificationChildrenContainer.class);
        mGroup.setChildrenContainer(mockContainer);
        mGroup.onDensityOrFontScaleChanged();
        verify(mockContainer).reInflateViews(any(), any());
    }


}