Merge "Fix content views not updating"

This commit is contained in:
TreeHugger Robot
2020-02-07 02:28:05 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 2 deletions

View File

@@ -295,6 +295,7 @@ public class NotificationRowBinderImpl implements NotificationRowBinder {
}
//TODO: Replace this API with RowContentBindParams directly
row.setNeedsRedaction(mNotificationLockscreenUserManager.needsRedaction(entry));
params.rebindAllContentViews();
mRowContentBindStage.requestRebind(entry, en -> {
row.setUsesIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
row.setUsesIncreasedHeadsUpHeight(useIncreasedHeadsUp);

View File

@@ -122,6 +122,14 @@ public final class RowContentBindParams {
return mContentViews;
}
/**
* Request that all content views be rebound. This may happen if, for example, the underlying
* layout has changed.
*/
public void rebindAllContentViews() {
mDirtyContentViews = mContentViews;
}
/**
* Clears all dirty content views so that they no longer need to be rebound.
*/

View File

@@ -67,7 +67,7 @@ public class RowContentBindStageTest extends SysuiTestCase {
}
@Test
public void testSetShouldContentViewsBeBound_bindsContent() {
public void testRequireContentViews() {
// WHEN inflation flags are set and pipeline is invalidated.
final int flags = FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED;
RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
@@ -85,7 +85,7 @@ public class RowContentBindStageTest extends SysuiTestCase {
}
@Test
public void testSetShouldContentViewsBeBound_unbindsContent() {
public void testFreeContentViews() {
// GIVEN a view with all content bound.
RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
params.requireContentViews(FLAG_CONTENT_VIEW_ALL);
@@ -99,6 +99,28 @@ public class RowContentBindStageTest extends SysuiTestCase {
verify(mBinder).unbindContent(eq(mEntry), any(), eq(flags));
}
@Test
public void testRebindAllContentViews() {
// GIVEN a view with content bound.
RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
final int flags = FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED;
params.requireContentViews(flags);
params.clearDirtyContentViews();
// WHEN we request rebind and stage executed.
params.rebindAllContentViews();
mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
// THEN binder binds inflation flags.
verify(mBinder).bindContent(
eq(mEntry),
any(),
eq(flags),
any(),
anyBoolean(),
any());
}
@Test
public void testSetUseLowPriority() {
// GIVEN a view with all content bound.