| Index: chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java
|
| index a1cee75f88235dd5ad9cc3769c901c3d5cebdd4f..5bc8e11d0d38d0dc024ccaf958b3d388387483ec 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java
|
| @@ -10,15 +10,27 @@ import static org.chromium.chrome.test.util.ChromeRestriction.RESTRICTION_TYPE_N
|
| import android.content.pm.ActivityInfo;
|
| import android.support.test.filters.MediumTest;
|
| import android.support.test.filters.SmallTest;
|
| +import android.view.ViewGroup;
|
|
|
| +import org.chromium.base.ThreadUtils;
|
| import org.chromium.base.test.util.CommandLineFlags;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.base.test.util.FlakyTest;
|
| import org.chromium.base.test.util.Restriction;
|
| +import org.chromium.base.test.util.RetryOnFailure;
|
| +import org.chromium.chrome.R;
|
| +import org.chromium.chrome.browser.compositor.CompositorViewHolder;
|
| +import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
| import org.chromium.chrome.test.ChromeTabbedActivityTestBase;
|
| import org.chromium.chrome.test.util.RenderUtils.ViewRenderer;
|
| +import org.chromium.content.browser.ContentViewCore;
|
| +import org.chromium.content.browser.test.util.Criteria;
|
| +import org.chromium.content.browser.test.util.CriteriaHelper;
|
|
|
| import java.io.IOException;
|
| +import java.util.concurrent.Callable;
|
| +import java.util.concurrent.TimeoutException;
|
| +import java.util.concurrent.atomic.AtomicReference;
|
|
|
| /**
|
| * Instrumentation tests for VR Shell (Chrome VR)
|
| @@ -177,4 +189,62 @@ public class VrShellTest extends ChromeTabbedActivityTestBase {
|
| public void testEnterExitVrModeUnsupportedImage() throws IOException {
|
| enterExitVrModeImage(false);
|
| }
|
| +
|
| + /**
|
| + * Verify that resizing the CompositorViewHolder does not cause the current tab to resize while
|
| + * the CompositorViewHolder is detached from the TabModelSelector. See crbug.com/680240.
|
| + * @throws InterruptedException
|
| + * @throws TimeoutException
|
| + */
|
| + @SmallTest
|
| + @RetryOnFailure
|
| + public void testResizeWithCompositorViewHolderDetached()
|
| + throws InterruptedException, TimeoutException {
|
| + final AtomicReference<TabModelSelector> selector = new AtomicReference<>();
|
| + final AtomicReference<Integer> oldWidth = new AtomicReference<>();
|
| + final int testWidth = 123;
|
| + final ContentViewCore cvc = getActivity().getActivityTab().getActiveContentViewCore();
|
| +
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + CompositorViewHolder compositorViewHolder = (CompositorViewHolder)
|
| + getActivity().findViewById(R.id.compositor_view_holder);
|
| + selector.set(compositorViewHolder.detachForVR());
|
| + oldWidth.set(cvc.getViewportWidthPix());
|
| +
|
| + ViewGroup.LayoutParams layoutParams = compositorViewHolder.getLayoutParams();
|
| + layoutParams.width = testWidth;
|
| + layoutParams.height = 456;
|
| + compositorViewHolder.requestLayout();
|
| + }
|
| + });
|
| + CriteriaHelper.pollUiThread(Criteria.equals(testWidth, new Callable<Integer>() {
|
| + @Override
|
| + public Integer call() {
|
| + return getActivity().findViewById(R.id.compositor_view_holder).getMeasuredWidth();
|
| + }
|
| + }));
|
| +
|
| + assertEquals("Viewport width should not have changed when resizing a detached "
|
| + + "CompositorViewHolder",
|
| + cvc.getViewportWidthPix(),
|
| + oldWidth.get().intValue());
|
| +
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + CompositorViewHolder compositorViewHolder = (CompositorViewHolder) getActivity()
|
| + .findViewById(R.id.compositor_view_holder);
|
| + compositorViewHolder.onExitVR(selector.get());
|
| + }
|
| + });
|
| +
|
| + CriteriaHelper.pollUiThread(Criteria.equals(testWidth, new Callable<Integer>() {
|
| + @Override
|
| + public Integer call() {
|
| + return cvc.getViewportWidthPix();
|
| + }
|
| + }));
|
| + }
|
| }
|
|
|