Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

[web] Handle resizes at the view level #48892

Merged
merged 3 commits into from
Dec 12, 2023

Conversation

mdebbar
Copy link
Contributor

@mdebbar mdebbar commented Dec 11, 2023

Currently, in multi-view mode, when the user resizes the window, Flutter views don't respond to the resize. This is because FlutterViewEmbedder is the one responding to resize events. But FlutterViewEmbedder only works with the implicit view, so multi views didn't respond to resize events.

This PR moves the responsibility of responding to resize events from FlutterViewEmbedder to EngineFlutterView. Also, tests.

Part of flutter/flutter#134443

@mdebbar mdebbar requested a review from ditman December 11, 2023 21:12
@github-actions github-actions bot added the platform-web Code specifically for the web engine label Dec 11, 2023
Comment on lines +213 to +221
final bool isEditingOnMobile =
isMobile && !_isRotation(newPhysicalSize) && textEditing.isEditing;
if (isEditingOnMobile) {
_computeOnScreenKeyboardInsets(true);
} else {
_physicalSize = newPhysicalSize;
// When physical size changes this value has to be recalculated.
_computeOnScreenKeyboardInsets(false);
}
Copy link
Member

Choose a reason for hiding this comment

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

I'm 99% sure this bit only matters when the app is embedded in full-screen mode (the only one that really computes keyboard insets).

Can we make this didResize something that is overridable in the Implicit view + full-screen implementation, and move this version of the logic there?

The case of embedded views in custom elements shouldn't worry about this. WDYT?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

What you are suggesting makes sense. But I would like to do it in a separate PR when I have the time to refactor it and test it properly.

@@ -61,6 +64,7 @@ base class EngineFlutterView implements ui.FlutterView {
// hot restart.
embeddingStrategy.attachViewRoot(dom.rootElement);
pointerBinding = PointerBinding(this);
onResize.listen(_didResize);
Copy link
Member

Choose a reason for hiding this comment

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

Do we need to stop listening on dispose of the view?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not sure, since we are closing the stream on dispose anyway. I'll remove the listener too just to be safe.

Copy link
Member

@ditman ditman left a comment

Choose a reason for hiding this comment

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

Forgot to approve this, LGTM!

@mdebbar mdebbar added the autosubmit Merge PR when tree becomes green via auto submit App label Dec 12, 2023
@auto-submit auto-submit bot merged commit ac59aa3 into flutter:main Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 12, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Dec 13, 2023
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Dec 13, 2023
…140084)

flutter/engine@9039ac7...fc32677

2023-12-13 [email protected] Revert Dart SDK back to 3.3.0-219.0.dev (flutter/engine#48990)
2023-12-13 [email protected] [Impeller] Use direct tessellation geometry for simple clip shapes (flutter/engine#48959)
2023-12-13 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[Android] Re-land "Add target to have linux_android_emulator_tests run on AVDs with Android 33 & 34"" (flutter/engine#48988)
2023-12-13 [email protected] Add a constructor for `GlyphInfo`. (flutter/engine#48971)
2023-12-13 [email protected] [Windows] Refactor surface manager mocking (flutter/engine#48953)
2023-12-13 [email protected] Roll Skia from 6e5bd9b1d91d to f3401c6186c1 (2 revisions) (flutter/engine#48981)
2023-12-13 [email protected] Roll Skia from 1e63c048ded7 to 6e5bd9b1d91d (1 revision) (flutter/engine#48973)
2023-12-13 [email protected] Roll Skia from 927f20598b11 to 1e63c048ded7 (1 revision) (flutter/engine#48968)
2023-12-13 [email protected] Roll Dart SDK from 17143c130ab3 to 114f2e8de3e5 (1 revision) (flutter/engine#48969)
2023-12-13 [email protected] Workarounds for clang-tidy warnings in the next roll of Clang (flutter/engine#48963)
2023-12-13 [email protected] Migrate `impeller/**.h` to header guards. (flutter/engine#48962)
2023-12-13 [email protected] Roll Dart SDK from 02f28120470f to 17143c130ab3 (1 revision) (flutter/engine#48961)
2023-12-13 [email protected] [Android] Re-land "Add target to have linux_android_emulator_tests run on AVDs with Android 33 & 34" (flutter/engine#48936)
2023-12-13 [email protected] Roll Skia from 49e32eb178a7 to 927f20598b11 (3 revisions) (flutter/engine#48956)
2023-12-13 [email protected] [web:multiview] Make CanvasKitRenderer listen for view creation/disposal events (flutter/engine#48812)
2023-12-12 [email protected] Move `third_party/swiftshader`, roll buildroot `DEPS`. (flutter/engine#48946)
2023-12-12 [email protected] [Impeller] Direct tessellation of simple filled round rects (flutter/engine#48919)
2023-12-12 [email protected] Roll Skia from 8e8d92ac1536 to 49e32eb178a7 (1 revision) (flutter/engine#48949)
2023-12-12 [email protected] Roll Dart SDK from a677378ae254 to 02f28120470f (1 revision) (flutter/engine#48945)
2023-12-12 [email protected] Roll Skia from 43a400456ab4 to 8e8d92ac1536 (1 revision) (flutter/engine#48941)
2023-12-12 [email protected] Roll Skia from 3678212a85b8 to 43a400456ab4 (2 revisions) (flutter/engine#48939)
2023-12-12 [email protected] Roll `buildroot` and delete `libxml`. (flutter/engine#48906)
2023-12-12 [email protected] Roll Skia from 16298087c277 to 3678212a85b8 (2 revisions) (flutter/engine#48934)
2023-12-12 [email protected] Manual roll of Dart SDK from 82c4571bb2de to a677378ae254 (flutter/engine#48933)
2023-12-12 [email protected] Roll Skia from 7685acfb6221 to 16298087c277 (1 revision) (flutter/engine#48931)
2023-12-12 [email protected] [web] Handle resizes at the view level (flutter/engine#48892)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
@mdebbar mdebbar deleted the resize_multiview branch December 15, 2023 15:31
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
autosubmit Merge PR when tree becomes green via auto submit App platform-web Code specifically for the web engine
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants