Commit a22c499f authored by Ted Choc's avatar Ted Choc Committed by Commit Bot

Revert "Attempt to deflake TabsTest#testToolbarSwipePrevTab*"

This reverts commit 76b70285.

Reason for revert:
ava.util.concurrent.TimeoutException: waitForCallback timed out!
	at org.chromium.base.test.util.CallbackHelper.waitForCallback(CallbackHelper.java:191)
	at org.chromium.base.test.util.CallbackHelper.waitForCallback(CallbackHelper.java:210)
	at org.chromium.chrome.browser.TabsTest.runToolbarSideSwipeTestOnCurrentModel(TabsTest.java:1627)
	at org.chromium.chrome.browser.TabsTest.testToolbarSwipeOnlyTab(TabsTest.java:1477)
	at java.lang.reflect.Method.invoke(Native Method)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:52)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.chromium.base.test.ScreenshotOnFailureStatement.evaluate(ScreenshotOnFailureStatement.java:37)
	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
	at org.chromium.chrome.test.ChromeActivityTestRule$1.evaluate(ChromeActivityTestRule.java:114)
	at android.support.test.internal.statement.UiThreadStatement.evaluate(UiThreadStatement.java:55)

Original change's description:
> Attempt to deflake TabsTest#testToolbarSwipePrevTab*
> 
> This patch updated the toolbar swipe tests to not depend on criteria
> helpers and operate on about:blank pages rather than the ntp. Most
> importantly, this fixes an issue where we assert tab selection before
> waiting for the callback.
> 
> Bug: 813584
> Change-Id: I1e743291add6398bc3eebc06c03c6c69cefc21f9
> Reviewed-on: https://chromium-review.googlesource.com/1044538
> Reviewed-by: Ted Choc <tedchoc@chromium.org>
> Commit-Queue: Matthew Jones <mdjones@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#556240}

TBR=tedchoc@chromium.org,mdjones@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 813584
Change-Id: I5a6e7d7f585cae58772eb2474b08b45a2d71439c
Reviewed-on: https://chromium-review.googlesource.com/1048646
Commit-Queue: Ted Choc <tedchoc@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556672}
parent e639e0c8
......@@ -36,11 +36,11 @@ import org.chromium.base.test.util.Restriction;
import org.chromium.base.test.util.RetryOnFailure;
import org.chromium.base.test.util.UrlUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
import org.chromium.chrome.browser.compositor.layouts.Layout;
import org.chromium.chrome.browser.compositor.layouts.LayoutManager;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome;
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone;
import org.chromium.chrome.browser.compositor.layouts.SceneChangeObserver;
import org.chromium.chrome.browser.compositor.layouts.StaticLayout;
import org.chromium.chrome.browser.compositor.layouts.components.LayoutTab;
import org.chromium.chrome.browser.compositor.layouts.eventfilter.EdgeSwipeHandler;
......@@ -50,13 +50,14 @@ import org.chromium.chrome.browser.compositor.layouts.phone.stack.Stack;
import org.chromium.chrome.browser.compositor.layouts.phone.stack.StackTab;
import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelObserver;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModel.TabLaunchType;
import org.chromium.chrome.browser.tabmodel.TabModel.TabSelectionType;
import org.chromium.chrome.browser.tabmodel.TabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorImpl;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModelUtils;
import org.chromium.chrome.browser.tabmodel.TabbedModeTabPersistencePolicy;
import org.chromium.chrome.browser.toolbar.ToolbarPhone;
......@@ -155,7 +156,7 @@ public class TabsTest {
|| mActivityTestRule.getName().equals("testIncognitoTabsNotRestoredAfterSwipe")) {
return;
}
mActivityTestRule.startMainActivityOnBlankPage();
mActivityTestRule.startMainActivityFromLauncher();
}
......@@ -1555,8 +1556,8 @@ public class TabsTest {
@Restriction(RESTRICTION_TYPE_NON_LOW_END_DEVICE)
@RetryOnFailure
public void testToolbarSwipeNextThenPrevTab() throws InterruptedException, TimeoutException {
ChromeTabUtils.fullyLoadUrlInNewTab(InstrumentationRegistry.getInstrumentation(),
mActivityTestRule.getActivity(), ContentUrlConstants.ABOUT_BLANK_URL, false);
ChromeTabUtils.newTabFromMenu(
InstrumentationRegistry.getInstrumentation(), mActivityTestRule.getActivity());
ChromeTabUtils.switchTabInCurrentTabModel(mActivityTestRule.getActivity(), 0);
UiUtils.settleDownUI(InstrumentationRegistry.getInstrumentation());
......@@ -1577,10 +1578,8 @@ public class TabsTest {
@RetryOnFailure
public void testToolbarSwipeNextThenPrevTabIncognito()
throws InterruptedException, TimeoutException {
ChromeTabUtils.fullyLoadUrlInNewTab(InstrumentationRegistry.getInstrumentation(),
mActivityTestRule.getActivity(), ContentUrlConstants.ABOUT_BLANK_URL, true);
ChromeTabUtils.fullyLoadUrlInNewTab(InstrumentationRegistry.getInstrumentation(),
mActivityTestRule.getActivity(), ContentUrlConstants.ABOUT_BLANK_URL, true);
mActivityTestRule.newIncognitoTabFromMenu();
mActivityTestRule.newIncognitoTabFromMenu();
ChromeTabUtils.switchTabInCurrentTabModel(mActivityTestRule.getActivity(), 0);
UiUtils.settleDownUI(InstrumentationRegistry.getInstrumentation());
......@@ -1597,42 +1596,41 @@ public class TabsTest {
private void runToolbarSideSwipeTestOnCurrentModel(ScrollDirection direction, int finalIndex,
boolean expectsSelection) throws InterruptedException, TimeoutException {
final CallbackHelper selectCallback = new CallbackHelper();
final ChromeTabbedActivity activity = mActivityTestRule.getActivity();
final int id = activity.getCurrentTabModel().getTabAt(finalIndex).getId();
final TabModelSelectorTabModelObserver observer = new TabModelSelectorTabModelObserver(
activity.getTabModelSelector()) {
final int id =
mActivityTestRule.getActivity().getCurrentTabModel().getTabAt(finalIndex).getId();
final TabModelObserver observer = new EmptyTabModelObserver() {
@Override
public void didSelectTab(Tab tab, TabSelectionType type, int lastId) {
if (tab.getId() == id) selectCallback.notifyCalled();
}
};
// Listen for changes in the layout to indicate the swipe has completed.
final CallbackHelper staticLayoutCallbackHelper = new CallbackHelper();
activity.getCompositorViewHolder().getLayoutManager().addSceneChangeObserver(
new SceneChangeObserver() {
@Override
public void onTabSelectionHinted(int tabId) {}
@Override
public void onSceneChange(Layout layout) {
if (layout instanceof StaticLayout) {
staticLayoutCallbackHelper.notifyCalled();
}
}
});
if (expectsSelection) {
ThreadUtils.runOnUiThreadBlocking(() -> {
TabModelSelector selector = mActivityTestRule.getActivity().getTabModelSelector();
for (TabModel tabModel : selector.getModels()) {
tabModel.addObserver(observer);
}
});
}
int callCount = staticLayoutCallbackHelper.getCallCount();
performToolbarSideSwipe(direction);
staticLayoutCallbackHelper.waitForCallback(callCount, 1);
if (expectsSelection) selectCallback.waitForCallback(0);
ThreadUtils.runOnUiThreadBlocking(() -> observer.destroy());
waitForStaticLayout();
Assert.assertEquals("Index after toolbar side swipe is incorrect", finalIndex,
activity.getCurrentTabModel().index());
mActivityTestRule.getActivity().getCurrentTabModel().index());
if (expectsSelection) {
selectCallback.waitForCallback(0);
ThreadUtils.runOnUiThreadBlocking(() -> {
TabModelSelector selector = mActivityTestRule.getActivity().getTabModelSelector();
for (TabModel tabModel : selector.getModels()) {
tabModel.removeObserver(observer);
}
});
}
}
private void performToolbarSideSwipe(ScrollDirection direction) {
Assert.assertTrue("Unexpected direction for side swipe " + direction,
direction == ScrollDirection.LEFT || direction == ScrollDirection.RIGHT);
......@@ -1653,6 +1651,21 @@ public class TabsTest {
TouchCommon.dragEnd(mActivityTestRule.getActivity(), toX, y, downTime);
}
private void waitForStaticLayout() throws InterruptedException {
CriteriaHelper.pollUiThread(
new Criteria("Static Layout never selected after side swipe") {
@Override
public boolean isSatisfied() {
CompositorViewHolder compositorViewHolder =
(CompositorViewHolder) mActivityTestRule.getActivity().findViewById(
R.id.compositor_view_holder);
LayoutManager layoutManager = compositorViewHolder.getLayoutManager();
return layoutManager.getActiveLayout() instanceof StaticLayout;
}
});
}
/**
* Test that swipes and tab transitions are not causing URL bar to be focused.
*/
......
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