30246 Commits

Author SHA1 Message Date
Hannah Jin
6e74ee4833
[web][a11y]Delete _childContainerElement (#163662)
delete _childContainerElement , add the rect compensate and scrolling
adjustment to the children

## 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
2025-03-17 21:19:33 +00:00
engine-flutter-autoroll
8c99c60a62
Roll Skia from e45207898e60 to fa669e2e6d12 (8 revisions) (#165342)
https://skia.googlesource.com/skia.git/+log/e45207898e60..fa669e2e6d12

2025-03-17 kjlubick@google.com Reduce safety hatches in SkOpSegment.cpp
to 1000
2025-03-17 jamesgk@google.com [graphite] Intersect scissor and not
viewport with attachment
2025-03-17 michaelludwig@google.com [graphite]
TextureProxy::isProtected() returns enum
2025-03-17 michaelludwig@google.com Reland "[graphite] Convert drawPath
to drawPoints for lines"
2025-03-17 lehoangquyen@google.com Graphite: Use approx sizes for
DstCopyTexture
2025-03-17 robertphillips@google.com [graphite] Update
ChromePrecompileTest to make sharing w/ Chrome easier
2025-03-17 bungeman@google.com Fix CoreText data font weight calculation
2025-03-17 jvanverth@google.com Revert "[rust png] Tweak mapping of
Skia's `CompressionLevel` to `png` APIs."

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com,jvanverth@google.com,kjlubick@google.com on the
revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
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
2025-03-17 21:11:32 +00:00
engine-flutter-autoroll
8bcaefe0a9
Roll Fuchsia Linux SDK from SDNQgVXxHbbd0qsVw... to mPniqXmPpXqMMpM8z... (#165313)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
Please CC chinmaygarde@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
2025-03-17 17:01:52 +00:00
engine-flutter-autoroll
9a644a96ee
Roll Dart SDK from 9283d47199b7 to 725172afbc42 (1 revision) (#165310)
https://dart.googlesource.com/sdk.git/+log/9283d47199b7..725172afbc42

2025-03-17 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-198.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-17 17:00:07 +00:00
gaaclarke
71a5b734c7
Removes assumption that basis scalar and rounded_scalar match (#165166)
fixes https://github.com/flutter/flutter/issues/165130

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] 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
2025-03-17 16:58:06 +00:00
engine-flutter-autoroll
d5fe437f57
Roll Fuchsia Linux SDK from LPz5j18JDsms41r3T... to SDNQgVXxHbbd0qsVw... (#165275)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
Please CC chinmaygarde@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
2025-03-16 14:21:11 +00:00
engine-flutter-autoroll
8d69806540
Roll Dart SDK from 067560bcd521 to 9283d47199b7 (1 revision) (#165269)
https://dart.googlesource.com/sdk.git/+log/067560bcd521..9283d47199b7

2025-03-16 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-197.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-16 05:53:36 +00:00
engine-flutter-autoroll
a62569fa04
Roll Dart SDK from 40bb66a945e4 to 067560bcd521 (1 revision) (#165262)
https://dart.googlesource.com/sdk.git/+log/40bb66a945e4..067560bcd521

2025-03-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-196.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-15 21:44:18 +00:00
engine-flutter-autoroll
0027b63978
Roll Fuchsia Linux SDK from efdpJgW4DIV6j1mO1... to LPz5j18JDsms41r3T... (#165252)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
Please CC chinmaygarde@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
2025-03-15 12:06:32 +00:00
engine-flutter-autoroll
7817454563
Roll Dart SDK from f23d496f0585 to 40bb66a945e4 (1 revision) (#165250)
https://dart.googlesource.com/sdk.git/+log/f23d496f0585..40bb66a945e4

2025-03-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-195.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-15 09:06:25 +00:00
engine-flutter-autoroll
b9240711c8
Roll Dart SDK from 8814749ec6a4 to f23d496f0585 (1 revision) (#165246)
https://dart.googlesource.com/sdk.git/+log/8814749ec6a4..f23d496f0585

2025-03-15 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-194.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-15 04:13:32 +00:00
engine-flutter-autoroll
f77193ed0b
Roll Skia from 4568e766ed0a to f124daeb564d (1 revision) (#165245)
https://skia.googlesource.com/skia.git/+log/4568e766ed0a..f124daeb564d

2025-03-15 michaelludwig@google.com Revert "[graphite] Convert drawPath
to drawPoints for lines"

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com,danieldilan@google.com,kjlubick@google.com on
the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
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
2025-03-15 03:33:33 +00:00
engine-flutter-autoroll
92874a42a4
Roll Skia from bac6e76abfc7 to 4568e766ed0a (5 revisions) (#165241)
https://skia.googlesource.com/skia.git/+log/bac6e76abfc7..4568e766ed0a

2025-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
jsfiddle-base from b790c1251ebc to 05716f858285
2025-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
shaders-base from cfcb50e90210 to 64b9cec3c82d
2025-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
skottie-base from 62983236d361 to 868103199143
2025-03-14 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
debugger-app-base from 02aefa9619f3 to 9e80d6bc5f11
2025-03-14 michaelludwig@google.com [graphite] Convert drawPath to
drawPoints for lines

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com,danieldilan@google.com,kjlubick@google.com on
the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
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
2025-03-15 01:10:25 +00:00
engine-flutter-autoroll
74ce7fd6d7
Roll Dart SDK from a51f1bfa0f6a to 8814749ec6a4 (2 revisions) (#165227)
https://dart.googlesource.com/sdk.git/+log/a51f1bfa0f6a..8814749ec6a4

2025-03-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-193.0.dev
2025-03-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-192.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-14 23:07:02 +00:00
engine-flutter-autoroll
354ec5ca80
Roll Skia from 98b6922deecf to bac6e76abfc7 (5 revisions) (#165225)
https://skia.googlesource.com/skia.git/+log/98b6922deecf..bac6e76abfc7

2025-03-14 bungeman@google.com Use default and not portable typeface in
bench
2025-03-14 bungeman@google.com Use TestFontScanner to create test
FontMgr
2025-03-14 kjlubick@google.com Remove unscheduleable Debian11 jobs
2025-03-14 borenet@google.com [infra] Add jobs for MacBookPro 15,1
2025-03-14 jvanverth@google.com Reland "[graphite] Add
TextAtlasManager::freeGpuResources()."

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com,danieldilan@google.com,kjlubick@google.com on
the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
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
2025-03-14 23:01:25 +00:00
Kate Lovett
b2bbb52ee1
Add remaining dart fixes for Color deprecations when importing painting.dart (#162609)
Towards https://github.com/flutter/flutter/issues/160617

Noticed the `opacity` and `withOpacity` deprecations were supported by
dart fix, but not the others. Adding them here.

But strange too given `dart:ui` does not support dart fix
(https://github.com/dart-lang/sdk/issues/59764)..

---

We think since `painting.dart` exports `dart:ui`, this is somewhat of a
workaround.

If a user has this atop their file:

```dart
import 'package:flutter/painting.dart'; // 👍  dart fix will work here
```
 If instead

```dart
import 'dart:ui'; //   dart fix will not work here
```

Will continue to follow up on dart fix support for `dart:X` libraries,
for now hopefully this will help!

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] 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
2025-03-14 22:33:08 +00:00
Loïc Sharma
f6f6030b20
[Accessibility] Add required semantics flags (#164585)
This adds "required" semantic nodes, which indicate a node that requires
user input before a form can be submitted.

On Flutter Web, these get converted into [`aria-required`
attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-required).

Addresses https://github.com/flutter/flutter/issues/162139

### Example app

_⚠️ This example app includes a `DropdownMenu` which currently produces
an incorrect semantics tree. That will be fixed by
https://github.com/flutter/flutter/pull/163638._

Today, you wrap your control in a `Semantics(required: true, child
...)`. For example:

<details>
<summary>Example app with required semantic flags...</summary>

```dart
import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:flutter/semantics.dart';

void main() {
  runApp(const MyApp());
  SemanticsBinding.instance.ensureSemantics();
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: Scaffold(body: const MyForm()));
  }
}

class MyForm extends StatefulWidget {
  const MyForm({super.key});

  @override
  State<MyForm> createState() => MyFormState();
}

class MyFormState extends State<MyForm> {
  int _dropdownValue = 0;
  bool _checkboxValue = false;
  int _radioGroupValue = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Semantics(required: true, child: TextField()),

        Semantics(
          required: true,
          child: DropdownMenu<int>(
            initialSelection: _dropdownValue,
            onSelected: (value) => setState(() => _dropdownValue = value ?? 0),
            dropdownMenuEntries: [
              DropdownMenuEntry(value: 0, label: 'Dropdown entry 1'),
              DropdownMenuEntry(value: 1, label: 'Dropdown entry 2'),
            ],
          ),
        ),

        ListTile(
          title: Text('Checkbox'),
          leading: Semantics(
            required: true,
            child: Checkbox(
              value: _checkboxValue,
              onChanged:
                  (value) => setState(() => _checkboxValue = value ?? false),
            ),
          ),
        ),

        Semantics(
          label: 'Radio group',
          role: SemanticsRole.radioGroup,
          explicitChildNodes: true,
          required: true,
          child: Column(
            children: <Widget>[
              ListTile(
                title: const Text('Radio 1'),
                leading: Radio<int>(
                  value: 0,
                  groupValue: _radioGroupValue,
                  onChanged:
                      (int? value) =>
                          setState(() => _radioGroupValue = value ?? 0),
                ),
              ),
              ListTile(
                title: const Text('Radio 2'),
                leading: Radio<int>(
                  value: 1,
                  groupValue: _radioGroupValue,
                  onChanged:
                      (int? value) =>
                          setState(() => _radioGroupValue = value ?? 0),
                ),
              ),
            ],
          ),
        ),

        Padding(
          padding: const EdgeInsets.symmetric(vertical: 16),
          child: ElevatedButton(onPressed: () {}, child: const Text('Submit')),
        ),
      ],
    );
  }
}

```

</details>

<details>
<summary>Semantics tree...</summary>

```
SemanticsNode#0
 │ Rect.fromLTRB(0.0, 0.0, 645.0, 1284.0)
 │
 └─SemanticsNode#1
   │ Rect.fromLTRB(0.0, 0.0, 645.0, 1284.0)
   │ textDirection: ltr
   │
   └─SemanticsNode#2
     │ Rect.fromLTRB(0.0, 0.0, 645.0, 1284.0)
     │ sortKey: OrdinalSortKey#e3336(order: 0.0)
     │
     └─SemanticsNode#3
       │ Rect.fromLTRB(0.0, 0.0, 645.0, 1284.0)
       │ flags: scopesRoute
       │
       ├─SemanticsNode#4
       │   Rect.fromLTRB(0.0, 0.0, 645.0, 48.0)
       │   actions: didGainAccessibilityFocus, didLoseAccessibilityFocus,
       │     focus, tap
       │   flags: isTextField, hasEnabledState, isEnabled, hasRequiredState,
       │     isRequired
       │   textDirection: ltr
       │   text selection: [0, 0]
       │   currentValueLength: 0
       │
       ├─SemanticsNode#5
       │ │ Rect.fromLTRB(0.0, 48.0, 199.3, 96.0)
       │ │ flags: hasRequiredState, isRequired
       │ │
       │ └─SemanticsNode#7
       │   │ Rect.fromLTRB(0.0, 0.0, 199.3, 48.0)
       │   │ actions: didGainAccessibilityFocus, didLoseAccessibilityFocus,
       │   │   focus, moveCursorBackwardByCharacter, moveCursorBackwardByWord,
       │   │   moveCursorForwardByCharacter, moveCursorForwardByWord, tap
       │   │ flags: isTextField, hasEnabledState, isEnabled
       │   │ value: "Dropdown entry 1"
       │   │ textDirection: ltr
       │   │ text selection: [15, 15]
       │   │ currentValueLength: 16
       │   │
       │   ├─SemanticsNode#9
       │   │   Rect.fromLTRB(4.0, 4.0, 44.0, 44.0)
       │   │   actions: focus, tap
       │   │   flags: hasSelectedState, isButton, hasEnabledState, isEnabled,
       │   │     isFocusable
       │   │
       │   └─SemanticsNode#8
       │       Rect.fromLTRB(155.3, 4.0, 195.3, 44.0)
       │       actions: focus, tap
       │       flags: hasSelectedState, isButton, hasEnabledState, isEnabled,
       │         isFocusable
       │
       ├─SemanticsNode#10
       │ │ Rect.fromLTRB(0.0, 96.0, 645.0, 144.0)
       │ │ flags: hasSelectedState, hasEnabledState, isEnabled
       │ │ label: "Checkbox"
       │ │ textDirection: ltr
       │ │
       │ └─SemanticsNode#11
       │     Rect.fromLTRB(16.0, 4.0, 56.0, 44.0)
       │     actions: focus, tap
       │     flags: hasCheckedState, hasEnabledState, isEnabled, isFocusable,
       │       hasRequiredState, isRequired
       │
       ├─SemanticsNode#12
       │ │ Rect.fromLTRB(0.0, 144.0, 645.0, 240.0)
       │ │ flags: hasRequiredState, isRequired
       │ │ label: "Radio group"
       │ │ textDirection: ltr
       │ │ role: radioGroup
       │ │
       │ ├─SemanticsNode#13
       │ │ │ Rect.fromLTRB(0.0, 0.0, 645.0, 48.0)
       │ │ │ flags: hasSelectedState, hasEnabledState, isEnabled
       │ │ │ label: "Radio 1"
       │ │ │ textDirection: ltr
       │ │ │
       │ │ └─SemanticsNode#14
       │ │     Rect.fromLTRB(16.0, 8.0, 48.0, 40.0)
       │ │     actions: focus, tap
       │ │     flags: hasCheckedState, isChecked, hasSelectedState, isSelected,
       │ │       hasEnabledState, isEnabled, isInMutuallyExclusiveGroup,
       │ │       isFocusable
       │ │
       │ └─SemanticsNode#15
       │   │ Rect.fromLTRB(0.0, 48.0, 645.0, 96.0)
       │   │ flags: hasSelectedState, hasEnabledState, isEnabled
       │   │ label: "Radio 2"
       │   │ textDirection: ltr
       │   │
       │   └─SemanticsNode#16
       │       Rect.fromLTRB(16.0, 8.0, 48.0, 40.0)
       │       actions: focus, tap
       │       flags: hasCheckedState, hasSelectedState, hasEnabledState,
       │         isEnabled, isInMutuallyExclusiveGroup, isFocusable
       │
       └─SemanticsNode#17
           Rect.fromLTRB(0.0, 256.0, 92.7, 288.0)
           actions: focus, tap
           flags: isButton, hasEnabledState, isEnabled, isFocusable
           label: "Submit"
           textDirection: ltr
           thickness: 1.0
```

</details>

<details>
<summary>HTML generated by Flutter web...</summary>

```html
<html>

<body flt-embedding="full-page" flt-renderer="canvaskit" flt-build-mode="debug" spellcheck="false" style="">

  <flt-announcement-host>
    <flt-announcement-polite aria-live="polite" style="">
    </flt-announcement-polite>
    <flt-announcement-assertive aria-live="assertive" style="">
    </flt-announcement-assertive>
  </flt-announcement-host>

  <flutter-view flt-view-id="0" tabindex="0" style="">
    <flt-glass-pane>
    </flt-glass-pane>

    <flt-text-editing-host>
    </flt-text-editing-host>

    <flt-semantics-host style="">
      <flt-semantics id="flt-semantic-node-0" style="">
        <flt-semantics-container style="">
          <flt-semantics id="flt-semantic-node-1" style="">
            <flt-semantics-container style="">
              <flt-semantics id="flt-semantic-node-2" style="">
                <flt-semantics-container style="">
                  <flt-semantics id="flt-semantic-node-3" role="dialog" style="">
                    <flt-semantics-container style="">
                      <flt-semantics id="flt-semantic-node-4" style="">
                        <input type="text" spellcheck="false" autocorrect="on" autocomplete="on"
                          data-semantics-role="text-field" aria-required="true" style="">
                      </flt-semantics>
                      <flt-semantics id="flt-semantic-node-5" aria-required="true" style="">
                        <flt-semantics-container style="">
                          <flt-semantics id="flt-semantic-node-7" style="">
                            <input type="text" spellcheck="false" autocorrect="off" autocomplete="off"
                              data-semantics-role="text-field" style="">
                            <flt-semantics-container style="">
                              <flt-semantics id="flt-semantic-node-9" role="button" tabindex="0" aria-selected="false"
                                flt-tappable="" style="">
                              </flt-semantics>
                              <flt-semantics id="flt-semantic-node-8" role="button" tabindex="0" aria-selected="false"
                                flt-tappable="" style="">
                              </flt-semantics>
                            </flt-semantics-container>
                          </flt-semantics>
                        </flt-semantics-container>
                      </flt-semantics>
                      <flt-semantics id="flt-semantic-node-10" role="group" aria-label="Checkbox" aria-selected="false"
                        style="">
                        <flt-semantics-container style="">
                          <flt-semantics id="flt-semantic-node-11" tabindex="0" aria-required="true" flt-tappable=""
                            role="checkbox" aria-checked="false" style="">
                          </flt-semantics>
                        </flt-semantics-container>
                      </flt-semantics>
                      <flt-semantics id="flt-semantic-node-12" role="radiogroup" aria-label="Radio group"
                        aria-required="true" style="">
                        <flt-semantics-container style="">
                          <flt-semantics id="flt-semantic-node-13" role="group" aria-label="Radio 1"
                            aria-selected="false" style="">
                            <flt-semantics-container style="">
                              <flt-semantics id="flt-semantic-node-14" tabindex="0" flt-tappable="" role="radio"
                                aria-checked="true" style="">
                              </flt-semantics>
                            </flt-semantics-container>
                          </flt-semantics>
                          <flt-semantics id="flt-semantic-node-15" role="group" aria-label="Radio 2"
                            aria-selected="false" style="">
                            <flt-semantics-container style="">
                              <flt-semantics id="flt-semantic-node-16" tabindex="0" flt-tappable="" role="radio"
                                aria-checked="false" style="">
                              </flt-semantics>
                            </flt-semantics-container>
                          </flt-semantics>
                        </flt-semantics-container>
                      </flt-semantics>
                      <flt-semantics id="flt-semantic-node-17" role="button" tabindex="0" flt-tappable="" style="">
                    </flt-semantics-container>
                  </flt-semantics>
                </flt-semantics-container>
              </flt-semantics>
            </flt-semantics-container>
          </flt-semantics>
        </flt-semantics-container>
      </flt-semantics>
    </flt-semantics-host>
  </flutter-view>
</body>

</html>

```

</details>


In the future, we can update Material and Cupertino widgets to
automatically make their semantics node required when desirable.


## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] 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
2025-03-14 21:06:18 +00:00
engine-flutter-autoroll
635ed5b778
Roll Skia from f4467ff38f1f to 98b6922deecf (5 revisions) (#165215)
https://skia.googlesource.com/skia.git/+log/f4467ff38f1f..98b6922deecf

2025-03-14 lukasza@chromium.org [rust png] Tweak mapping of Skia's
`CompressionLevel` to `png` APIs.
2025-03-14 kjlubick@google.com Move Debian11 Perf and Test jobs to
Ubuntu Golo machines
2025-03-14 danieldilan@google.com Add color type specification to encode
benchmarks
2025-03-14 bungeman@google.com [fontconfig] Check file is supported
2025-03-14 kjlubick@google.com Misc cleanups in gradient pipeline

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com,danieldilan@google.com,kjlubick@google.com on
the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
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
2025-03-14 20:38:12 +00:00
engine-flutter-autoroll
ca287b67e1
Roll Dart SDK from 576514b2bfce to a51f1bfa0f6a (1 revision) (#165191)
https://dart.googlesource.com/sdk.git/+log/576514b2bfce..a51f1bfa0f6a

2025-03-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-191.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-14 14:53:25 +00:00
engine-flutter-autoroll
208883fe12
Roll Dart SDK from ceb58442306e to 576514b2bfce (2 revisions) (#165180)
https://dart.googlesource.com/sdk.git/+log/ceb58442306e..576514b2bfce

2025-03-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-190.0.dev
2025-03-14 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-189.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-14 09:46:27 +00:00
engine-flutter-autoroll
fea4197145
Roll Fuchsia Linux SDK from qXOLczyRJadxMW0PK... to efdpJgW4DIV6j1mO1... (#165175)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
Please CC chinmaygarde@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
2025-03-14 08:56:30 +00:00
Jonah Williams
d64db52438
[Impeller] Enable mediatek on API 34+. (#165156)
Most of the reported Mediatek issues are API 29/30, maybe up to 31. By
34 it should work, and the mokey device we have works fine with Vulkan
and runs on CI. This is necessary to allow MediaTek devices to use HCPP
without us having to write a new rendering surface abstraction for GL.

This does _not_ enable PowerVR, which is still denylisted in the vulkan
backend.
2025-03-14 01:27:29 +00:00
engine-flutter-autoroll
603981008e
Roll Dart SDK from cd06d4ba4fec to ceb58442306e (5 revisions) (#165159)
https://dart.googlesource.com/sdk.git/+log/cd06d4ba4fec..ceb58442306e

2025-03-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-188.0.dev
2025-03-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-187.0.dev
2025-03-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-186.0.dev
2025-03-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-185.0.dev
2025-03-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-184.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC chinmaygarde@google.com,dart-vm-team@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
2025-03-14 00:56:23 +00:00
Harlen Batagelo
02f3ddf989
Update the mouse cursor handler to work with multi-view on Windows (#163855)
Partially fixes https://github.com/flutter/flutter/issues/142845.

This PR removes implicit view assumptions from the
`'flutter/mousecursor'` channel handler on Windows.

The cursor is now set for all existing views, ensuring that the current
`FlutterWindow` with the cursor in its client area uses the correct
cursor. The method arguments remain unchanged.

Cursor handler tests have also been updated to avoid assuming an
implicit view.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] 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
2025-03-13 22:10:02 +00:00
Jonah Williams
71010953aa
[Impeller] cache descriptor set layouts. (#164952)
Currently we reset the entire descriptor pool(s) each frame.

We can actually reuse the allocated descriptor sets, as that is safe to
do as soon as the cmd buffer that references them has been submitted
(AFAIK). This provides a minor speed up for a large amount of small
drawing ops, but not much beyond that.
2025-03-13 21:42:54 +00:00
Jonah Williams
91b7617fc5
[Impeller] disable depth-stencil and MSAA for gaussian and downsample. (#165137)
Using MSAA w/ depth stencil requires extra work on the GPU to track
multiple samples and clear the depth/stencil textures.

See also:
https://docs.qualcomm.com/bundle/publicresource/topics/80-78185-2/best_practices.html

Its unclear _how_ much this matters, but adreno recommends minimizing
bin count and as such minimizing msaa samples. Well, we can fully
minimize it by not enabling it. Removing depth stencil was also
considered in the past, this should be removed as it requires us to
clear, which isn't free.

Its likely this won't have a huge performance impact, but seems like a
good best practice.
2025-03-13 21:42:54 +00:00
chunhtai
5122ffd069
Adds list and list item roles (#164809)
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

fixes https://github.com/flutter/flutter/issues/162121

## 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
2025-03-13 21:41:15 +00:00
engine-flutter-autoroll
edbdafd7a4
Manual roll Dart SDK from 404de187d1e5 to cd06d4ba4fec (6 revisions) (#165144)
Manual roll requested by asiva@google.com

https://dart.googlesource.com/sdk.git/+log/404de187d1e5..cd06d4ba4fec

2025-03-13 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-183.0.dev
2025-03-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-182.0.dev
2025-03-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-181.0.dev
2025-03-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-180.0.dev
2025-03-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-179.0.dev
2025-03-12 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-178.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC
asiva@google.com,chinmaygarde@google.com,dart-vm-team@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
2025-03-13 20:24:40 +00:00
engine-flutter-autoroll
c7de6a6a80
Roll Skia from adf8f8a92721 to f4467ff38f1f (29 revisions) (#165142)
https://skia.googlesource.com/skia.git/+log/adf8f8a92721..f4467ff38f1f

2025-03-13 robertphillips@google.com [graphite] Rein in over-generation
for circular arcs and analytic blurs
2025-03-13 borenet@google.com [infra] Add jobs for migrated Win11
RTX3060 NUCs
2025-03-13 robertphillips@google.com [graphite] Add set of candidate
Chrome precompilation PaintOptions
2025-03-13 bungeman@google.com [fontconfig] Hold lock when destroying
pattern
2025-03-13 bungeman@google.com [fontations] Bulk up lookup_glyph_or_zero
2025-03-13 ccameron@chromium.org SkJpegMetadataDecoder: Fall back to
base color space, not sRGB
2025-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from bdff6ade3987 to ac251fa88ae1 (13 revisions)
2025-03-13 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn
from 837abc09427f to ffcdc2652f61 (18 revisions)
2025-03-12 bungeman@google.com [pdf] Correct /Parent for outline entries
2025-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
debugger-app-base from bfb2f80c0482 to 02aefa9619f3
2025-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
skottie-base from 9ee87e7f230f to 62983236d361
2025-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
jsfiddle-base from b07c254904bc to b790c1251ebc
2025-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
shaders-base from 536def9c5709 to cfcb50e90210
2025-03-12 michaelludwig@google.com [viewer] Avoid modifying ImgGui when
it's locked
2025-03-12 kjlubick@google.com Move SkColorPriv from include to src
2025-03-12 michaelludwig@google.com [graphite] Do not unpremul color
data in gradient storage buffer
2025-03-12 kjlubick@google.com Remove extra spaces and comments from
sksl fragments
2025-03-12 danieldilan@google.com Fix asan failure from int overflow
after left shift
2025-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from f38a081cdea4 to bdff6ade3987 (13 revisions)
2025-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
SwiftShader from c12c13839d68 to 5d97d5be883b (1 revision)
2025-03-12 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn
from 06dd9ef55ce2 to 837abc09427f (22 revisions)
2025-03-11 borenet@google.com [infra] Speculative fix for file copies on
Android
2025-03-11 danieldilan@google.com Roll libjpeg-turbo to latest in
Chromium
2025-03-11 danieldilan@google.com [SkScan_AAA] Only round y in
updateQuadratic if dx/dy isn't too large
2025-03-11 jlavrova@google.com Adding Bidi API to CanvasKit
2025-03-11 robertphillips@google.com [graphite] Update
ChromePrecompileTest for upcoming changes
2025-03-11 robertphillips@google.com [graphite] Fix Pipeline label for
when resolve-loads are relevant
2025-03-11 kjlubick@google.com Remove SK_USE_LEGACY_MIPMAP_LOD_BIAS
guard
2025-03-11 shrekshao@google.com Update detecting dawn compat mode logic

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com,danieldilan@google.com,kjlubick@google.com on
the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
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
2025-03-13 20:03:24 +00:00
Jonah Williams
c38f0b7aae
[Impeller] fix validation check when restoring to onscreen with BDF and mips. (#165098)
Fixes https://github.com/flutter/flutter/issues/163421

If we restore to the onscreen but need to generate mips (because its a
toImage call) then we could miss the mip map generation. This will
primarily happen on Android emulators as they do not support framebuffer
fetch.
2025-03-13 17:55:02 +00:00
Siva
0a937ba4da
Use AOT snapshot of kernel_worker (#165103)
Use AOT snapshot of kernel_worker
2025-03-13 16:58:20 +00:00
chunhtai
884de61855
adds status and alert roles (#164925)
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

fixes https://github.com/flutter/flutter/issues/162287
fixes https://github.com/flutter/flutter/issues/162286

## 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
2025-03-13 15:54:08 +00:00
engine-flutter-autoroll
f428fa07d4
Roll Fuchsia Linux SDK from KGG4cSZrg8NIGO10F... to qXOLczyRJadxMW0PK... (#165107)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
Please CC chinmaygarde@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
2025-03-13 06:35:32 +00:00
Jonah Williams
4670159521
Revert "[macOS] Enable Impeller by default on macOS." (#165091)
Reverts flutter/flutter#164572
2025-03-13 01:48:21 +00:00
Jonah Williams
6f1c04f54f
Change fallback behavior for devices pre API 29 to Skia regardless of Impeller state. (#165075)
There are currently a large amount of crashes coming from older devices
that we don't have good test coverage for. For now, lets remove the
fallback to ImpellerGLES on old devices and instead use SkiaGLES, which
we know from experience works on these older devices.
2025-03-12 22:28:06 +00:00
LouiseHsu
895cab5bd7
[a11y] fixes overlayPortals not showing VoiceControl labels (#164754)
Fixes https://github.com/flutter/flutter/issues/157753
Even when a `uiaccessibilityelement` is marked as
`accessibilityRespondsToUserInteraction`, if it's spatially far away
enough from its parent's `accessibilityFrame`, a VoiceControl label will
not be created for it. In this PR, I set the parent
`SemanticObjectContainer`'s `accessibilityFrame` so it is the minimum
rect that will cover all it's children.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
2025-03-12 20:40:07 +00:00
Jonah Williams
b4a04cc866
[Impeller] fix crash when loading shader before AiksContext is initialized. (#165071)
If the aiks context isn't initialized, we will create one on the fly
which can actually crash on the GLES backend. Add a check if the context
is already initialized and cancel precaching of the shader which
triggers this crash. The precache is only a performance improvement and
is not critical for usability.

Fixes https://github.com/flutter/flutter/issues/164757
2025-03-12 19:20:10 +00:00
Jason Simmons
a7a4d0bd2b
Write macOS universal gen_snapshot binaries to a separate output directory (#164667)
Also use the name "gen_snapshot" when building for Android targets
instead of appending a target architecture to the filename.

This allows flutter_tools to find the universal gen_snapshot binary when
using a locally built engine. Previously the tools would search
directories like "clang_x64" and find build outputs that may not match
the host architecture.

Moving the universal gen_snapshot binary to a separate directory avoids
conflicts with Dart's gen_snapshot binary, which is placed at the root
of the target output directory.
2025-03-12 19:02:55 +00:00
gaaclarke
f0992e0965
Fixes rendering text rotated 180 degrees (#165008)
fixes https://github.com/flutter/flutter/issues/164958

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] 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
2025-03-12 18:14:16 +00:00
Mouad Debbar
212f66fbe7
Support detection of light and dark system colors (#164933)
Part of https://github.com/flutter/flutter/issues/118853

This PR is an enhancement to
https://github.com/flutter/flutter/pull/163335 to provide detection of
system colors for both light and dark mode. This is needed for the
construction of a
[`highContrastTheme`](https://api.flutter.dev/flutter/material/MaterialApp/highContrastTheme.html)
and
[`highContrastDarkTheme`](https://api.flutter.dev/flutter/material/MaterialApp/highContrastDarkTheme.html).
2025-03-12 16:36:11 +00:00
Siva
c3565e92d4
Roll Dart from 2d5dfe32cf2e to 404de187d1e5 (#165026)
https://dart.googlesource.com/sdk.git/+log/2d5dfe32cf2e..404de187d1e5

2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-177.0.dev
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-176.0.dev
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-175.0.dev
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-174.0.dev
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-173.0.dev
2025-03-10 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-172.0.dev
2025-03-12 05:53:25 +00:00
engine-flutter-autoroll
25e5ffd8c2
Roll Fuchsia Linux SDK from ngvNj-Ffcrgs_jPdQ... to KGG4cSZrg8NIGO10F... (#165014)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
Please CC chinmaygarde@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
2025-03-11 23:27:32 +00:00
Andrew Kolos
81139dbcab
in et, support building the Dart SDK with dynamic module support (#165003)
usage example: `et build -c host_release_arm64
--gn-args="--no-prebuilt-dart-sdk,--dart_dynamic_modules"`

<details>

<summary> Pre-launch checklist </summary> 


- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

</details>


<!-- 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
2025-03-11 20:21:46 +00:00
Kevin Moore
8821a27de8
[web_ui] Tighten up font fallback code (#164951)
Make one type and many members private
Make some fields final
2025-03-11 19:48:23 +00:00
gaaclarke
61a5fe7929
Switched the font atlas to discrete math for hash keys (#164822)
issue: https://github.com/flutter/flutter/issues/164606

This is a refactor of how we store font atlas data. Previously we were
using floating point values with custom hash functions as keys. This was
very hard to debug. This change instead makes all keys used in the font
atlas discrete.

The hope was that this might fix
https://github.com/flutter/flutter/issues/164606, or at least make it
easier to debug. It didn't fix the issue.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] 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
2025-03-11 18:12:51 +00:00
engine-flutter-autoroll
1cfbc3c106
Roll Skia from 9c42f62925a7 to adf8f8a92721 (1 revision) (#164986)
https://skia.googlesource.com/skia.git/+log/9c42f62925a7..adf8f8a92721

2025-03-11 drott@chromium.org [Fontations] Use improved stream to data
conversion

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com,danieldilan@google.com,kjlubick@google.com on
the revert to ensure that a human
is aware of the problem.

To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
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
2025-03-11 17:58:16 +00:00
Robert Ancell
39dc5717d5
Consolidate GTK mocks (#164890)
This was split across three files, consolidate into one.

---------

Co-authored-by: Harlen Batagelo <hbatagelo@gmail.com>
2025-03-11 15:30:09 +00:00
Jason Simmons
b60d60a166
Roll Vulkan memory allocator to c788c521 (#164825)
Fixes https://github.com/flutter/flutter/issues/162617
2025-03-11 13:58:36 +00:00
Matej Knopp
b1d0ffb6d2
[Windows] Make lifecycle manager updates atomic (#164872)
Required for multi-window.

On windows the `LifecycleManager` currently sends the lifecycle event as
soon as windows message is processed. This however causes problems when
changing focus between application windows.

When switching focus from HWND1 to HWND2, HWND1 first gets unfocused,
followed by HWND2 getting focused. After HWND1 gets unfocused,
`LifecycleManager` immediately notifies the framework that the
application is inactive, which is wrong as the application never went
into inactive state, followed by subsequent call to put the application
in resumed state when HWND2 is focused. Because this happens very
quickly, sometimes focus manager gets into inconsistent state.

To resolve this `LifecycleManager` should gather the all the changes
while window sends the messages and then notify the framework atomically
in next run loop turn.

This PR also simplifies the logic in `LifecycleManager` through which
the application state is derived from window states.

This PR removes engine forcing `resumed` lifecycle state at startup. I'm
not entirely sure what the point of this was - the state can and should
be determined solely from window states, this just seems to muddy the
state logic. Also it happens before the framework is even listening to
state changes.

The mutex in `WindowsLifecycleManager` is removed. Not sure why it was
there.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x ] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] 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

---------

Co-authored-by: Matthew Kosarek <matt.kosarek@canonical.com>
Co-authored-by: Harlen Batagelo <hbatagelo@gmail.com>
Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
2025-03-11 11:21:18 +00:00
Matej Knopp
91d195f642
[macOS] Prepare TextInputPlugin for multi-view (#164014)
Notable changes:
- `FlutterTextInputPlugin` is now owned by `FlutterEngine`.
- `FlutterTextInputPlugin` is only associated with a
`FlutterViewController` while having active IME connection.
- Changed private state of `TextInputPlugin` from properties to ivars.
There is no need for these to be properties, and the state was accessed
both as ivars and properties which seemed inconsistent.
- Updated test to reflect the changes

I've also tested everything including voice-over to make sure
accessibility didn't regress.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] 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
2025-03-11 11:12:10 +00:00