Merge "Fixed an issue where groups could stay userlocked" into oc-dev

am: e736807efd

Change-Id: I8d2bdf59d406985ac336eddcf8f868a985f30612
This commit is contained in:
Selim Cinek
2017-05-25 03:38:01 +00:00
committed by android-build-merger
3 changed files with 44 additions and 6 deletions

View File

@@ -813,10 +813,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
public void 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;
@@ -1458,9 +1458,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();
}
}
@@ -2189,4 +2191,9 @@ public class ExpandableNotificationRow extends ActivatableNotificationView
}
}
}
@VisibleForTesting
protected void setChildrenContainer(NotificationChildrenContainer childrenContainer) {
mChildrenContainer = childrenContainer;
}
}

View File

@@ -29,6 +29,7 @@ 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;
@@ -1223,4 +1224,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,8 @@ import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.view.View;
import com.android.systemui.statusbar.stack.NotificationChildrenContainer;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
@@ -65,4 +69,25 @@ public class ExpandableNotificationRowTest {
== 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());
}
}