OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.content.browser; | 5 package org.chromium.content.browser; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.graphics.Bitmap; | 8 import android.graphics.Bitmap; |
9 import android.graphics.Canvas; | 9 import android.graphics.Canvas; |
10 import android.graphics.Rect; | 10 import android.graphics.Rect; |
11 import android.os.SystemClock; | 11 import android.os.SystemClock; |
12 import android.support.test.filters.SmallTest; | 12 import android.support.test.filters.SmallTest; |
13 import android.view.MotionEvent; | 13 import android.view.MotionEvent; |
14 import android.view.View; | 14 import android.view.View; |
15 | 15 |
16 import org.chromium.base.test.util.Feature; | 16 import org.chromium.base.test.util.Feature; |
17 import org.chromium.content.browser.input.ImeAdapter; | 17 import org.chromium.content.browser.input.ImeAdapter; |
18 import org.chromium.content.browser.input.TestImeAdapterDelegate; | 18 import org.chromium.content.browser.input.TestImeAdapterDelegate; |
19 import org.chromium.content.browser.test.util.TestInputMethodManagerWrapper; | 19 import org.chromium.content.browser.test.util.TestInputMethodManagerWrapper; |
20 import org.chromium.content_public.browser.WebContents; | |
21 import org.chromium.content_shell_apk.ContentShellTestBase; | 20 import org.chromium.content_shell_apk.ContentShellTestBase; |
22 | 21 |
23 import java.util.concurrent.Callable; | |
24 import java.util.concurrent.FutureTask; | |
25 | |
26 /** | 22 /** |
27 * Tests for PopupZoomer. | 23 * Tests for PopupZoomer. |
28 */ | 24 */ |
29 public class PopupZoomerTest extends ContentShellTestBase { | 25 public class PopupZoomerTest extends ContentShellTestBase { |
30 private CustomCanvasPopupZoomer mPopupZoomer; | 26 private CustomCanvasPopupZoomer mPopupZoomer; |
31 private ContentViewCore mContentViewCore; | 27 private ContentViewCore mContentViewCore; |
32 | 28 |
33 private static class CustomCanvasPopupZoomer extends PopupZoomer { | 29 private static class CustomCanvasPopupZoomer extends PopupZoomer { |
34 Canvas mCanvas; | 30 Canvas mCanvas; |
35 long mPendingDraws = 0; | 31 long mPendingDraws = 0; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 MotionEvent.obtain(downEvent, downEvent, MotionEvent.ACTION_DOWN
, x, y, 0)); | 73 MotionEvent.obtain(downEvent, downEvent, MotionEvent.ACTION_DOWN
, x, y, 0)); |
78 view.onTouchEvent( | 74 view.onTouchEvent( |
79 MotionEvent.obtain(downEvent, downEvent + 10, MotionEvent.ACTION
_UP, x, y, 0)); | 75 MotionEvent.obtain(downEvent, downEvent + 10, MotionEvent.ACTION
_UP, x, y, 0)); |
80 } | 76 } |
81 | 77 |
82 @Override | 78 @Override |
83 public void setUp() throws Exception { | 79 public void setUp() throws Exception { |
84 super.setUp(); | 80 super.setUp(); |
85 mPopupZoomer = createPopupZoomerForTest(getInstrumentation().getTargetCo
ntext()); | 81 mPopupZoomer = createPopupZoomerForTest(getInstrumentation().getTargetCo
ntext()); |
86 mContentViewCore = new ContentViewCore(getActivity(), ""); | 82 mContentViewCore = new ContentViewCore(getActivity(), ""); |
87 | 83 ImeAdapter imeAdapter = new ImeAdapter(new TestInputMethodManagerWrapper
(mContentViewCore), |
88 // Use CVC from shell base for necessary but uninitialized parts, such a
s container view | 84 new TestImeAdapterDelegate(getContentViewCore().getContainerView
())); |
89 // or web contents. This still works since they are checked only the ini
t step, | 85 mContentViewCore.setSelectionPopupControllerForTesting( |
90 // not actually used in the tests themselves. | 86 new SelectionPopupController(getActivity(), null, null, null, |
91 ImeAdapter imeAdapter = createImeAdapterOnUiThread(getContentViewCore().
getWebContents()); | 87 mContentViewCore.getRenderCoordinates(), imeAdapter)); |
92 mContentViewCore.setSelectionPopupControllerForTesting(new SelectionPopu
pController( | |
93 getActivity(), null, null, null, mContentViewCore.getRenderCoord
inates())); | |
94 mContentViewCore.setPopupZoomerForTest(mPopupZoomer); | 88 mContentViewCore.setPopupZoomerForTest(mPopupZoomer); |
95 mContentViewCore.setImeAdapterForTest(imeAdapter); | 89 mContentViewCore.setImeAdapterForTest(imeAdapter); |
96 } | 90 } |
97 | 91 |
98 private ImeAdapter createImeAdapterOnUiThread(final WebContents webContents)
throws Exception { | |
99 // WebContents should be handled on UI thread. | |
100 FutureTask<ImeAdapter> task = new FutureTask<>(new Callable<ImeAdapter>(
) { | |
101 @Override | |
102 public ImeAdapter call() { | |
103 return new ImeAdapter(webContents, | |
104 new TestInputMethodManagerWrapper(mContentViewCore), | |
105 new TestImeAdapterDelegate(getContentViewCore().getConta
inerView())); | |
106 } | |
107 | |
108 }); | |
109 getInstrumentation().runOnMainSync(task); | |
110 return task.get(); | |
111 } | |
112 | |
113 @SmallTest | 92 @SmallTest |
114 @Feature({"Navigation"}) | 93 @Feature({"Navigation"}) |
115 public void testDefaultCreateState() throws Exception { | 94 public void testDefaultCreateState() throws Exception { |
116 assertEquals(View.INVISIBLE, mPopupZoomer.getVisibility()); | 95 assertEquals(View.INVISIBLE, mPopupZoomer.getVisibility()); |
117 assertFalse(mPopupZoomer.isShowing()); | 96 assertFalse(mPopupZoomer.isShowing()); |
118 } | 97 } |
119 | 98 |
120 @SmallTest | 99 @SmallTest |
121 @Feature({"Navigation"}) | 100 @Feature({"Navigation"}) |
122 public void testShowWithoutBitmap() throws Exception { | 101 public void testShowWithoutBitmap() throws Exception { |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 mContentViewCore.onFocusChanged(false, true); | 204 mContentViewCore.onFocusChanged(false, true); |
226 | 205 |
227 // Wait for the hide animation to finish. | 206 // Wait for the hide animation to finish. |
228 mPopupZoomer.finishPendingDraws(); | 207 mPopupZoomer.finishPendingDraws(); |
229 | 208 |
230 // Now that another view has been focused, the view should be invisible. | 209 // Now that another view has been focused, the view should be invisible. |
231 assertEquals(View.INVISIBLE, mPopupZoomer.getVisibility()); | 210 assertEquals(View.INVISIBLE, mPopupZoomer.getVisibility()); |
232 assertFalse(mPopupZoomer.isShowing()); | 211 assertFalse(mPopupZoomer.isShowing()); |
233 } | 212 } |
234 } | 213 } |
OLD | NEW |