Skip to content

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. 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).

Engine counterpart: flutter/engine#53507

Fixes #150263

@mdebbar mdebbar requested review from chunhtai and yjbanov June 21, 2024 20:38
@github-actions github-actions bot added a: tests "flutter test", flutter_test, or one of our tests framework flutter/packages/flutter repository. See also f: labels. a: accessibility Accessibility, e.g. VoiceOver or TalkBack. (aka a11y) labels Jun 21, 2024
required this.maxValueLength,
required this.currentValueLength,
required this.headingLevel,
this.linkUri,
Copy link
Contributor

Choose a reason for hiding this comment

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

do we assert if this is provided then the link must be true?

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 wasn't sure if that would be a good idea or not, so I didn't do it. I thought we may want to allow people to do something like this:

Semantics(
  link: true,
  child: Semantics(
    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'm taking over this PR. I don't have a lot of familiarity with semantics and I have the same question as Mouad. Is the snippet he posted something we want to support?

Copy link
Contributor

Choose a reason for hiding this comment

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

how would you handle cases link = false but linkUri is not empty

Copy link
Contributor

Choose a reason for hiding this comment

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

a ping to this in case you missed this.

Copy link
Contributor

Choose a reason for hiding this comment

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

I added asserts for linkUri != null => link == true

/// See also:
///
/// * [SemanticsFlag.isLink], which indicates that this node is a link.
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.

any reason not to use Uri ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

In c++, it has to be a string anyway. But I can make it a Uri here and convert it to a string later?

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 using Uri will be better

Copy link
Contributor

Choose a reason for hiding this comment

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

I also think it would be easier for both implementer and developer to leave this as a String since that's how it's represented on the engine side

Copy link
Contributor

@chunhtai chunhtai Jul 8, 2024

Choose a reason for hiding this comment

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

I generally found out that it will be easier for the developer to use uri for public facing API. Otherwise you will likely to see a lot of

Semantics(
  linkUri: Uri.parse(...)..replaceQueryParameters(...).toString()
)

It also give use flexibility to decide what is sent to engine and how. for example if we latter want to normalize path or queryparameters.

Copy link
Contributor

Choose a reason for hiding this comment

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

Good point. Changing now

auto-submit bot pushed a commit to flutter/engine that referenced this pull request Jul 3, 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](flutter/packages#6711)).

Framework counterpart: flutter/flutter#150639

Part of flutter/flutter#150263
@harryterkelsen harryterkelsen requested a review from chunhtai July 8, 2024 18:01
@harryterkelsen
Copy link
Contributor

Renamed linkUri to linkUrl to match the engine PR. PTAL

Copy link
Contributor

@chunhtai chunhtai 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 9, 2024
@harryterkelsen harryterkelsen changed the title Add Semantics Property linkUri Add Semantics Property linkUrl Jul 9, 2024
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 9, 2024
@auto-submit
Copy link
Contributor

auto-submit bot commented Jul 9, 2024

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

@harryterkelsen harryterkelsen added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 9, 2024
@auto-submit auto-submit bot merged commit 8d01fe0 into flutter:master Jul 9, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 10, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 10, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 10, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 10, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 11, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 11, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 11, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 11, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 12, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 12, 2024
ditman added a commit to ditman/flutter-packages that referenced this pull request Jul 12, 2024
Roll Flutter from 5103d75 to 58068d8 (42 revisions)

flutter/flutter@5103d75...58068d8

2024-07-12 zanderso@users.noreply.github.com Reland: Move all Linux Moto G4 tests to mokey in staging (flutter/flutter#151654)
2024-07-12 leroux_bruno@yahoo.fr Update obsolete comment in InputDecorator test (flutter/flutter#151651)
2024-07-12 tessertaha@gmail.com Fix `TabBar` tab indicator stretch effect (flutter/flutter#150868)
2024-07-12 kustermann@google.com Remove workaround for a bug in dart2wasm (flutter/flutter#151603)
2024-07-12 dacoharkes@google.com [native_assets] Stop running link hooks in JIT mode (flutter/flutter#151534)
2024-07-12 victorsanniay@gmail.com Roll `Switch.adaptive` changes into `CupertinoSwitch` (flutter/flutter#149465)
2024-07-11 34871572+gmackall@users.noreply.github.com Unmark java11 tests as bringup:true (flutter/flutter#151612)
2024-07-11 737941+loic-sharma@users.noreply.github.com Add link to design document archive (flutter/flutter#151489)
2024-07-11 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Move all Linux Moto G4 tests to mokey in staging (#151608)" (flutter/flutter#151620)
2024-07-11 zanderso@users.noreply.github.com Move all Linux Moto G4 tests to mokey in staging (flutter/flutter#151608)
2024-07-11 goderbauer@google.com docimports for API samples (flutter/flutter#151606)
2024-07-11 goderbauer@google.com docimports for flutter_goldens, flutter_localizations, flutter_web_plugins, fuchsia_remote_debug_protocol, integration_test (flutter/flutter#151271)
2024-07-11 jacksongardner@google.com Re-enable debug canvaskit e2e tests. (flutter/flutter#151565)
2024-07-11 57765714+Vi-debug@users.noreply.github.com Fix: Submenu anchor misaligned with child panel in web (Resolved #151081) (flutter/flutter#151294)
2024-07-11 45459898+RamonFarizel@users.noreply.github.com Replaced {@tool snippet} with {@tool dartpad} in CupertinoTabController (flutter/flutter#151272)
2024-07-11 git@reb0.org feat: Support overriding native endorsed plugins (flutter/flutter#137040)
2024-07-11 jeff@jefferey.dev expose keyboardType in DropdownMenu #150894 (flutter/flutter#150896)
2024-07-11 goderbauer@google.com docimports for flutter_driver (flutter/flutter#151267)
2024-07-11 82763757+NobodyForNothing@users.noreply.github.com Add `TimeOfDay` comparison methods (flutter/flutter#151233)
2024-07-11 engine-flutter-autoroll@skia.org Roll Flutter Engine from 6534fbf3c2c1 to 36dccf7bb25c (2 revisions) (flutter/flutter#151577)
2024-07-11 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1c23c8f64076 to 6534fbf3c2c1 (3 revisions) (flutter/flutter#151572)
2024-07-11 victorsanniay@gmail.com Use correct locale for `CupertinoDatePicker` weekday (flutter/flutter#151494)
2024-07-10 goderbauer@google.com doc imports for enum values (flutter/flutter#151548)
2024-07-10 34871572+gmackall@users.noreply.github.com Reland "Upgrade template Gradle, App AGP, Module AGP, and Kotlin versions, and tests"... but no longer upgrade module AGP version (flutter/flutter#151433)
2024-07-10 engine-flutter-autoroll@skia.org Roll Packages from 14341d1 to ea35fc6 (16 revisions) (flutter/flutter#151556)
2024-07-10 dkwingsmt@users.noreply.github.com [CupertinoActionSheet] Fix padding and font size of buttons (flutter/flutter#151199)
2024-07-10 engine-flutter-autoroll@skia.org Roll Flutter Engine from db2b45bea2c0 to 1c23c8f64076 (2 revisions) (flutter/flutter#151550)
2024-07-10 goderbauer@google.com Add docImports for flutter_test references (flutter/flutter#151175)
2024-07-10 ian@hixie.ch Mention not @-mentioning people in commit messages in tree hygiene (flutter/flutter#151487)
2024-07-10 engine-flutter-autoroll@skia.org Roll Flutter Engine from 371db85f33d7 to db2b45bea2c0 (8 revisions) (flutter/flutter#151522)
2024-07-10 yjbanov@google.com fix heading level absorption, diagnostics; add tests and an a11y use-case (flutter/flutter#151421)
2024-07-10 engine-flutter-autoroll@skia.org Roll Flutter Engine from 9d943eb2b37a to 371db85f33d7 (3 revisions) (flutter/flutter#151505)
2024-07-10 engine-flutter-autoroll@skia.org Roll Flutter Engine from d3269d5855a7 to 9d943eb2b37a (5 revisions) (flutter/flutter#151495)
2024-07-09 mdebbar@google.com Update doc of `SemanticsProperties.identifier` (flutter/flutter#149915)
2024-07-09 polinach@google.com Clean up leaky test. (flutter/flutter#151131)
2024-07-09 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#151492)
2024-07-09 32538273+ValentinVignal@users.noreply.github.com testAdd tests for stepper.controls_builder.0.dart (flutter/flutter#150669)
2024-07-09 mdebbar@google.com Add Semantics Property `linkUrl` (flutter/flutter#150639)
2024-07-09 engine-flutter-autoroll@skia.org Roll Flutter Engine from 4a2ac0e51a8f to d3269d5855a7 (1 revision) (flutter/flutter#151488)
2024-07-09 34871572+gmackall@users.noreply.github.com Link engine docs on AS setup in flutter/flutter docs on engine contributor setup (flutter/flutter#151481)
2024-07-09 engine-flutter-autoroll@skia.org Roll Flutter Engine from 69075e7e87d4 to 4a2ac0e51a8f (21 revisions) (flutter/flutter#151482)
2024-07-09 tessertaha@gmail.com Fix Material 3 `Dialog` default background color (flutter/flutter#151400)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
...
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 12, 2024
@mdebbar mdebbar deleted the link_uri branch August 8, 2024 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a: accessibility Accessibility, e.g. VoiceOver or TalkBack. (aka a11y) a: tests "flutter test", flutter_test, or one of our tests autosubmit Merge PR when tree becomes green via auto submit App framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a link URI property to SemanticsProperties

3 participants