Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3205)

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/vr_shell/VrShellTest.java

Issue 2641043002: Implement detaching the TabModelSelector from the CompositorViewHolder (Closed)
Patch Set: Fix compile Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/MockLayoutHost.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
+ }
+ }));
+ }
}
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/compositor/layouts/MockLayoutHost.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698