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

Flutter views can gain focus #54985

Merged
merged 10 commits into from
Nov 18, 2024
Merged

Conversation

tugorez
Copy link
Contributor

@tugorez tugorez commented Sep 5, 2024

I am unsure why the tabindex was removed when semantics were enabled. It seems this change was made without a clear explanation (by me). This PR shouldn't cause any issues as Flutter Views already have a tabindex, we're not adding a new one. This change is necessary because the semantics text strategy refocuses the view on deactivation, requiring the Flutter view to be focusable.

ThIs PR is a requirement to enable #54966.

flutter/flutter#153022

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@github-actions github-actions bot added the platform-web Code specifically for the web engine label Sep 5, 2024
@tugorez tugorez marked this pull request as ready for review September 6, 2024 04:20
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.

This PR seems correct. What it does is to make the current flutter view focusable (so it can retain the focus if needed), but inaccessible by keyboard. See tabindex docs.

@ditman
Copy link
Member

ditman commented Nov 5, 2024

The only change I want to make is to rename the method a little bit, because all it seems to be doing is to modify the keyboard reachability of the view, but the name is more generic than what it actually does.

@ditman
Copy link
Member

ditman commented Nov 6, 2024

I'm taking a quick stab at attaching the focus handlers to the flutter view root, rather than the body.

@ditman
Copy link
Member

ditman commented Nov 12, 2024

@@ -68,28 +68,6 @@ void testMain() {
expect(view2.dom.rootElement.getAttribute('tabindex'), '0');
});

test('never marks the views as focusable with semantincs enabled', () async {
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we also add some tests? :)

Copy link
Member

Choose a reason for hiding this comment

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

Well, there's tests already (this file is just showing the removed test, but there's others to verify the rest of the functionality!)

@ditman ditman requested a review from yjbanov November 13, 2024 21:59
Copy link
Contributor

@yjbanov yjbanov left a comment

Choose a reason for hiding this comment

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

lgtm

@ditman ditman added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 14, 2024
@ditman
Copy link
Member

ditman commented Nov 14, 2024

One last update and applying autosubmit.

Copy link
Contributor

auto-submit bot commented Nov 14, 2024

auto label is removed for flutter/engine/54985, due to - The status or check suite Linux mac_android_aot_engine has failed. Please fix the issues identified (or deflake) before re-applying this label.

@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Nov 14, 2024
@ditman
Copy link
Member

ditman commented Nov 18, 2024

Come on, autosubmit, throw me a bone here!

@ditman ditman added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 18, 2024
@auto-submit auto-submit bot merged commit dec7eb9 into flutter:main Nov 18, 2024
31 checks passed
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Nov 18, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 18, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 18, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 18, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 18, 2024
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Nov 19, 2024
…159111)

flutter/engine@878f593...7643ef1

2024-11-18 [email protected] iOS: Eliminate unguarded-availability
opt-out (flutter/engine#56689)
2024-11-18 [email protected] [skwasm] Use
`displayWidth`/`displayHeight` instead of `codedWidth`/`codedHeight`
(flutter/engine#56686)
2024-11-18 [email protected] Extract TestGLContext to separate
translation unit (flutter/engine#56647)
2024-11-18 [email protected] Roll Skia from b79e71223284 to
492e8347d7a4 (2 revisions) (flutter/engine#56687)
2024-11-18 [email protected] Update the Skia build
scripts for a refactoring of the Fontconfig font manager
(flutter/engine#56684)
2024-11-18 [email protected] iOS,macOS: Enable ARC in
flutter_cflags_objc[c] (flutter/engine#56685)
2024-11-18 [email protected] Re-land "Remove
`android_jit_release_x86`." (flutter/engine#56681)
2024-11-18 [email protected] Roll Skia from 0d24bd3268ef to
b79e71223284 (1 revision) (flutter/engine#56683)
2024-11-18 [email protected] Flutter views can gain focus
(flutter/engine#54985)
2024-11-18 [email protected] Roll Skia from 0b74d5c3eb4f to
0d24bd3268ef (1 revision) (flutter/engine#56680)

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] 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
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 19, 2024
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Nov 19, 2024
…159113)

flutter/engine@878f593...c9a965c

2024-11-18 [email protected] Roll Dart SDK from
625e0a9cb67a to 05d58364e92f (1 revision) (flutter/engine#56688)
2024-11-18 [email protected] iOS: Eliminate unguarded-availability
opt-out (flutter/engine#56689)
2024-11-18 [email protected] [skwasm] Use
`displayWidth`/`displayHeight` instead of `codedWidth`/`codedHeight`
(flutter/engine#56686)
2024-11-18 [email protected] Extract TestGLContext to separate
translation unit (flutter/engine#56647)
2024-11-18 [email protected] Roll Skia from b79e71223284 to
492e8347d7a4 (2 revisions) (flutter/engine#56687)
2024-11-18 [email protected] Update the Skia build
scripts for a refactoring of the Fontconfig font manager
(flutter/engine#56684)
2024-11-18 [email protected] iOS,macOS: Enable ARC in
flutter_cflags_objc[c] (flutter/engine#56685)
2024-11-18 [email protected] Re-land "Remove
`android_jit_release_x86`." (flutter/engine#56681)
2024-11-18 [email protected] Roll Skia from 0d24bd3268ef to
b79e71223284 (1 revision) (flutter/engine#56683)
2024-11-18 [email protected] Flutter views can gain focus
(flutter/engine#54985)
2024-11-18 [email protected] Roll Skia from 0b74d5c3eb4f to
0d24bd3268ef (1 revision) (flutter/engine#56680)

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] 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
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 19, 2024
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Nov 19, 2024
…159116)

flutter/engine@878f593...10dc07b

2024-11-18 [email protected] Update emulator definitions version to
latest available from chrome infra (flutter/engine#56313)
2024-11-18 [email protected] Roll Dart SDK from
625e0a9cb67a to 05d58364e92f (1 revision) (flutter/engine#56688)
2024-11-18 [email protected] iOS: Eliminate unguarded-availability
opt-out (flutter/engine#56689)
2024-11-18 [email protected] [skwasm] Use
`displayWidth`/`displayHeight` instead of `codedWidth`/`codedHeight`
(flutter/engine#56686)
2024-11-18 [email protected] Extract TestGLContext to separate
translation unit (flutter/engine#56647)
2024-11-18 [email protected] Roll Skia from b79e71223284 to
492e8347d7a4 (2 revisions) (flutter/engine#56687)
2024-11-18 [email protected] Update the Skia build
scripts for a refactoring of the Fontconfig font manager
(flutter/engine#56684)
2024-11-18 [email protected] iOS,macOS: Enable ARC in
flutter_cflags_objc[c] (flutter/engine#56685)
2024-11-18 [email protected] Re-land "Remove
`android_jit_release_x86`." (flutter/engine#56681)
2024-11-18 [email protected] Roll Skia from 0d24bd3268ef to
b79e71223284 (1 revision) (flutter/engine#56683)
2024-11-18 [email protected] Flutter views can gain focus
(flutter/engine#54985)
2024-11-18 [email protected] Roll Skia from 0b74d5c3eb4f to
0d24bd3268ef (1 revision) (flutter/engine#56680)

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] 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
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Nov 19, 2024
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Nov 19, 2024
…159118)

flutter/engine@878f593...c1b0e18

2024-11-19 [email protected] [Impeller] use sync fence for image
uploads. (flutter/engine#56609)
2024-11-18 [email protected] Update emulator definitions version to
latest available from chrome infra (flutter/engine#56313)
2024-11-18 [email protected] Roll Dart SDK from
625e0a9cb67a to 05d58364e92f (1 revision) (flutter/engine#56688)
2024-11-18 [email protected] iOS: Eliminate unguarded-availability
opt-out (flutter/engine#56689)
2024-11-18 [email protected] [skwasm] Use
`displayWidth`/`displayHeight` instead of `codedWidth`/`codedHeight`
(flutter/engine#56686)
2024-11-18 [email protected] Extract TestGLContext to separate
translation unit (flutter/engine#56647)
2024-11-18 [email protected] Roll Skia from b79e71223284 to
492e8347d7a4 (2 revisions) (flutter/engine#56687)
2024-11-18 [email protected] Update the Skia build
scripts for a refactoring of the Fontconfig font manager
(flutter/engine#56684)
2024-11-18 [email protected] iOS,macOS: Enable ARC in
flutter_cflags_objc[c] (flutter/engine#56685)
2024-11-18 [email protected] Re-land "Remove
`android_jit_release_x86`." (flutter/engine#56681)
2024-11-18 [email protected] Roll Skia from 0d24bd3268ef to
b79e71223284 (1 revision) (flutter/engine#56683)
2024-11-18 [email protected] Flutter views can gain focus
(flutter/engine#54985)
2024-11-18 [email protected] Roll Skia from 0b74d5c3eb4f to
0d24bd3268ef (1 revision) (flutter/engine#56680)

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] 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
nick9822 pushed a commit to nick9822/flutter that referenced this pull request Dec 18, 2024
I am unsure why the `tabindex` was removed when semantics were enabled. It seems this change was made without a clear explanation (by me). This PR shouldn't cause any issues as Flutter Views already have a tabindex, we're not adding a new one. This change is necessary because the semantics text strategy refocuses the view on deactivation, requiring the Flutter view to be focusable.

ThIs PR is a requirement to enable flutter/engine#54966. 

flutter#153022

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
platform-web Code specifically for the web engine
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants