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

Unified Diff: content/public/android/javatests/src/org/chromium/content/browser/ContentViewCoreViewAndroidDelegateTest.java

Issue 639413002: [aw] Reuse WebContents PowerSaveBlocker in fullscreen. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@testsForPowerSaver
Patch Set: Nits Created 6 years, 2 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
Index: content/public/android/javatests/src/org/chromium/content/browser/ContentViewCoreViewAndroidDelegateTest.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/ContentViewCoreViewAndroidDelegateTest.java b/content/public/android/javatests/src/org/chromium/content/browser/ContentViewCoreViewAndroidDelegateTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..f803f9ab19ab0c474cd040dc2ba7b1762d07b81e
--- /dev/null
+++ b/content/public/android/javatests/src/org/chromium/content/browser/ContentViewCoreViewAndroidDelegateTest.java
@@ -0,0 +1,223 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.content.browser;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.widget.FrameLayout;
+
+import org.chromium.content_shell_apk.ContentShellTestBase;
+import org.chromium.ui.base.ViewAndroidDelegate;
+import org.chromium.ui.base.WindowAndroid;
+
+/**
+ * This suite verifies that when {@link ContentViewCore} replaces container
+ * views then:
+ * 1. anchor views are transferred between container views
+ * 2. and the reference returned by {@link ContentViewCore#getViewAndroidDelegate()} is
+ * still valid and it will add/remove anchor views from the new container view.
+ */
+public class ContentViewCoreViewAndroidDelegateTest extends ContentShellTestBase {
+
+ private ViewAndroidDelegate mViewAndroidDelegate;
+ private ContentViewCore mContentViewCore;
+ private ViewGroup mContainerView;
+
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ mContentViewCore = new ContentViewCore(getActivity());
+ mContainerView = new FrameLayout(getActivity());
+
+ mContentViewCore.createContentViewAndroidDelegate();
+ mContentViewCore.initPopupZoomer(getActivity());
+ // This reference never changes during the duration of the tests,
+ // but can still be used to add/remove anchor views from the
+ // updated container view.
+ mViewAndroidDelegate = mContentViewCore.getViewAndroidDelegate();
+ mContentViewCore.setContainerView(mContainerView);
+ }
+
+ @SmallTest
+ public void testViewAndroidCreatedWithCorrectDelegate() {
+ mContentViewCore.createViewAndroid(
+ new WindowAndroid(getActivity().getApplicationContext()));
+ assertSame(mViewAndroidDelegate,
+ mContentViewCore.getViewAndroid().getViewAndroidDelegate());
+ }
+
+ @SmallTest
+ public void testAddAndRemoveAnchorViews() {
+ assertEquals(0, mContainerView.getChildCount());
+
+ // Add 2 anchor views
+ View anchorView1 = addAnchorViewTest(mContainerView, 1);
+ View anchorView2 = addAnchorViewTest(mContainerView, 2);
+
+ // Remove anchorView1
+ removeAnchorViewTest(mContainerView, anchorView1, 1);
+ assertSame(anchorView2, mContainerView.getChildAt(0));
+
+ // Try to remove anchorView1 again; no-op.
+ removeAnchorViewTest(mContainerView, anchorView1, 1);
+ assertSame(anchorView2, mContainerView.getChildAt(0));
+
+ // Remove anchorView2
+ removeAnchorViewTest(mContainerView, anchorView2, 0);
+ }
+
+ @SmallTest
+ public void testAddAndMoveAnchorView() {
+ // Add anchorView and set layout params
+ View anchorView = addAnchorViewTest(mContainerView, 1);
+ LayoutParams originalLayoutParams = setLayoutParams(anchorView, 0, 0);
+
+ // Move it
+ LayoutParams updatedLayoutParams = setLayoutParams(anchorView, 1, 2);
+ assertEquals(1, mContainerView.getChildCount());
+ assertFalse(areEqual(originalLayoutParams, updatedLayoutParams));
+
+ // Move it back to the original position
+ updatedLayoutParams = setLayoutParams(anchorView, 0, 0);
+ assertEquals(1, mContainerView.getChildCount());
+ assertTrue(areEqual(originalLayoutParams, updatedLayoutParams));
+ }
+
+ @SmallTest
+ public void testMovedAndRemovedAnchorViewIsNotTransferred() {
+ // Add, move and remove anchorView
+ View anchorView = addAnchorViewTest(mContainerView, 1);
+ setLayoutParams(anchorView, 1, 2);
+ removeAnchorViewTest(mContainerView, anchorView, 0);
+
+ // Replace container view
+ FrameLayout updatedContainerView = updateContainerView();
+
+ // Verify that no anchor view is transferred between containerViews
+ assertEquals(0, mContainerView.getChildCount());
+ assertEquals(0, updatedContainerView.getChildCount());
+ }
+
+ @SmallTest
+ public void testTransferAnchorView() {
+ // Add anchor view
+ View anchorView = addAnchorViewTest(mContainerView, 1);
+ LayoutParams layoutParams = anchorView.getLayoutParams();
+
+ // Replace container view
+ FrameLayout updatedContainerView = updateContainerView();
+
+ verifyAnchorViewCorrectlyTransferred(anchorView, updatedContainerView, layoutParams);
+ }
+
+ @SmallTest
+ public void testTransferMovedAnchorView() {
+ // Add anchor view and move it
+ View anchorView = addAnchorViewTest(mContainerView, 1);
+ LayoutParams layoutParams = setLayoutParams(anchorView, 1, 2);
+
+ // Replace container view
+ FrameLayout updatedContainerView = updateContainerView();
+
+ verifyAnchorViewCorrectlyTransferred(anchorView, updatedContainerView, layoutParams);
+ }
+
+ @SmallTest
+ public void testRemoveTransferedAnchorView() {
+ // Add anchor view
+ View anchorView = addAnchorViewTest(mContainerView, 1);
+
+ // Replace container view
+ FrameLayout updatedContainerView = updateContainerView();
+
+ verifyAnchorViewCorrectlyTransferred(anchorView, updatedContainerView);
+
+ // Remove transferred anchor view
+ removeAnchorViewTest(updatedContainerView, anchorView, 0);
+ }
+
+ @SmallTest
+ public void testMoveTransferedAnchorView() {
+ // Add anchor view
+ View anchorView = addAnchorViewTest(mContainerView, 1);
+ LayoutParams layoutParams = anchorView.getLayoutParams();
+
+ // Replace container view
+ FrameLayout updatedContainerView = updateContainerView();
+
+ verifyAnchorViewCorrectlyTransferred(anchorView, updatedContainerView, layoutParams);
+
+ // Move transferred anchor view
+ assertFalse(areEqual(layoutParams, setLayoutParams(anchorView, 1, 2)));
+ }
+
+ @SmallTest
+ public void testTransferMultipleMovedAnchorViews() {
+ // Add and move anchorView1
+ View anchorView1 = addAnchorViewTest(mContainerView, 1);
+ LayoutParams layoutParams1 = setLayoutParams(anchorView1, 1, 2);
+
+ // Add and move anchorView2
+ View anchorView2 = addAnchorViewTest(mContainerView, 2);
+ LayoutParams layoutParams2 = setLayoutParams(anchorView2, 2, 4);
+
+ // Replace containerView
+ FrameLayout updatedContainerView = updateContainerView();
+
+ // Verify that anchor views are transfered in the same order
+ // and with the same layout params.
+ assertEquals(0, mContainerView.getChildCount());
+ assertEquals(2, updatedContainerView.getChildCount());
+ assertSame(anchorView1, updatedContainerView.getChildAt(0));
+ assertTrue(areEqual(layoutParams1, anchorView1.getLayoutParams()));
+ assertSame(anchorView2, updatedContainerView.getChildAt(1));
+ assertTrue(areEqual(layoutParams2, anchorView2.getLayoutParams()));
+ }
+
+ private View addAnchorViewTest(ViewGroup containerView, int expectedCount) {
+ View anchorView = mViewAndroidDelegate.acquireAnchorView();
+ assertEquals(expectedCount, containerView.getChildCount());
+ assertSame(anchorView, containerView.getChildAt(expectedCount - 1));
+ return anchorView;
+ }
+
+ private void removeAnchorViewTest(
+ ViewGroup containerView, View anchorView1, int expectedCount) {
+ mViewAndroidDelegate.releaseAnchorView(anchorView1);
+ assertEquals(expectedCount, containerView.getChildCount());
+ }
+
+ private LayoutParams setLayoutParams(View anchorView,
+ int coordinatesValue, int dimensionsValue) {
+ mViewAndroidDelegate.setAnchorViewPosition(anchorView, coordinatesValue, coordinatesValue,
+ dimensionsValue, dimensionsValue);
+ return anchorView.getLayoutParams();
+ }
+
+ private FrameLayout updateContainerView() {
+ FrameLayout updatedContainerView = new FrameLayout(getActivity());
+ mContentViewCore.setContainerView(updatedContainerView);
+ return updatedContainerView;
+ }
+
+ private void verifyAnchorViewCorrectlyTransferred(View anchorView,
+ FrameLayout updatedContainerView, LayoutParams expectedParams) {
+ assertTrue(areEqual(expectedParams, anchorView.getLayoutParams()));
+ verifyAnchorViewCorrectlyTransferred(anchorView, updatedContainerView);
+ }
+
+ private void verifyAnchorViewCorrectlyTransferred(View anchorView,
+ FrameLayout updatedContainerView) {
+ assertEquals(0, mContainerView.getChildCount());
+ assertEquals(1, updatedContainerView.getChildCount());
+ assertSame(anchorView, updatedContainerView.getChildAt(0));
+ }
+
+ private boolean areEqual(LayoutParams params1, LayoutParams params2) {
+ return params1.height == params2.height && params1.width == params2.width;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698