Add test for setAllowClickWhenDisabled
Bug: 183240322
Test: atest
Change-Id: I8983ebc937bfc033431e2a3dd5cbc840f29f82bf
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index 9dd4928..9b6fa2b 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -2346,6 +2346,65 @@
}
@Test
+ public void testSetAllowClickWhenDisabled() throws Throwable {
+ MockView mockView = (MockView) mActivity.findViewById(R.id.mock_view);
+
+ mActivityRule.runOnUiThread(() -> {
+ mockView.setClickable(true);
+ mockView.setEnabled(false);
+ });
+
+ View.OnClickListener listener = mock(View.OnClickListener.class);
+ mockView.setOnClickListener(listener);
+
+ int[] xy = new int[2];
+ mockView.getLocationOnScreen(xy);
+
+ final int viewWidth = mockView.getWidth();
+ final int viewHeight = mockView.getHeight();
+ final float x = xy[0] + viewWidth / 2.0f;
+ final float y = xy[1] + viewHeight / 2.0f;
+
+ long downTime = SystemClock.uptimeMillis();
+ long eventTime = SystemClock.uptimeMillis();
+ MotionEvent downEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN,
+ x, y, 0);
+ downTime = SystemClock.uptimeMillis();
+ eventTime = SystemClock.uptimeMillis();
+ MotionEvent upEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP,
+ x, y, 0);
+
+ assertFalse(mockView.hasCalledOnTouchEvent());
+ mockView.dispatchTouchEvent(downEvent);
+ mockView.dispatchTouchEvent(upEvent);
+
+ mInstrumentation.waitForIdleSync();
+ assertTrue(mockView.hasCalledOnTouchEvent());
+
+ verifyZeroInteractions(listener);
+
+ mActivityRule.runOnUiThread(() -> {
+ mockView.setAllowClickWhenDisabled(true);
+ });
+
+ downTime = SystemClock.uptimeMillis();
+ eventTime = SystemClock.uptimeMillis();
+ downEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN,
+ x, y, 0);
+ downTime = SystemClock.uptimeMillis();
+ eventTime = SystemClock.uptimeMillis();
+ upEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP,
+ x, y, 0);
+
+ mockView.dispatchTouchEvent(downEvent);
+ mockView.dispatchTouchEvent(upEvent);
+
+ mInstrumentation.waitForIdleSync();
+
+ verify(listener, times(1)).onClick(mockView);
+ }
+
+ @Test
public void testAddTouchables() {
View view = new View(mActivity);
ArrayList<View> result = new ArrayList<>();