| Index: android_webview/javatests/src/org/chromium/android_webview/test/AwContentsAnchorViewTest.java | 
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsAnchorViewTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsAnchorViewTest.java | 
| index 0e2c68dc738ecc3e537d42cac8f1add663b9c054..c688b39cbfaad577acff4250c7738a72cc49a132 100644 | 
| --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsAnchorViewTest.java | 
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsAnchorViewTest.java | 
| @@ -12,7 +12,7 @@ import android.widget.FrameLayout; | 
|  | 
| import org.chromium.android_webview.AwViewAndroidDelegate; | 
| import org.chromium.base.test.util.Feature; | 
| -import org.chromium.ui.base.ViewAndroidDelegate; | 
| +import org.chromium.content.browser.RenderCoordinates; | 
| import org.chromium.ui.gfx.DeviceDisplayInfo; | 
|  | 
| /** | 
| @@ -20,23 +20,65 @@ import org.chromium.ui.gfx.DeviceDisplayInfo; | 
| */ | 
| public class AwContentsAnchorViewTest extends AwTestBase { | 
|  | 
| -    private TestAwContentsClient mContentsClient = new TestAwContentsClient(); | 
| +    private FrameLayout mContainerView; | 
| +    private AwViewAndroidDelegate mViewDelegate; | 
| + | 
| +    @Override | 
| +    public void setUp() throws Exception { | 
| +        super.setUp(); | 
| +        mContainerView = new FrameLayout(getActivity()); | 
| +        mViewDelegate = new AwViewAndroidDelegate(mContainerView, new RenderCoordinates()); | 
| +    } | 
| + | 
| +    @Feature({"AndroidWebView"}) | 
| +    @SmallTest | 
| +    @UiThreadTest | 
| +    public void testAddAndRemoveAnchorViews() { | 
| +        // Add 2 anchor views | 
| +        View anchorView1 = addAnchorView(); | 
| +        View anchorView2 = addAnchorView(); | 
| + | 
| +        // Remove anchorView1 | 
| +        removeAnchorView(anchorView1); | 
| + | 
| +        // Try to remove anchorView1 again; no-op. | 
| +        removeAnchorView(anchorView1); | 
| + | 
| +        // Remove anchorView2 | 
| +        removeAnchorView(anchorView2); | 
| +    } | 
| + | 
| +    @Feature({"AndroidWebView"}) | 
| +    @SmallTest | 
| +    @UiThreadTest | 
| +    public void testAddAndMoveAnchorView() { | 
| +        // Add anchorView and set layout params | 
| +        View anchorView = addAnchorView(); | 
| +        LayoutParams originalLayoutParams = setLayoutParams(anchorView, 0, 0); | 
| + | 
| +        // Move it | 
| +        LayoutParams updatedLayoutParams = setLayoutParams(anchorView, 1, 2); | 
| +        assertFalse(areEqual(originalLayoutParams, updatedLayoutParams)); | 
| + | 
| +        // Move it back to the original position | 
| +        updatedLayoutParams = setLayoutParams(anchorView, 0, 0); | 
| +        assertTrue(areEqual(originalLayoutParams, updatedLayoutParams)); | 
| +    } | 
|  | 
| @Feature({"AndroidWebView"}) | 
| @SmallTest | 
| @UiThreadTest | 
| public void testMovedAndRemovedAnchorViewIsNotTransferred() throws Throwable { | 
| // Add, move and remove anchorView | 
| -        AwTestContainerView containerView = createAwTestContainerViewOnMainSync(mContentsClient); | 
| -        View anchorView = addAnchorView(containerView); | 
| -        setLayoutParams(containerView, anchorView, 1, 2); | 
| -        removeAnchorView(containerView, anchorView); | 
| +        View anchorView = addAnchorView(); | 
| +        setLayoutParams(anchorView, 1, 2); | 
| +        removeAnchorView(anchorView); | 
|  | 
| // Replace container view | 
| -        FrameLayout updatedContainerView = updateContainerView(containerView); | 
| +        FrameLayout updatedContainerView = updateContainerView(); | 
|  | 
| // Verify that no anchor view is transferred between containerViews | 
| -        assertFalse(isViewInContainer(containerView, anchorView)); | 
| +        assertFalse(isViewInContainer(mContainerView, anchorView)); | 
| assertFalse(isViewInContainer(updatedContainerView, anchorView)); | 
| } | 
|  | 
| @@ -45,14 +87,13 @@ public class AwContentsAnchorViewTest extends AwTestBase { | 
| @UiThreadTest | 
| public void testTransferAnchorView() throws Throwable { | 
| // Add anchor view | 
| -        AwTestContainerView containerView = createAwTestContainerViewOnMainSync(mContentsClient); | 
| -        View anchorView = addAnchorView(containerView); | 
| +        View anchorView = addAnchorView(); | 
| LayoutParams layoutParams = anchorView.getLayoutParams(); | 
|  | 
| // Replace container view | 
| -        FrameLayout updatedContainerView = updateContainerView(containerView); | 
| +        FrameLayout updatedContainerView = updateContainerView(); | 
| verifyAnchorViewCorrectlyTransferred( | 
| -                containerView, anchorView, updatedContainerView, layoutParams); | 
| +                mContainerView, anchorView, updatedContainerView, layoutParams); | 
| } | 
|  | 
| @Feature({"AndroidWebView"}) | 
| @@ -60,15 +101,14 @@ public class AwContentsAnchorViewTest extends AwTestBase { | 
| @UiThreadTest | 
| public void testTransferMovedAnchorView() throws Throwable { | 
| // Add anchor view and move it | 
| -        AwTestContainerView containerView = createAwTestContainerViewOnMainSync(mContentsClient); | 
| -        View anchorView = addAnchorView(containerView); | 
| -        LayoutParams layoutParams = setLayoutParams(containerView, anchorView, 1, 2); | 
| +        View anchorView = addAnchorView(); | 
| +        LayoutParams layoutParams = setLayoutParams(anchorView, 1, 2); | 
|  | 
| // Replace container view | 
| -        FrameLayout updatedContainerView = updateContainerView(containerView); | 
| +        FrameLayout updatedContainerView = updateContainerView(); | 
|  | 
| verifyAnchorViewCorrectlyTransferred( | 
| -                containerView, anchorView, updatedContainerView, layoutParams); | 
| +                mContainerView, anchorView, updatedContainerView, layoutParams); | 
| } | 
|  | 
| @Feature({"AndroidWebView"}) | 
| @@ -76,16 +116,15 @@ public class AwContentsAnchorViewTest extends AwTestBase { | 
| @UiThreadTest | 
| public void testRemoveTransferedAnchorView() throws Throwable { | 
| // Add anchor view | 
| -        AwTestContainerView containerView = createAwTestContainerViewOnMainSync(mContentsClient); | 
| -        View anchorView = addAnchorView(containerView); | 
| +        View anchorView = addAnchorView(); | 
|  | 
| // Replace container view | 
| -        FrameLayout updatedContainerView = updateContainerView(containerView); | 
| +        FrameLayout updatedContainerView = updateContainerView(); | 
|  | 
| -        verifyAnchorViewCorrectlyTransferred(containerView, anchorView, updatedContainerView); | 
| +        verifyAnchorViewCorrectlyTransferred(mContainerView, anchorView, updatedContainerView); | 
|  | 
| // Remove transferred anchor view | 
| -        removeAnchorView(containerView, anchorView); | 
| +        removeAnchorView(anchorView); | 
| } | 
|  | 
| @Feature({"AndroidWebView"}) | 
| @@ -93,18 +132,17 @@ public class AwContentsAnchorViewTest extends AwTestBase { | 
| @UiThreadTest | 
| public void testMoveTransferedAnchorView() throws Throwable { | 
| // Add anchor view | 
| -        AwTestContainerView containerView = createAwTestContainerViewOnMainSync(mContentsClient); | 
| -        View anchorView = addAnchorView(containerView); | 
| +        View anchorView = addAnchorView(); | 
| LayoutParams layoutParams = anchorView.getLayoutParams(); | 
|  | 
| // Replace container view | 
| -        FrameLayout updatedContainerView = updateContainerView(containerView); | 
| +        FrameLayout updatedContainerView = updateContainerView(); | 
|  | 
| verifyAnchorViewCorrectlyTransferred( | 
| -                containerView, anchorView, updatedContainerView, layoutParams); | 
| +                mContainerView, anchorView, updatedContainerView, layoutParams); | 
|  | 
| // Move transferred anchor view | 
| -        assertFalse(areEqual(layoutParams, setLayoutParams(containerView, anchorView, 1, 2))); | 
| +        assertFalse(areEqual(layoutParams, setLayoutParams(anchorView, 1, 2))); | 
| } | 
|  | 
| @Feature({"AndroidWebView"}) | 
| @@ -112,50 +150,47 @@ public class AwContentsAnchorViewTest extends AwTestBase { | 
| @UiThreadTest | 
| public void testTransferMultipleMovedAnchorViews() throws Throwable { | 
| // Add and move anchorView1 | 
| -        AwTestContainerView containerView = createAwTestContainerViewOnMainSync(mContentsClient); | 
| -        View anchorView1 = addAnchorView(containerView); | 
| -        LayoutParams layoutParams1 = setLayoutParams(containerView, anchorView1, 1, 2); | 
| +        View anchorView1 = addAnchorView(); | 
| +        LayoutParams layoutParams1 = setLayoutParams(anchorView1, 1, 2); | 
|  | 
| // Add and move anchorView2 | 
| -        View anchorView2 = addAnchorView(containerView); | 
| -        LayoutParams layoutParams2 = setLayoutParams(containerView, anchorView2, 2, 4); | 
| +        View anchorView2 = addAnchorView(); | 
| +        LayoutParams layoutParams2 = setLayoutParams(anchorView2, 2, 4); | 
|  | 
| // Replace containerView | 
| -        FrameLayout updatedContainerView = updateContainerView(containerView); | 
| +        FrameLayout updatedContainerView = updateContainerView(); | 
|  | 
| // Verify that anchor views are transfered with the same layout params. | 
| -        assertFalse(isViewInContainer(containerView, anchorView1)); | 
| -        assertFalse(isViewInContainer(containerView, anchorView2)); | 
| +        assertFalse(isViewInContainer(mContainerView, anchorView1)); | 
| +        assertFalse(isViewInContainer(mContainerView, anchorView2)); | 
| assertTrue(isViewInContainer(updatedContainerView, anchorView1)); | 
| assertTrue(isViewInContainer(updatedContainerView, anchorView2)); | 
| assertTrue(areEqual(layoutParams1, anchorView1.getLayoutParams())); | 
| assertTrue(areEqual(layoutParams2, anchorView2.getLayoutParams())); | 
| } | 
|  | 
| -    private static View addAnchorView(AwTestContainerView containerView) { | 
| -        View anchorView = getViewDelegate(containerView).acquireView(); | 
| -        assertTrue(isViewInContainer(containerView, anchorView)); | 
| +    private View addAnchorView() { | 
| +        View anchorView = mViewDelegate.acquireView(); | 
| +        assertTrue(isViewInContainer(mContainerView, anchorView)); | 
| return anchorView; | 
| } | 
|  | 
| -    private static void removeAnchorView(AwTestContainerView containerView, View anchorView) { | 
| -        getViewDelegate(containerView).removeView(anchorView); | 
| -        assertFalse(isViewInContainer(containerView, anchorView)); | 
| +    private void removeAnchorView(View anchorView) { | 
| +        mViewDelegate.removeView(anchorView); | 
| +        assertFalse(isViewInContainer(mContainerView, anchorView)); | 
| } | 
|  | 
| -    private static LayoutParams setLayoutParams(AwTestContainerView containerView, View anchorView, | 
| -                int coords, int dimension) { | 
| -        ViewAndroidDelegate delegate = getViewDelegate(containerView); | 
| -        float scale = (float) DeviceDisplayInfo.create(containerView.getContext()).getDIPScale(); | 
| -        delegate.setViewPosition(anchorView, coords, coords, dimension, dimension, scale, 10, 10); | 
| +    private LayoutParams setLayoutParams(View anchorView, int coords, int dimension) { | 
| +        float scale = (float) DeviceDisplayInfo.create(mContainerView.getContext()).getDIPScale(); | 
| +        mViewDelegate.setViewPosition( | 
| +                anchorView, coords, coords, dimension, dimension, scale, 10, 10); | 
| return anchorView.getLayoutParams(); | 
| } | 
|  | 
| -    private FrameLayout updateContainerView(AwTestContainerView oldContainerView) { | 
| +    private FrameLayout updateContainerView() throws InterruptedException { | 
| FrameLayout containerView  = new FrameLayout(getActivity()); | 
| getActivity().addView(containerView); | 
| -        AwViewAndroidDelegate delegate = (AwViewAndroidDelegate) getViewDelegate(oldContainerView); | 
| -        delegate.updateCurrentContainerView(containerView); | 
| +        mViewDelegate.updateCurrentContainerView(containerView); | 
| return containerView; | 
| } | 
|  | 
| @@ -179,8 +214,4 @@ public class AwContentsAnchorViewTest extends AwTestBase { | 
| private static boolean isViewInContainer(FrameLayout containerView, View view) { | 
| return containerView.indexOfChild(view) != -1; | 
| } | 
| - | 
| -    private static ViewAndroidDelegate getViewDelegate(AwTestContainerView containerView) { | 
| -        return containerView.getAwContents().getContentViewCore().getViewAndroidDelegate(); | 
| -    } | 
| } | 
|  |