
* Revert "Mark last failing test after gradle update as flaky. (#91423)" This reverts commit 46a52d03bddc74a78135d39ef2084503cc2156d7. * Revert "fix android template for Gradle 7 (#91411)" This reverts commit 51d06d537fe37dd8f42002346d8545a489aed427. * Revert "Add explicit version for mac and windows openjdk. (#91408)" This reverts commit bf429f2771f486602579bd5ff85ee2cfbb0794af. * Revert "Update the openjdk version used by linux android tests. (#91405)" This reverts commit 2144ab8b45b8da12a94838b092c8ebc62085457f. * Revert "Migrate to Gradle 7.0.2 / AGP 7.0.1 (#90642)" This reverts commit b6459f9b633279f84a92eabc6bc5f82304fc1eae.
Integration test for hybrid composition on Android
This test verifies that the synthesized motion events that get to embedded Android view are equal to the motion events that originally hit the FlutterView.
The test app's Android code listens to MotionEvents that get to FlutterView and to an embedded Android view and sends them over a platform channel to the Dart code where the events are matched.
This is what the app looks like:
The blue part is the embedded Android view, because it is positioned at the top left corner, the coordinate systems for FlutterView and for the embedded view's virtual display has the same origin (this makes the MotionEvent comparison easier as we don't need to translate the coordinates).
The app includes the following control buttons:
- RECORD - Start listening for MotionEvents for 3 seconds, matched/unmatched events are displayed in the listview as they arrive.
- CLEAR - Clears the events that were recorded so far.
- SAVE - Saves the events that hit FlutterView to a file.
- PLAY FILE - Send a list of events from a bundled asset file to FlutterView.
A recorded touch events sequence is bundled as an asset in the assets_for_android_view package which lives in the goldens repository.
When running this test with flutter drive
the record touch sequences is
replayed and the test asserts that the events that got to FlutterView are
equivalent to the ones that got to the embedded view.