Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.
Merged
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
4fc9130
Pair progress
Piinks Aug 9, 2023
17faa0d
Working mouse scroll wheel, note flutter takes longer to "see" a mous…
reidbaker Aug 15, 2023
95f5aa0
refactor packet method to have an override when context is null
reidbaker Aug 15, 2023
2b9686c
Add unit test for scroll wheel
reidbaker Aug 16, 2023
43619cc
Add unit test for scroll wheel
reidbaker Aug 16, 2023
aa01e98
Add unit test for scroll wheel
reidbaker Aug 16, 2023
05420ee
make pointer logic easier to read
reidbaker Aug 16, 2023
e14b961
revert unrelated file
reidbaker Aug 16, 2023
9efded6
Merge branch 'main' into i82973-scroll-mouse-wheel-support
reidbaker Aug 16, 2023
2ea445d
Fix merge, add timestamp test, code does not compile
reidbaker Aug 16, 2023
5140201
Merge branch 'main' into i82973-scroll-mouse-wheel-support
reidbaker Aug 16, 2023
e76fec0
Make tests compile
reidbaker Aug 16, 2023
22e8a77
Make tests pass
reidbaker Aug 17, 2023
e7dfa9d
add device test
reidbaker Aug 17, 2023
53ac277
Add tests for pressure, obscured and synth
reidbaker Aug 17, 2023
02e1176
Add tests for pressure min and max
reidbaker Aug 17, 2023
2c823c7
Add test for stylus distance
reidbaker Aug 17, 2023
c2f3c56
Add test for stylus distance
reidbaker Aug 17, 2023
168164f
Add tests for size and radius
reidbaker Aug 17, 2023
06cda9a
Add tests for pan deltax and rotation and scale
reidbaker Aug 17, 2023
bb157fb
formatting
reidbaker Aug 17, 2023
01e8ebb
Add test for buttons, specifically stylus
reidbaker Aug 18, 2023
8f3aa72
formatting
reidbaker Aug 18, 2023
4df1fee
Merge branch 'main' into i82973-scroll-mouse-wheel-support
reidbaker Aug 18, 2023
eb4dbb0
extract mock event values into function
reidbaker Aug 18, 2023
33be4af
formatting
reidbaker Aug 18, 2023
2cd1f46
Tests for pre 26 scroll behavior
reidbaker Aug 18, 2023
3848a28
Merge branch 'main' into i82973-scroll-mouse-wheel-support
reidbaker Aug 21, 2023
ae7439f
Update shell/platform/android/io/flutter/embedding/android/AndroidTou…
Piinks Aug 21, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add tests for size and radius
  • Loading branch information
reidbaker committed Aug 17, 2023
commit 168164f91f653871c72f207ef93b48af4eb47f56
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import androidx.test.ext.junit.runners.AndroidJUnit4;
import io.flutter.embedding.engine.renderer.FlutterRenderer;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.concurrent.TimeUnit;

import org.junit.Before;
Expand Down Expand Up @@ -103,6 +104,26 @@ private double readDistanceMax(ByteBuffer buffer) {
return buffer.getDouble(18 * AndroidTouchProcessor.BYTES_PER_FIELD);
}

private double readSize(ByteBuffer buffer) {
return buffer.getDouble(19 * AndroidTouchProcessor.BYTES_PER_FIELD);
}

private double readRadiusMajor(ByteBuffer buffer) {
return buffer.getDouble(20 * AndroidTouchProcessor.BYTES_PER_FIELD);
}

private double readRadiusMinor(ByteBuffer buffer) {
return buffer.getDouble(21 * AndroidTouchProcessor.BYTES_PER_FIELD);
}

private double readRadiusMax(ByteBuffer buffer) {
return buffer.getDouble(22 * AndroidTouchProcessor.BYTES_PER_FIELD);
}

private double readRadiusMin(ByteBuffer buffer) {
return buffer.getDouble(23 * AndroidTouchProcessor.BYTES_PER_FIELD);
}

private double readStylusTilt(ByteBuffer buffer) {
return buffer.getDouble(25 * AndroidTouchProcessor.BYTES_PER_FIELD);
}
Expand Down Expand Up @@ -146,19 +167,24 @@ MotionEvent mockEvent(int action, float x, float y, int buttonState) {
when(event.getEventTime()).thenReturn(eventTimeMilliseconds);
when(event.getPointerCount()).thenReturn(1);
when(event.getActionMasked()).thenReturn(action);
when(event.getActionIndex()).thenReturn(0);
final int actionIndex = 0;
when(event.getActionIndex()).thenReturn(actionIndex);
when(event.getButtonState()).thenReturn(buttonState);
when(event.getPointerId(0)).thenReturn(pointerId);
when(event.getX(0)).thenReturn(x);
when(event.getY(0)).thenReturn(y);
when(event.getToolType(0)).thenReturn(toolType);
when(event.getPointerId(actionIndex)).thenReturn(pointerId);
when(event.getX(actionIndex)).thenReturn(x);
when(event.getY(actionIndex)).thenReturn(y);
when(event.getToolType(actionIndex)).thenReturn(toolType);
when(event.isFromSource(InputDevice.SOURCE_CLASS_POINTER)).thenReturn(true);
when(event.getAxisValue(MotionEvent.AXIS_HSCROLL, pointerId)).thenReturn(x);
when(event.getAxisValue(MotionEvent.AXIS_VSCROLL, pointerId)).thenReturn(y);
// Use x and y values for convenience.
when(event.getAxisValue(MotionEvent.AXIS_DISTANCE, pointerId)).thenReturn(x);
when(event.getAxisValue(MotionEvent.AXIS_TILT, pointerId)).thenReturn(y);
when(event.getPressure(0)).thenReturn(pressure);
when(event.getPressure(actionIndex)).thenReturn(pressure);
// Use x and y values for convenience.
when(event.getSize(actionIndex)).thenReturn(x);
when(event.getToolMajor(actionIndex)).thenReturn(x);
when(event.getToolMinor(actionIndex)).thenReturn(y);
return event;
}
}
Expand Down Expand Up @@ -464,10 +490,10 @@ public void stylusDistance() {
MotionEventMocker mocker =
new MotionEventMocker(
0, InputDevice.SOURCE_STYLUS, MotionEvent.TOOL_TYPE_STYLUS);
final float x = 10.0f;
final float y = 20.0f;
final float distance = 10.0f;
final float tilt = 20.0f;
final MotionEvent event =
mocker.mockEvent(MotionEvent.ACTION_DOWN, x, y, 0);
mocker.mockEvent(MotionEvent.ACTION_DOWN, distance, tilt, 0);
boolean handled = touchProcessor.onTouchEvent(event);

InOrder inOrder = inOrder(mockRenderer);
Expand All @@ -476,10 +502,42 @@ public void stylusDistance() {
.dispatchPointerDataPacket(packetCaptor.capture(), packetSizeCaptor.capture());
ByteBuffer packet = packetCaptor.getValue();
assertEquals(AndroidTouchProcessor.PointerDeviceKind.STYLUS, readPointerDeviceKind(packet));
assertEquals((double)x, readDistance(packet));
assertEquals((double)distance, readDistance(packet));
// Always zero.
assertEquals(0.0, readDistanceMax(packet));
assertEquals((double)y, readStylusTilt(packet));
assertEquals((double)tilt, readStylusTilt(packet));

inOrder.verifyNoMoreInteractions();
}

@Test
public void sizeAndRadius() {
MotionEventMocker mocker =
new MotionEventMocker(
0, InputDevice.SOURCE_STYLUS, MotionEvent.TOOL_TYPE_STYLUS);
final float size = 10.0f;
final float radiusMajor = size;
final float radiusMinor = 30.0f;
final MotionEvent event =
mocker.mockEvent(MotionEvent.ACTION_DOWN, size, radiusMinor, 0);
boolean handled = touchProcessor.onTouchEvent(event);

InOrder inOrder = inOrder(mockRenderer);
inOrder
.verify(mockRenderer)
.dispatchPointerDataPacket(packetCaptor.capture(), packetSizeCaptor.capture());
ByteBuffer packet = packetCaptor.getValue();

verify(event).getSize(0);
verify(event).getToolMajor(0);
verify(event).getToolMinor(0);

assertEquals((double)size, readSize(packet));
assertEquals((double)radiusMajor, readRadiusMajor(packet));
assertEquals((double)radiusMinor, readRadiusMinor(packet));
// Always zero.
assertEquals(0.0, readRadiusMin(packet));
assertEquals(0.0, readRadiusMax(packet));

inOrder.verifyNoMoreInteractions();
}
Expand Down