Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Android] Fix single taps #16561

Merged
merged 4 commits into from
Sep 11, 2023
Merged

[Android] Fix single taps #16561

merged 4 commits into from
Sep 11, 2023

Conversation

hartez
Copy link
Contributor

@hartez hartez commented Aug 4, 2023

Description of Change

Single taps using a TapGestureRecognizer on Android don't work correctly if the user taps too quickly; the logic for double taps kicks in, and the handling for differentiating single and double taps uses wrong motion event for the second single tap.

These changes fix the issue and use the UP action from the second tap as the event for the second single tap recognized by the TapGestureRecognizer.

These changes also modify the Appium driver interface to allow access to the driver from the tests, so that multiple actions can be queued up.

Add tests for multiple quick taps
@hartez hartez force-pushed the fix-android-singletap branch from d1ed421 to 40ba446 Compare August 29, 2023 21:37
@hartez hartez changed the title Fix single taps [Android] Fix single taps Aug 29, 2023
@hartez hartez marked this pull request as ready for review August 29, 2023 21:45
@hartez hartez requested a review from a team as a code owner August 29, 2023 21:45
@hartez hartez requested review from jfversluis and PureWeen August 29, 2023 21:45
Comment on lines +33 to +39
#if ANDROID
// Adjust the results for display density, so they make sense to the
// Appium test consuming this.
var x = this.Handler.MauiContext.Context.ToPixels(pos.Value.X);
var y = this.Handler.MauiContext.Context.ToPixels(pos.Value.Y);
pos = new(x, y);
#endif
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is scary. Is Android not scaling the coordinates like the other platforms? Do we have an issue to track this or is it by design?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Appium layer doesn't know anything about our SDK's point->pixel conversions (why would it?). So when we're asking it to retrieve the Rect for a particular element and then to tap at specific points on that element, it's doing all of that work in native points. The cross-platform tap events are in device-independent units. So we have to do that conversion somewhere. It's easier to do that on the app side, because the app already knows the display density and how to convert the values.

At the moment, we don't have any other UI tests which require this sort of point-to-point comparison. If we start to need more tests like that in the future, we could introduce an automatic conversion mechanism for the Appium Rect structure which determines the remote device's display density at startup. But that's not top of my list right now for the one test which has this issue.

@samhouts samhouts added this to the .NET 8 GA milestone Aug 30, 2023
@@ -45,6 +45,18 @@
<MauiSplashScreen Include="Resources\Splash\splash.svg" Color="#FFFFFF" BaseSize="168,208" />
</ItemGroup>

<ItemGroup>
<Compile Update="Issues\Issues16561.xaml.cs">
<DependentUpon>Issues16561.xaml</DependentUpon>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Revert changes on this file.

Otherwise looks like it works super!

@PureWeen
Copy link
Member

/azp run MAUI-UITests

@azure-pipelines
Copy link

No pipelines are associated with this pull request.

@PureWeen
Copy link
Member

@hartez hartez enabled auto-merge (squash) September 11, 2023 15:27
@hartez hartez merged commit 5772c35 into main Sep 11, 2023
@hartez hartez deleted the fix-android-singletap branch September 11, 2023 19:00
@github-actions github-actions bot locked and limited conversation to collaborators Dec 7, 2023
@samhouts samhouts added the fixed-in-8.0.0-rc.2.9373 Look for this fix in 8.0.0-rc.2.9373! label Aug 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-gestures Gesture types fixed-in-8.0.0-rc.2.9373 Look for this fix in 8.0.0-rc.2.9373! platform/android 🤖
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants