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

Side by Side Diff: content/public/android/javatests/src/org/chromium/content/browser/ContentViewPointerIconTest.java

Issue 2878403002: Support setting mouse cursor icon in Android N. (Closed)
Patch Set: Support setting mouse cursor icon in Android N Created 3 years, 6 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.content.browser;
6
7 import android.annotation.TargetApi;
8 import android.content.Context;
9 import android.os.Build;
10 import android.os.SystemClock;
11 import android.support.test.filters.SmallTest;
12 import android.view.InputDevice;
13 import android.view.MotionEvent;
14 import android.view.PointerIcon;
15
16 import org.chromium.base.test.util.Feature;
17 import org.chromium.base.test.util.MinAndroidSdkLevel;
18 import org.chromium.base.test.util.UrlUtils;
19 import org.chromium.content.browser.test.util.Criteria;
20 import org.chromium.content.browser.test.util.CriteriaHelper;
21 import org.chromium.content_shell_apk.ContentShellTestBase;
22
23 /**
24 * Tests that we can move mouse cursor and test cursor icon.
25 */
26 @MinAndroidSdkLevel(Build.VERSION_CODES.N)
27 @TargetApi(Build.VERSION_CODES.N)
28 public class ContentViewPointerIconTest extends ContentShellTestBase {
29 private static final String CURSOR_PAGE = UrlUtils.encodeHtmlDataUri("<html> "
30 + "<style>div { height: 60px; }</style>"
31 + "<body><div><a href=\"about:blank\">pointer</a></div>"
32 + "<div>text</div>"
33 + "<div style=\"cursor:help;\">help</div></body>"
34 + "</html>");
35
36 @Override
37 protected void setUp() throws Exception {
38 super.setUp();
39
40 launchContentShellWithUrl(CURSOR_PAGE);
41 waitForActiveShellToBeDoneLoading();
42 }
43
44 private void assertWaitForPointerIcon(final int type) {
45 CriteriaHelper.pollInstrumentationThread(new Criteria() {
46 @Override
47 public boolean isSatisfied() {
48 PointerIcon currentPointerIcon =
49 getContentViewCore().getContainerView().getPointerIcon() ;
50 Context context = getInstrumentationForTestCommon().getContext() ;
51 return currentPointerIcon != null
52 && currentPointerIcon.equals(PointerIcon.getSystemIcon(c ontext, type));
53 }
54 });
55 }
56
57 private void moveCursor(final float deltaAxisX, final float deltaAxisY) thro ws Throwable {
58 runTestOnUiThread(new Runnable() {
59 @Override
60 public void run() {
61 MotionEvent.PointerProperties[] pointerProperties =
62 new MotionEvent.PointerProperties[1];
63 MotionEvent.PointerProperties pp = new MotionEvent.PointerProper ties();
64 pp.id = 0;
65 pp.toolType = MotionEvent.TOOL_TYPE_MOUSE;
66 pointerProperties[0] = pp;
67
68 MotionEvent.PointerCoords[] pointerCoords = new MotionEvent.Poin terCoords[1];
69 MotionEvent.PointerCoords pc = new MotionEvent.PointerCoords();
70 pc.x = deltaAxisX;
71 pc.y = deltaAxisY;
72 pointerCoords[0] = pc;
73
74 MotionEvent cursorMoveEvent = MotionEvent.obtain(SystemClock.upt imeMillis(),
75 SystemClock.uptimeMillis() + 1, MotionEvent.ACTION_HOVER _MOVE, 1,
76 pointerProperties, pointerCoords, 0, 0, 1.0f, 1.0f, 0, 0 ,
77 InputDevice.SOURCE_MOUSE, 0);
78 cursorMoveEvent.setSource(InputDevice.SOURCE_MOUSE);
79 getContentViewCore().getContainerView().dispatchGenericMotionEve nt(cursorMoveEvent);
80 }
81 });
82 }
83
84 @SmallTest
85 @Feature({"Main"})
86 public void testPointerIcon() throws Throwable {
87 moveCursor(11.0f, 20.0f);
boliu 2017/05/30 21:30:02 how are you getting these coordinates? in general
jaebaek 2017/05/31 13:29:08 Done.
88 assertWaitForPointerIcon(PointerIcon.TYPE_HAND);
89 Thread.sleep(20);
boliu 2017/05/30 21:30:02 no sleeps, you are polling already. do you really
jaebaek 2017/05/31 13:29:08 Done.
90
91 moveCursor(11.0f, 90.0f);
92 assertWaitForPointerIcon(PointerIcon.TYPE_TEXT);
93 Thread.sleep(20);
94
95 moveCursor(11.0f, 160.0f);
96 assertWaitForPointerIcon(PointerIcon.TYPE_HELP);
97 }
98 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698