Commit da56583d authored by Yue Zhang's avatar Yue Zhang Committed by Commit Bot

Disable updating for drag-and-drop when calculating layout

Bug: 1004170, 995678
Change-Id: I53c9941694272dc3da944141f51823bf58205f0b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1807553Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Yue Zhang <yuezhanggg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#696913}
parent 2b5c30c3
...@@ -154,7 +154,7 @@ public class TabGridItemTouchHelperCallback extends ItemTouchHelper.SimpleCallba ...@@ -154,7 +154,7 @@ public class TabGridItemTouchHelperCallback extends ItemTouchHelper.SimpleCallba
if (mHoveredTabIndex != TabModel.INVALID_TAB_INDEX && mActionsOnAllRelatedTabs) { if (mHoveredTabIndex != TabModel.INVALID_TAB_INDEX && mActionsOnAllRelatedTabs) {
RecyclerView.ViewHolder selectedViewHolder = RecyclerView.ViewHolder selectedViewHolder =
mRecyclerView.findViewHolderForAdapterPosition(mSelectedTabIndex); mRecyclerView.findViewHolderForAdapterPosition(mSelectedTabIndex);
if (selectedViewHolder != null) { if (selectedViewHolder != null && !mRecyclerView.isComputingLayout()) {
View selectedItemView = selectedViewHolder.itemView; View selectedItemView = selectedViewHolder.itemView;
onTabMergeToGroup(mSelectedTabIndex, mHoveredTabIndex); onTabMergeToGroup(mSelectedTabIndex, mHoveredTabIndex);
mRecyclerView.getLayoutManager().removeView(selectedItemView); mRecyclerView.getLayoutManager().removeView(selectedItemView);
...@@ -173,7 +173,7 @@ public class TabGridItemTouchHelperCallback extends ItemTouchHelper.SimpleCallba ...@@ -173,7 +173,7 @@ public class TabGridItemTouchHelperCallback extends ItemTouchHelper.SimpleCallba
.getCurrentTabModelFilter(); .getCurrentTabModelFilter();
RecyclerView.ViewHolder ungroupViewHolder = RecyclerView.ViewHolder ungroupViewHolder =
mRecyclerView.findViewHolderForAdapterPosition(mUnGroupTabIndex); mRecyclerView.findViewHolderForAdapterPosition(mUnGroupTabIndex);
if (ungroupViewHolder != null) { if (ungroupViewHolder != null && !mRecyclerView.isComputingLayout()) {
View ungroupItemView = ungroupViewHolder.itemView; View ungroupItemView = ungroupViewHolder.itemView;
filter.moveTabOutOfGroup( filter.moveTabOutOfGroup(
mModel.get(mUnGroupTabIndex).model.get(TabProperties.TAB_ID)); mModel.get(mUnGroupTabIndex).model.get(TabProperties.TAB_ID));
......
...@@ -391,6 +391,33 @@ public class TabGridItemTouchHelperCallbackUnitTest { ...@@ -391,6 +391,33 @@ public class TabGridItemTouchHelperCallbackUnitTest {
assertThat(mModel.get(1).model.get(TabProperties.ALPHA), equalTo(1f)); assertThat(mModel.get(1).model.get(TabProperties.ALPHA), equalTo(1f));
} }
@Test
public void onReleaseTab_Merge_Scrolling() {
initAndAssertAllProperties();
// Simulate the selection of card#2 in TabListModel.
mModel.get(1).model.set(TabProperties.CARD_ANIMATION_STATUS,
ClosableTabGridView.AnimationStatus.SELECTED_CARD_ZOOM_IN);
mModel.get(1).model.set(TabProperties.ALPHA, 0.8f);
mItemTouchHelperCallback.setSelectedTabIndexForTesting(POSITION2);
// Simulate hovering on card#1.
mItemTouchHelperCallback.setHoveredTabIndexForTesting(POSITION1);
// Simulate that the recyclerView is scrolling when the drop-to-merge happens.
when(mRecyclerView.isComputingLayout()).thenReturn(true);
mItemTouchHelperCallback.onSelectedChanged(
mMockViewHolder2, ItemTouchHelper.ACTION_STATE_IDLE);
verify(mGridLayoutManager, never()).removeView(mItemView2);
verify(mTabGroupModelFilter, never()).mergeTabsToGroup(TAB2_ID, TAB1_ID);
verify(mTracker, never()).notifyEvent(eq(EventConstants.TAB_DRAG_AND_DROP_TO_GROUP));
assertThat(mModel.get(1).model.get(TabProperties.CARD_ANIMATION_STATUS),
equalTo(ClosableTabGridView.AnimationStatus.SELECTED_CARD_ZOOM_OUT));
assertThat(mModel.get(1).model.get(TabProperties.ALPHA), equalTo(1f));
}
@Test @Test
public void onReleaseTab_UngroupBar_Hide() { public void onReleaseTab_UngroupBar_Hide() {
initAndAssertAllProperties(); initAndAssertAllProperties();
...@@ -419,6 +446,25 @@ public class TabGridItemTouchHelperCallbackUnitTest { ...@@ -419,6 +446,25 @@ public class TabGridItemTouchHelperCallbackUnitTest {
verify(mGridLayoutManager).removeView(mItemView1); verify(mGridLayoutManager).removeView(mItemView1);
} }
@Test
public void onReleaseTab_Ungroup_Scrolling() {
initAndAssertAllProperties();
setupItemTouchHelperCallback(true);
mItemTouchHelperCallback.setUnGroupTabIndexForTesting(POSITION1);
// Simulate that the recyclerView is scrolling when the drop-to-ungroup happens.
when(mRecyclerView.isComputingLayout()).thenReturn(true);
mItemTouchHelperCallback.onSelectedChanged(
mMockViewHolder1, ItemTouchHelper.ACTION_STATE_IDLE);
verify(mTabGroupModelFilter, never()).moveTabOutOfGroup(TAB1_ID);
verify(mTabGridDialogHandler)
.updateUngroupBarStatus(TabGridDialogParent.UngroupBarStatus.HIDE);
verify(mGridLayoutManager, never()).removeView(mItemView1);
}
@Test @Test
public void onReleaseTab_Ungroup_CleanOut() { public void onReleaseTab_Ungroup_CleanOut() {
initAndAssertAllProperties(); initAndAssertAllProperties();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment