Skip to content

Conversation

@hannah-hyj
Copy link
Member

@hannah-hyj hannah-hyj commented Jan 28, 2025

issue: #45205

This PR added roles: table,cell,row,columnheader in engine side.

Also added table, cell , columnheader in framework widgets Table and DataTable.

This PR didn't add row in framework side because right now TableCell is ParentDataWidget expecting its parent to be a Table, tableRow is not a widget or a renderObject, but just some data. If we want to add a role to row, we need to do some refactor to TableCell, TableRow and Table. If we need to add row, I will do that in another PR.

Pre-launch Checklist

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

@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. engine flutter/engine related. See also e: labels. f: material design flutter/packages/flutter/material repository. a: accessibility Accessibility, e.g. VoiceOver or TalkBack. (aka a11y) platform-web Web applications specifically labels Jan 28, 2025
@hannah-hyj hannah-hyj force-pushed the table-semantics-role branch from 0c487b2 to b0fc459 Compare February 3, 2025 20:37
@github-actions github-actions bot removed the f: material design flutter/packages/flutter/material repository. label Feb 3, 2025
@hannah-hyj hannah-hyj force-pushed the table-semantics-role branch 2 times, most recently from 8c0ba25 to 5ef4e94 Compare February 4, 2025 01:13
@github-actions github-actions bot added the f: material design flutter/packages/flutter/material repository. label Feb 4, 2025
@hannah-hyj hannah-hyj force-pushed the table-semantics-role branch 3 times, most recently from 3ef5933 to 7445034 Compare February 5, 2025 18:48
@hannah-hyj hannah-hyj changed the title [draft] Add table semantics role Add table related semantics role Feb 5, 2025
@hannah-hyj
Copy link
Member Author

this PR is ready for review, also cc @chunhtai

@chunhtai chunhtai self-requested a review February 5, 2025 22:20
/// The main display for a tab.
tabPanel,

/// A Table.
Copy link
Contributor

Choose a reason for hiding this comment

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

This requires a bit more description, you may be able to get some idea from https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/table_role

Also this should mention that the table cell should use cell and row should use row ...etc

/// * [table], which is the role for tables.
row,

/// A column header in a table.
Copy link
Contributor

Choose a reason for hiding this comment

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

maybe explain a bit what is a column header

semanticsObject,
preferredLabelRepresentation: LabelRepresentation.ariaLabel,
) {
setAriaRole('table');
Copy link
Contributor

Choose a reason for hiding this comment

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

it looks like you may also needs something like aria-rowcount, aria-colcount

Copy link
Member Author

Choose a reason for hiding this comment

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

ok I will add rowcount, colcount, rowindex ,colindex to semantics nodes.
btw will semantics nodes get too many parameter if every role has some extra attributes?

Copy link
Contributor

@chunhtai chunhtai Feb 10, 2025

Choose a reason for hiding this comment

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

Since this is web specific requirement. I don't think you need to add it in framework side, I think all of the data can be interpolate from the tree structure in the engine side

Copy link
Contributor

Choose a reason for hiding this comment

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

looks like this is not address yet, same for other aria property requirements

Copy link
Member Author

Choose a reason for hiding this comment

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

I think these aria attributes ( rowcount, colcount, rowindex ,colindex) are all related to Row and i will add them
in the next PR when i add a role for row

Copy link
Contributor

@chunhtai chunhtai Feb 13, 2025

Choose a reason for hiding this comment

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

ah the table doesn't know the which set of cell formed a row yet?

Copy link
Member Author

@hannah-hyj hannah-hyj Feb 13, 2025

Choose a reason for hiding this comment

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

yes, cells are directly under table now

semanticsObject,
preferredLabelRepresentation: LabelRepresentation.ariaLabel,
) {
setAriaRole('row');
Copy link
Contributor

Choose a reason for hiding this comment

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

This will need aria-rowindex

Copy link
Contributor

Choose a reason for hiding this comment

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

also not entirely sure aria-rowspan or aria-colspan applies in our table widget

Copy link
Member Author

Choose a reason for hiding this comment

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

we currently don't support row span and col span in our widgets.

related issue: #21594

semanticsObject,
preferredLabelRepresentation: LabelRepresentation.ariaLabel,
) {
setAriaRole('columnheader');
Copy link
Contributor

Choose a reason for hiding this comment

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

This will need aria-colindex

Copy link
Contributor

Choose a reason for hiding this comment

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

also aria-sort

Copy link
Contributor

Choose a reason for hiding this comment

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

Are those things required?

Copy link
Contributor

Choose a reason for hiding this comment

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

they are documented in the mdn, not sure if they really influence the screen reader. would need to test

Copy link
Member Author

Choose a reason for hiding this comment

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

Tested a html table with voice over, it can announce things like row 2 of 3 column 4 of 5 when focus on a cell.

I think these attributes are needed to support that.

);
}
return label;
return TableCell(child: label);
Copy link
Contributor

Choose a reason for hiding this comment

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

will this cause behavior change besides the semantics role?

Copy link
Member Author

Choose a reason for hiding this comment

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

i dont think it will cause any behavior change, TableCell is just a wrapper


static FlutterError? _semanticsCell(SemanticsNode node) {
if (node.parent?.role != SemanticsRole.table) {
return FlutterError('A columnHeader must be a child of a table');
Copy link
Contributor

Choose a reason for hiding this comment

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

copy paste error?

}

static FlutterError? _semanticsCell(SemanticsNode node) {
if (node.parent?.role != SemanticsRole.table) {
Copy link
Contributor

Choose a reason for hiding this comment

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

what if they are in a row?

Copy link
Member Author

Choose a reason for hiding this comment

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

As I mentioned that in the PR description, I didn't add a role for table row in this PR, because right now in framework tableRow is not a widget or a renderObject, but just some data.
I will update the tests if i add a role for table row later.

SemanticsRole.tabPanel => _noCheckRequired,
SemanticsRole.table => _noCheckRequired,
SemanticsRole.cell => _semanticsCell,
SemanticsRole.row => _noCheckRequired,
Copy link
Contributor

Choose a reason for hiding this comment

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

shouldn't this check if they are under table as well?

Copy link
Member Author

Choose a reason for hiding this comment

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

I didn't add a role for table row in this PR so i didn't add row checks here

Copy link
Contributor

Choose a reason for hiding this comment

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

is the engine side properly implemented? if not this should just throw if someone attempt to use it

Copy link
Member Author

Choose a reason for hiding this comment

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

I will throw a unimplemented error for row here


/// A cell in a table.
///
/// see also:
Copy link
Contributor

Choose a reason for hiding this comment

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

nit: here and elsewhere s/see/See/, add one empty line after this line, and add one extra space before the * (example).

///
/// see also:
/// * [table], which is the role for tables.
cell,
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 want to document/enforce/assert that cell, row, and columnHeader roles must be children of a table?

Copy link
Member Author

Choose a reason for hiding this comment

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

there's some tests in [packages/flutter/lib/src/semantics/semantics.dart]

semanticsObject,
preferredLabelRepresentation: LabelRepresentation.ariaLabel,
) {
setAriaRole('columnheader');
Copy link
Contributor

Choose a reason for hiding this comment

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

Are those things required?

final SemanticsObject object = pumpSemantics();
expect(object.semanticRole?.kind, EngineSemanticsRole.table);
expect(object.element.getAttribute('role'), 'table');
});
Copy link
Contributor

Choose a reason for hiding this comment

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

It's been so long I don't remember why we do this anymore, but all other tests end with:

    semantics().semanticsEnabled = false;

Maybe because it's the only way to clear the tree from the previous test?

@hannah-hyj hannah-hyj requested a review from chunhtai February 12, 2025 20:52
/// * [cell], [row], [columnHeader] for table related roles.
table,

/// A cell in a table that does not contain column or row header information.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
/// A cell in a table that does not contain column or row header information.
/// A cell in a [table] that does not contain column or row header information.

/// * [table],[row], [columnHeader] for table related roles.
cell,

/// A row of cells within a tabular structure. A row contains one or more cells or column headers.
Copy link
Contributor

Choose a reason for hiding this comment

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

the first paragraph should be one brief sentence

/// * [table] ,[cell],[columnHeader] for table related roles.
row,

/// A column header in a table is a cell in a row contains header information for a column.
Copy link
Contributor

Choose a reason for hiding this comment

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

maybe rephrase

A cell in a table contains header information for a column

semanticsObject,
preferredLabelRepresentation: LabelRepresentation.ariaLabel,
) {
setAriaRole('table');
Copy link
Contributor

Choose a reason for hiding this comment

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

looks like this is not address yet, same for other aria property requirements

SemanticsRole.tabPanel => _noCheckRequired,
SemanticsRole.table => _noCheckRequired,
SemanticsRole.cell => _semanticsCell,
SemanticsRole.row => _noCheckRequired,
Copy link
Contributor

Choose a reason for hiding this comment

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

is the engine side properly implemented? if not this should just throw if someone attempt to use it

@hannah-hyj hannah-hyj requested a review from chunhtai February 12, 2025 23:32
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.

update

lint

add checks

add tests

lint

add tests

lint

SemanticsRole.cell should be inside

add more table related roles

add more table related roles

Update table.dart

Update table.dart

add more table roles

add role to `table`

lint

add role to `table`

lint

lint

update comments

Update engine/src/flutter/lib/web_ui/lib/src/engine/semantics/table.dart

export

add table role
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 17, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 18, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 19, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 19, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 19, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Feb 20, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Feb 20, 2025
Roll Flutter from e8f34a9 to 39b4951 (95 revisions)

flutter/flutter@e8f34a9...39b4951

2025-02-18 fluttergithubbot@gmail.com Marks Windows_arm64 plugin_test_windows to be flaky (flutter/flutter#163123)
2025-02-18 jonahwilliams@google.com [android] use macro definition to shrink repetitive JNI code size. (flutter/flutter#163395)
2025-02-18 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#163474)
2025-02-18 mdebbar@google.com [web] Cleanup everything HTML from the engine (outside html/ folder) (flutter/flutter#162840)
2025-02-18 flar@google.com [Impeller] add support for rational bezier conics to Path (flutter/flutter#163282)
2025-02-18 36861262+QuncCccccc@users.noreply.github.com Change `cardTheme`, `dialogTheme`, and `tabBarTheme` type to `xxxThemeData` (flutter/flutter#157292)
2025-02-18 jason-simmons@users.noreply.github.com Update integration test and benchmark Android .gitignore files to match the current app template (flutter/flutter#163276)
2025-02-18 chinmaygarde@google.com [Impeller] Don't create a redundant typography context. (flutter/flutter#163513)
2025-02-18 engine-flutter-autoroll@skia.org Roll Dart SDK from fcef25f18e4d to 023ac80cef14 (1 revision) (flutter/flutter#163110)
2025-02-18 reidbaker@google.com update module_host_with_custom_build_v2_embedding to target android 35 and to use the latest gradle and agp versions (flutter/flutter#163542)
2025-02-18 jonahwilliams@google.com [Impeller] when binding to READ_FRAMEBUFFER, treat multisampled textures as single sampled. (flutter/flutter#163345)
2025-02-18 sokolovskyi.konstantin@gmail.com Add missing properties to _ArcPaintPredicate. (flutter/flutter#162572)
2025-02-18 engine-flutter-autoroll@skia.org Roll Packages from 8542af3 to cb4fb13 (4 revisions) (flutter/flutter#163544)
2025-02-18 reidbaker@google.com Remove bringup for android_display_cutout (flutter/flutter#163312)
2025-02-18 reidbaker@google.com Create VersionUtils class and unit tests and extract logic out of flutter.groovy (flutter/flutter#163166)
2025-02-18 matanlurey@users.noreply.github.com Invalidate `pod install` output if `.flutter-plugins-dependencies` content changes. (flutter/flutter#163275)
2025-02-18 robert.ancell@canonical.com Replace hard coded numbers with mouse button defines (flutter/flutter#163503)
2025-02-18 engine-flutter-autoroll@skia.org Roll Skia from 9147a9654043 to 6da10829d017 (1 revision) (flutter/flutter#163531)
2025-02-18 engine-flutter-autoroll@skia.org Roll Skia from 92aaa4e20ea7 to 9147a9654043 (2 revisions) (flutter/flutter#163512)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 71a160edc9d9 to 92aaa4e20ea7 (1 revision) (flutter/flutter#163488)
2025-02-17 engine-flutter-autoroll@skia.org Roll Packages from 625023a to 8542af3 (21 revisions) (flutter/flutter#163484)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 7e3129d5db11 to 71a160edc9d9 (1 revision) (flutter/flutter#163459)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 40ce5ef20d22 to 7e3129d5db11 (1 revision) (flutter/flutter#163451)
2025-02-16 engine-flutter-autoroll@skia.org Roll Skia from bb166c85957b to 40ce5ef20d22 (1 revision) (flutter/flutter#163403)
2025-02-15 engine-flutter-autoroll@skia.org Roll Skia from ff94581f1f8a to bb166c85957b (1 revision) (flutter/flutter#163381)
2025-02-15 58529443+srujzs@users.noreply.github.com Move DWDS initialization into the onLoadEndCallback for the DDC library bundle format (flutter/flutter#163338)
2025-02-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Handle MakeGrContext returning null (flutter/flutter#163332)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 13a3b6f34ee8 to ff94581f1f8a (1 revision) (flutter/flutter#163347)
2025-02-14 bkonyi@google.com Fix failing chrome_dev_mode tests (flutter/flutter#163346)
2025-02-14 47866232+chunhtai@users.noreply.github.com Adds all semantics roles (flutter/flutter#163075)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 20924303cc25 to 13a3b6f34ee8 (1 revision) (flutter/flutter#163336)
2025-02-14 bkonyi@google.com [ Widget Preview ] Add experimental support for web-based widget preview environment (flutter/flutter#163154)
2025-02-14 jonahwilliams@google.com [Impeller] don't use glFramebufferBlit for onscreen restore. (flutter/flutter#163327)
2025-02-14 58529443+srujzs@users.noreply.github.com Align web terminal messages with the VM (flutter/flutter#163268)
2025-02-14 victoreronmosele@gmail.com Manually roll customer_testing to enable rfw tests (flutter/flutter#163030)
2025-02-14 ybz975218925@gmail.com Refactor SliverMainAxisGroup for reverse mode. (flutter/flutter#161849)
2025-02-14 30870216+gaaclarke@users.noreply.github.com Tweaked TextContents math to avoid floating point errors (flutter/flutter#162480)
2025-02-14 kevinjchisholm@google.com [release] Update cherry-pick CHANGELOG requirements (flutter/flutter#163318)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 85722a1db585 to 20924303cc25 (2 revisions) (flutter/flutter#163293)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 5a38d23ee247 to 85722a1db585 (1 revision) (flutter/flutter#163286)
2025-02-14 matanlurey@users.noreply.github.com Add `.flutter-plugins-dependencies` to `FlutterBuildSystem`; update logic, add tests. (flutter/flutter#163278)
2025-02-14 jhy03261997@gmail.com Add table related semantics role (flutter/flutter#162339)
2025-02-14 jason-simmons@users.noreply.github.com [Impeller] Call glDebugMessageControlKHR only if the KHR_debug extension is available (flutter/flutter#163273)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 748415976ad1 to 5a38d23ee247 (3 revisions) (flutter/flutter#163271)
2025-02-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Use `transferToImageBitmap` instead of `createImageBitmap` (flutter/flutter#163175)
2025-02-14 jacksongardner@google.com [skwasm] Use `transferToImageBitmap` instead of `createImageBitmap` (flutter/flutter#163251)
...
github-merge-queue bot pushed a commit that referenced this pull request Mar 13, 2025
**1. framework side:**
This PR Create semantics node for rows in table's
`assembleSemanticsNode` function.

**2. web side:**
I tested on my mac, and i need to remove the 
`<flt-semantics-container>` between table and row, row and cell to
traverse inside table, removing those transfom intermediate containers
on web will be a bit of hassle and will be in another separate PR.

For example this code can only announce table but can’t get into cells.
```
<flt-semantics id="flt-semantic-node-4" role="table" style="position: absolute; overflow: visible; width: 751px; height: 56px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 0, 56); pointer-events: none; z-index: 1;">
    <flt-semantics-container style="position: absolute; pointer-events: none; top: 0px; left: 0px;">
        <flt-semantics id="flt-semantic-node-6" role="row" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: none;">
            <flt-semantics-container style="position: absolute; pointer-events: none; top: 0px; left: 0px;">
                <flt-semantics id="flt-semantic-node-5" role="columnheader" aria-label="Name" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: all;"></flt-semantics>
            </flt-semantics-container>
        </flt-semantics>
    </flt-semantics-container>
</flt-semantics>
```
If I removed the in between `</flt-semantics-container>`, the code come 
```
<flt-semantics id="flt-semantic-node-4" role="table" style="position: absolute; overflow: visible; width: 751px; height: 56px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 0, 56); pointer-events: none; z-index: 1;">
    <flt-semantics id="flt-semantic-node-6" role="row" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: none;">
        <flt-semantics id="flt-semantic-node-5" role="columnheader" aria-label="Name" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: all;"></flt-semantics>
    </flt-semantics>
</flt-semantics>
```
And I can get into table cells.


**3. Other aria-attributes:** 

[aria-colcount](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-colcount) ,[aria-rowcount](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-rowcount) 
[aria-colindex](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-colindex) 
[aria-rowindex](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-rowindex) 
* theres attributes are only needed if some rows and columns are hidden
in the Dom tree. havn't added them yet

aria-rowspan , aria-colspan : 
*we currently don't support row span and col span in our widgets.
related issue: #21594

 related: #162339
issue: #45205

## 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], including [Features
we expect every widget to implement].
- [ ] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

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

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 20, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 21, 2025
androidseb pushed a commit to androidseb/packages that referenced this pull request Jun 8, 2025
Roll Flutter from e8f34a9 to 39b4951 (95 revisions)

flutter/flutter@e8f34a9...39b4951

2025-02-18 fluttergithubbot@gmail.com Marks Windows_arm64 plugin_test_windows to be flaky (flutter/flutter#163123)
2025-02-18 jonahwilliams@google.com [android] use macro definition to shrink repetitive JNI code size. (flutter/flutter#163395)
2025-02-18 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#163474)
2025-02-18 mdebbar@google.com [web] Cleanup everything HTML from the engine (outside html/ folder) (flutter/flutter#162840)
2025-02-18 flar@google.com [Impeller] add support for rational bezier conics to Path (flutter/flutter#163282)
2025-02-18 36861262+QuncCccccc@users.noreply.github.com Change `cardTheme`, `dialogTheme`, and `tabBarTheme` type to `xxxThemeData` (flutter/flutter#157292)
2025-02-18 jason-simmons@users.noreply.github.com Update integration test and benchmark Android .gitignore files to match the current app template (flutter/flutter#163276)
2025-02-18 chinmaygarde@google.com [Impeller] Don't create a redundant typography context. (flutter/flutter#163513)
2025-02-18 engine-flutter-autoroll@skia.org Roll Dart SDK from fcef25f18e4d to 023ac80cef14 (1 revision) (flutter/flutter#163110)
2025-02-18 reidbaker@google.com update module_host_with_custom_build_v2_embedding to target android 35 and to use the latest gradle and agp versions (flutter/flutter#163542)
2025-02-18 jonahwilliams@google.com [Impeller] when binding to READ_FRAMEBUFFER, treat multisampled textures as single sampled. (flutter/flutter#163345)
2025-02-18 sokolovskyi.konstantin@gmail.com Add missing properties to _ArcPaintPredicate. (flutter/flutter#162572)
2025-02-18 engine-flutter-autoroll@skia.org Roll Packages from 8542af3 to cb4fb13 (4 revisions) (flutter/flutter#163544)
2025-02-18 reidbaker@google.com Remove bringup for android_display_cutout (flutter/flutter#163312)
2025-02-18 reidbaker@google.com Create VersionUtils class and unit tests and extract logic out of flutter.groovy (flutter/flutter#163166)
2025-02-18 matanlurey@users.noreply.github.com Invalidate `pod install` output if `.flutter-plugins-dependencies` content changes. (flutter/flutter#163275)
2025-02-18 robert.ancell@canonical.com Replace hard coded numbers with mouse button defines (flutter/flutter#163503)
2025-02-18 engine-flutter-autoroll@skia.org Roll Skia from 9147a9654043 to 6da10829d017 (1 revision) (flutter/flutter#163531)
2025-02-18 engine-flutter-autoroll@skia.org Roll Skia from 92aaa4e20ea7 to 9147a9654043 (2 revisions) (flutter/flutter#163512)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 71a160edc9d9 to 92aaa4e20ea7 (1 revision) (flutter/flutter#163488)
2025-02-17 engine-flutter-autoroll@skia.org Roll Packages from 625023a to 8542af3 (21 revisions) (flutter/flutter#163484)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 7e3129d5db11 to 71a160edc9d9 (1 revision) (flutter/flutter#163459)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 40ce5ef20d22 to 7e3129d5db11 (1 revision) (flutter/flutter#163451)
2025-02-16 engine-flutter-autoroll@skia.org Roll Skia from bb166c85957b to 40ce5ef20d22 (1 revision) (flutter/flutter#163403)
2025-02-15 engine-flutter-autoroll@skia.org Roll Skia from ff94581f1f8a to bb166c85957b (1 revision) (flutter/flutter#163381)
2025-02-15 58529443+srujzs@users.noreply.github.com Move DWDS initialization into the onLoadEndCallback for the DDC library bundle format (flutter/flutter#163338)
2025-02-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Handle MakeGrContext returning null (flutter/flutter#163332)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 13a3b6f34ee8 to ff94581f1f8a (1 revision) (flutter/flutter#163347)
2025-02-14 bkonyi@google.com Fix failing chrome_dev_mode tests (flutter/flutter#163346)
2025-02-14 47866232+chunhtai@users.noreply.github.com Adds all semantics roles (flutter/flutter#163075)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 20924303cc25 to 13a3b6f34ee8 (1 revision) (flutter/flutter#163336)
2025-02-14 bkonyi@google.com [ Widget Preview ] Add experimental support for web-based widget preview environment (flutter/flutter#163154)
2025-02-14 jonahwilliams@google.com [Impeller] don't use glFramebufferBlit for onscreen restore. (flutter/flutter#163327)
2025-02-14 58529443+srujzs@users.noreply.github.com Align web terminal messages with the VM (flutter/flutter#163268)
2025-02-14 victoreronmosele@gmail.com Manually roll customer_testing to enable rfw tests (flutter/flutter#163030)
2025-02-14 ybz975218925@gmail.com Refactor SliverMainAxisGroup for reverse mode. (flutter/flutter#161849)
2025-02-14 30870216+gaaclarke@users.noreply.github.com Tweaked TextContents math to avoid floating point errors (flutter/flutter#162480)
2025-02-14 kevinjchisholm@google.com [release] Update cherry-pick CHANGELOG requirements (flutter/flutter#163318)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 85722a1db585 to 20924303cc25 (2 revisions) (flutter/flutter#163293)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 5a38d23ee247 to 85722a1db585 (1 revision) (flutter/flutter#163286)
2025-02-14 matanlurey@users.noreply.github.com Add `.flutter-plugins-dependencies` to `FlutterBuildSystem`; update logic, add tests. (flutter/flutter#163278)
2025-02-14 jhy03261997@gmail.com Add table related semantics role (flutter/flutter#162339)
2025-02-14 jason-simmons@users.noreply.github.com [Impeller] Call glDebugMessageControlKHR only if the KHR_debug extension is available (flutter/flutter#163273)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 748415976ad1 to 5a38d23ee247 (3 revisions) (flutter/flutter#163271)
2025-02-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Use `transferToImageBitmap` instead of `createImageBitmap` (flutter/flutter#163175)
2025-02-14 jacksongardner@google.com [skwasm] Use `transferToImageBitmap` instead of `createImageBitmap` (flutter/flutter#163251)
...
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
Roll Flutter from e8f34a9 to 39b4951 (95 revisions)

flutter/flutter@e8f34a9...39b4951

2025-02-18 fluttergithubbot@gmail.com Marks Windows_arm64 plugin_test_windows to be flaky (flutter/flutter#163123)
2025-02-18 jonahwilliams@google.com [android] use macro definition to shrink repetitive JNI code size. (flutter/flutter#163395)
2025-02-18 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#163474)
2025-02-18 mdebbar@google.com [web] Cleanup everything HTML from the engine (outside html/ folder) (flutter/flutter#162840)
2025-02-18 flar@google.com [Impeller] add support for rational bezier conics to Path (flutter/flutter#163282)
2025-02-18 36861262+QuncCccccc@users.noreply.github.com Change `cardTheme`, `dialogTheme`, and `tabBarTheme` type to `xxxThemeData` (flutter/flutter#157292)
2025-02-18 jason-simmons@users.noreply.github.com Update integration test and benchmark Android .gitignore files to match the current app template (flutter/flutter#163276)
2025-02-18 chinmaygarde@google.com [Impeller] Don't create a redundant typography context. (flutter/flutter#163513)
2025-02-18 engine-flutter-autoroll@skia.org Roll Dart SDK from fcef25f18e4d to 023ac80cef14 (1 revision) (flutter/flutter#163110)
2025-02-18 reidbaker@google.com update module_host_with_custom_build_v2_embedding to target android 35 and to use the latest gradle and agp versions (flutter/flutter#163542)
2025-02-18 jonahwilliams@google.com [Impeller] when binding to READ_FRAMEBUFFER, treat multisampled textures as single sampled. (flutter/flutter#163345)
2025-02-18 sokolovskyi.konstantin@gmail.com Add missing properties to _ArcPaintPredicate. (flutter/flutter#162572)
2025-02-18 engine-flutter-autoroll@skia.org Roll Packages from 8542af3 to cb4fb13 (4 revisions) (flutter/flutter#163544)
2025-02-18 reidbaker@google.com Remove bringup for android_display_cutout (flutter/flutter#163312)
2025-02-18 reidbaker@google.com Create VersionUtils class and unit tests and extract logic out of flutter.groovy (flutter/flutter#163166)
2025-02-18 matanlurey@users.noreply.github.com Invalidate `pod install` output if `.flutter-plugins-dependencies` content changes. (flutter/flutter#163275)
2025-02-18 robert.ancell@canonical.com Replace hard coded numbers with mouse button defines (flutter/flutter#163503)
2025-02-18 engine-flutter-autoroll@skia.org Roll Skia from 9147a9654043 to 6da10829d017 (1 revision) (flutter/flutter#163531)
2025-02-18 engine-flutter-autoroll@skia.org Roll Skia from 92aaa4e20ea7 to 9147a9654043 (2 revisions) (flutter/flutter#163512)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 71a160edc9d9 to 92aaa4e20ea7 (1 revision) (flutter/flutter#163488)
2025-02-17 engine-flutter-autoroll@skia.org Roll Packages from 625023a to 8542af3 (21 revisions) (flutter/flutter#163484)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 7e3129d5db11 to 71a160edc9d9 (1 revision) (flutter/flutter#163459)
2025-02-17 engine-flutter-autoroll@skia.org Roll Skia from 40ce5ef20d22 to 7e3129d5db11 (1 revision) (flutter/flutter#163451)
2025-02-16 engine-flutter-autoroll@skia.org Roll Skia from bb166c85957b to 40ce5ef20d22 (1 revision) (flutter/flutter#163403)
2025-02-15 engine-flutter-autoroll@skia.org Roll Skia from ff94581f1f8a to bb166c85957b (1 revision) (flutter/flutter#163381)
2025-02-15 58529443+srujzs@users.noreply.github.com Move DWDS initialization into the onLoadEndCallback for the DDC library bundle format (flutter/flutter#163338)
2025-02-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Handle MakeGrContext returning null (flutter/flutter#163332)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 13a3b6f34ee8 to ff94581f1f8a (1 revision) (flutter/flutter#163347)
2025-02-14 bkonyi@google.com Fix failing chrome_dev_mode tests (flutter/flutter#163346)
2025-02-14 47866232+chunhtai@users.noreply.github.com Adds all semantics roles (flutter/flutter#163075)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 20924303cc25 to 13a3b6f34ee8 (1 revision) (flutter/flutter#163336)
2025-02-14 bkonyi@google.com [ Widget Preview ] Add experimental support for web-based widget preview environment (flutter/flutter#163154)
2025-02-14 jonahwilliams@google.com [Impeller] don't use glFramebufferBlit for onscreen restore. (flutter/flutter#163327)
2025-02-14 58529443+srujzs@users.noreply.github.com Align web terminal messages with the VM (flutter/flutter#163268)
2025-02-14 victoreronmosele@gmail.com Manually roll customer_testing to enable rfw tests (flutter/flutter#163030)
2025-02-14 ybz975218925@gmail.com Refactor SliverMainAxisGroup for reverse mode. (flutter/flutter#161849)
2025-02-14 30870216+gaaclarke@users.noreply.github.com Tweaked TextContents math to avoid floating point errors (flutter/flutter#162480)
2025-02-14 kevinjchisholm@google.com [release] Update cherry-pick CHANGELOG requirements (flutter/flutter#163318)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 85722a1db585 to 20924303cc25 (2 revisions) (flutter/flutter#163293)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 5a38d23ee247 to 85722a1db585 (1 revision) (flutter/flutter#163286)
2025-02-14 matanlurey@users.noreply.github.com Add `.flutter-plugins-dependencies` to `FlutterBuildSystem`; update logic, add tests. (flutter/flutter#163278)
2025-02-14 jhy03261997@gmail.com Add table related semantics role (flutter/flutter#162339)
2025-02-14 jason-simmons@users.noreply.github.com [Impeller] Call glDebugMessageControlKHR only if the KHR_debug extension is available (flutter/flutter#163273)
2025-02-14 engine-flutter-autoroll@skia.org Roll Skia from 748415976ad1 to 5a38d23ee247 (3 revisions) (flutter/flutter#163271)
2025-02-14 1961493+harryterkelsen@users.noreply.github.com [canvaskit] Use `transferToImageBitmap` instead of `createImageBitmap` (flutter/flutter#163175)
2025-02-14 jacksongardner@google.com [skwasm] Use `transferToImageBitmap` instead of `createImageBitmap` (flutter/flutter#163251)
...
romanejaquez pushed a commit to romanejaquez/flutter that referenced this pull request Aug 14, 2025
**1. framework side:**
This PR Create semantics node for rows in table's
`assembleSemanticsNode` function.

**2. web side:**
I tested on my mac, and i need to remove the 
`<flt-semantics-container>` between table and row, row and cell to
traverse inside table, removing those transfom intermediate containers
on web will be a bit of hassle and will be in another separate PR.

For example this code can only announce table but can’t get into cells.
```
<flt-semantics id="flt-semantic-node-4" role="table" style="position: absolute; overflow: visible; width: 751px; height: 56px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 0, 56); pointer-events: none; z-index: 1;">
    <flt-semantics-container style="position: absolute; pointer-events: none; top: 0px; left: 0px;">
        <flt-semantics id="flt-semantic-node-6" role="row" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: none;">
            <flt-semantics-container style="position: absolute; pointer-events: none; top: 0px; left: 0px;">
                <flt-semantics id="flt-semantic-node-5" role="columnheader" aria-label="Name" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: all;"></flt-semantics>
            </flt-semantics-container>
        </flt-semantics>
    </flt-semantics-container>
</flt-semantics>
```
If I removed the in between `</flt-semantics-container>`, the code come 
```
<flt-semantics id="flt-semantic-node-4" role="table" style="position: absolute; overflow: visible; width: 751px; height: 56px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 0, 56); pointer-events: none; z-index: 1;">
    <flt-semantics id="flt-semantic-node-6" role="row" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: none;">
        <flt-semantics id="flt-semantic-node-5" role="columnheader" aria-label="Name" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: all;"></flt-semantics>
    </flt-semantics>
</flt-semantics>
```
And I can get into table cells.


**3. Other aria-attributes:** 

[aria-colcount](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-colcount) ,[aria-rowcount](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-rowcount) 
[aria-colindex](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-colindex) 
[aria-rowindex](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-rowindex) 
* theres attributes are only needed if some rows and columns are hidden
in the Dom tree. havn't added them yet

aria-rowspan , aria-colspan : 
*we currently don't support row span and col span in our widgets.
related issue: flutter#21594

 related: flutter#162339
issue: flutter#45205

## 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], including [Features
we expect every widget to implement].
- [ ] I signed the [CLA].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [ ] I updated/added relevant documentation (doc comments with `///`).
- [ ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [ ] All existing and new tests are passing.

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

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
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) engine flutter/engine related. See also e: labels. f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels. platform-web Web applications specifically

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants