Merge "Fixed an issue where groups could stay userlocked"

This commit is contained in:
Selim Cinek
2017-05-25 03:27:42 +00:00
committed by Android (Google) Code Review
3 changed files with 44 additions and 6 deletions

View File

@@ -827,10 +827,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
public void onDensityOrFontScaleChanged() {
super.onDensityOrFontScaleChanged();
initDimens();
if (mIsSummaryWithChildren) {
if (mChildrenContainer != null) {
mChildrenContainer.reInflateViews(mExpandClickListener, mEntry.notification);
}
// 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;
@@ -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;
}
}

View File

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

View File

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