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

Add Semantics Property linkUrl #53507

Merged
merged 6 commits into from
Jul 3, 2024
Merged

Add Semantics Property linkUrl #53507

merged 6 commits into from
Jul 3, 2024

Conversation

mdebbar
Copy link
Contributor

@mdebbar mdebbar commented Jun 21, 2024

The new property allows the user to specify a URI for their semantics link node. It's plumbed through for both web and non-web engines, but it's only used in the web engine currently. It sets the href of the anchor element associated with semantics node.

This is going to unlock better semantics support in the Link widget on web (PR).

Framework counterpart: flutter/flutter#150639

Part of flutter/flutter#150263

@mdebbar mdebbar requested review from yjbanov and chunhtai June 21, 2024 20:36
@github-actions github-actions bot added the platform-web Code specifically for the web engine label Jun 21, 2024
@@ -337,6 +338,9 @@ class SemanticsNodeUpdate {

/// See [ui.SemanticsUpdateBuilder.updateNode].
final int headingLevel;

/// See [ui.SemanticsUpdateBuilder.updateNode].
final String? linkUri;
Copy link
Contributor

Choose a reason for hiding this comment

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

linkUri is non-nullable in the updateNode API. Does it need to be nullable here?

Copy link
Contributor

Choose a reason for hiding this comment

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

This mirrors the code for the nullable tooltip field. I think it is non-nullable in the updateNode API to make it easier for the C++ side to handle.

element.style.display = 'block';
if (semanticsObject.hasLinkUri) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Can the link change? If yes, this code should probably go into an override of the update method and it should also check for isLinkUriDirty.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good catch!

Copy link
Contributor

Choose a reason for hiding this comment

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

Done

@@ -233,6 +233,7 @@ void sendSemanticsUpdate() {
childrenInHitTestOrder: childrenInHitTestOrder,
additionalActions: additionalActions,
headingLevel: 0,
linkUri: '',
Copy link
Contributor

Choose a reason for hiding this comment

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

I think "URL" is more accurate here than "URI". The <a> tag and the Link widget only work with URIs that are also fetchable over the network via the same URI. Using arbitrary URIs as abstract identifiers without being able to fetch them is not something that's supported by this property, AFAICT. Unless there's something on the mobile side that extends beyond that?

Copy link
Contributor

Choose a reason for hiding this comment

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

Done

@harryterkelsen harryterkelsen changed the title Add Semantics Property linkUri Add Semantics Property linkUrl Jul 3, 2024
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

@harryterkelsen harryterkelsen added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 3, 2024
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 3, 2024
Copy link
Contributor

auto-submit bot commented Jul 3, 2024

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

auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Jul 3, 2024
Prepares for flutter/engine#53507 by adding a missing parameter to the `updateNode` test method.

Part of #150263
@harryterkelsen harryterkelsen added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 3, 2024
@auto-submit auto-submit bot merged commit 388547a into flutter:main Jul 3, 2024
33 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 3, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 3, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 4, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 4, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jul 4, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Jul 4, 2024
…151293)

flutter/engine@4190543...8e2d05f

2024-07-04 flar@google.com [Impeller] Re-enable fast blur path for elliptical rrects (flutter/engine#53704)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from 9fd1dc779589 to d5f8dde714e4 (2 revisions) (flutter/engine#53721)
2024-07-03 yjbanov@google.com [web] ignore pointer events on plain text spans (flutter/engine#53694)
2024-07-03 mdebbar@google.com Add Semantics Property `linkUrl` (flutter/engine#53507)
2024-07-03 chinmaygarde@google.com [Embedder] Document incorrectly named field in FlutterOpenGLFramebuffer. (flutter/engine#53720)
2024-07-03 chinmaygarde@google.com [Impeller] Make storage sizes typed. (flutter/engine#53700)
2024-07-03 matanlurey@users.noreply.github.com Convert `run_ios_tests.sh` to `run_ios_tests.dart`. (flutter/engine#53645)
2024-07-03 matanlurey@users.noreply.github.com Move `//third_party/android_embedding_dependencies` to `//flutter/third_party`. (flutter/engine#53587)
2024-07-03 chinmaygarde@google.com [Impeller] Document how to debug/profile OpenGL ES on macOS. (flutter/engine#53671)
2024-07-03 kingtous@qq.com [Flutter Web(HTML)] fix: shader mask is painted incorrectly on shared offscreen canvas (flutter/engine#44998)
2024-07-03 kingtous@qq.com fix: mask disappeared when having nested mask filter on Flutter web HTML (flutter/engine#45166)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from 86ee8cc61508 to 9fd1dc779589 (3 revisions) (flutter/engine#53715)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from c14cce59222b to 86ee8cc61508 (1 revision) (flutter/engine#53713)

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 aaclarke@google.com,rmistry@google.com,zra@google.com 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
TahaTesser pushed a commit to TahaTesser/flutter that referenced this pull request Jul 8, 2024
…151261)

Prepares for flutter/engine#53507 by adding a missing parameter to the `updateNode` test method.

Part of flutter#150263
TahaTesser pushed a commit to TahaTesser/flutter that referenced this pull request Jul 8, 2024
…lutter#151293)

flutter/engine@4190543...8e2d05f

2024-07-04 flar@google.com [Impeller] Re-enable fast blur path for elliptical rrects (flutter/engine#53704)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from 9fd1dc779589 to d5f8dde714e4 (2 revisions) (flutter/engine#53721)
2024-07-03 yjbanov@google.com [web] ignore pointer events on plain text spans (flutter/engine#53694)
2024-07-03 mdebbar@google.com Add Semantics Property `linkUrl` (flutter/engine#53507)
2024-07-03 chinmaygarde@google.com [Embedder] Document incorrectly named field in FlutterOpenGLFramebuffer. (flutter/engine#53720)
2024-07-03 chinmaygarde@google.com [Impeller] Make storage sizes typed. (flutter/engine#53700)
2024-07-03 matanlurey@users.noreply.github.com Convert `run_ios_tests.sh` to `run_ios_tests.dart`. (flutter/engine#53645)
2024-07-03 matanlurey@users.noreply.github.com Move `//third_party/android_embedding_dependencies` to `//flutter/third_party`. (flutter/engine#53587)
2024-07-03 chinmaygarde@google.com [Impeller] Document how to debug/profile OpenGL ES on macOS. (flutter/engine#53671)
2024-07-03 kingtous@qq.com [Flutter Web(HTML)] fix: shader mask is painted incorrectly on shared offscreen canvas (flutter/engine#44998)
2024-07-03 kingtous@qq.com fix: mask disappeared when having nested mask filter on Flutter web HTML (flutter/engine#45166)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from 86ee8cc61508 to 9fd1dc779589 (3 revisions) (flutter/engine#53715)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from c14cce59222b to 86ee8cc61508 (1 revision) (flutter/engine#53713)

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 aaclarke@google.com,rmistry@google.com,zra@google.com 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
victorsanni pushed a commit to victorsanni/flutter that referenced this pull request Jul 8, 2024
…151261)

Prepares for flutter/engine#53507 by adding a missing parameter to the `updateNode` test method.

Part of flutter#150263
victorsanni pushed a commit to victorsanni/flutter that referenced this pull request Jul 8, 2024
…lutter#151293)

flutter/engine@4190543...8e2d05f

2024-07-04 flar@google.com [Impeller] Re-enable fast blur path for elliptical rrects (flutter/engine#53704)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from 9fd1dc779589 to d5f8dde714e4 (2 revisions) (flutter/engine#53721)
2024-07-03 yjbanov@google.com [web] ignore pointer events on plain text spans (flutter/engine#53694)
2024-07-03 mdebbar@google.com Add Semantics Property `linkUrl` (flutter/engine#53507)
2024-07-03 chinmaygarde@google.com [Embedder] Document incorrectly named field in FlutterOpenGLFramebuffer. (flutter/engine#53720)
2024-07-03 chinmaygarde@google.com [Impeller] Make storage sizes typed. (flutter/engine#53700)
2024-07-03 matanlurey@users.noreply.github.com Convert `run_ios_tests.sh` to `run_ios_tests.dart`. (flutter/engine#53645)
2024-07-03 matanlurey@users.noreply.github.com Move `//third_party/android_embedding_dependencies` to `//flutter/third_party`. (flutter/engine#53587)
2024-07-03 chinmaygarde@google.com [Impeller] Document how to debug/profile OpenGL ES on macOS. (flutter/engine#53671)
2024-07-03 kingtous@qq.com [Flutter Web(HTML)] fix: shader mask is painted incorrectly on shared offscreen canvas (flutter/engine#44998)
2024-07-03 kingtous@qq.com fix: mask disappeared when having nested mask filter on Flutter web HTML (flutter/engine#45166)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from 86ee8cc61508 to 9fd1dc779589 (3 revisions) (flutter/engine#53715)
2024-07-03 skia-flutter-autoroll@skia.org Roll Skia from c14cce59222b to 86ee8cc61508 (1 revision) (flutter/engine#53713)

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 aaclarke@google.com,rmistry@google.com,zra@google.com 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
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Jul 9, 2024
The new property allows the user to specify a URI for their semantics link node. On the web, it sets the `href` of the anchor element associated with semantics node.

This is going to unlock better semantics support in the Link widget on web ([PR](flutter/packages#6711)).

Engine counterpart: flutter/engine#53507

Fixes #150263
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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.

3 participants