82418 Commits

Author SHA1 Message Date
flutteractionsbot
ea7fb0a887
[CP-stable][web] robustify safaridriver launch sequence (#164191)
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:
What is the link to the issue this cherry-pick is addressing?

https://github.com/flutter/flutter/issues/150023

### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples

Improve safaridriver launch process in Flutter's CI testing.

### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)

Improve stability of Flutter's macOS web tests in CI. No impact to customers, only release team.

### Workaround:
Is there a workaround for this issue?

Rerun.

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:
What are the steps to validate that this fix works?

N/A
2025-02-27 21:34:02 +00:00
flutteractionsbot
22cc257872
[CP-stable]Reenable linux_web_engine mac tests on Mac-14 (#164119)
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:
What is the link to the issue this cherry-pick is addressing?

Part of https://github.com/flutter/flutter/issues/148887.

### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples

Configuration changes to run test on macOS 14 for Flutter's CI.

### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)

Impacts what type of bot the test runs on for releases.

### Workaround:
Is there a workaround for this issue?

N/A

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:
What are the steps to validate that this fix works?

N/A
2025-02-26 16:08:50 +00:00
flutteractionsbot
10998cdfae
[CP-stable][Reland] Fix Tab linear and elastic animation blink (#162315) (#163830)
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:

Cherry picked PR: https://github.com/flutter/flutter/pull/162450
Issue: https://github.com/flutter/flutter/issues/162098

< Replace with issue link here >

### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples

< Replace with changelog description here >

### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)

 Anyone using the `TabBar` widget. High impact.

### Workaround:
Is there a workaround for this issue?

None.

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:
What are the steps to validate that this fix works?

 Run a `TabBar` with linear tab animation and tap third or fourth or use elastic animation observe tab indictor highlight.
2025-02-26 05:09:53 +00:00
Jason Simmons
ccf215b84d
[CP] Roll .ci.yaml changes into the LUCI configuration only when the master branch is updated (#164155)
This is a cherry pick of an infrastructure fix.  The "ci_yaml flutter roller" job updates the LUCI builder configuration to match the contents of ci.yaml.  It should only run on the master branch because the older version of ci.yaml in a release branch may not contain newer builders that are needed by master branch PRs.

See https://github.com/flutter/flutter/pull/163897
2025-02-26 05:07:58 +00:00
Jonah Williams
a8a9ded167
[CP][Impeller] ensure that OpenGL "flipped" textures do not leak via texture readback. (#163501) (#163667)
Fixes https://github.com/flutter/flutter/issues/163315 Fixes https://github.com/flutter/flutter/issues/163521 Fixes https://github.com/flutter/flutter/issues/142641

OpenGL has an inverted coordinate system (bottom left is zero) compared to Metal/Vulkan (top left is zero). We handle this by rendering things upside down on OpenGL. Unfortunately this can leak out of the renderer via readback (toImage), so we need to make sure to undo the inversion.

This is not performed for the "TextureCoordinateSystem::kUploadFromHost" state as that indicates the texture is already "right side up".
2025-02-26 05:06:04 +00:00
Jason Simmons
836b6fdfe8
[CP] Fixes for Impeller DrawVertices issues involving snapshots with empty sizes (#163261)
See https://github.com/flutter/flutter/issues/162969

Includes https://github.com/flutter/flutter/pull/163099 and https://github.com/flutter/flutter/pull/163177
2025-02-26 05:06:01 +00:00
flutteractionsbot
f662dd5928
[CP-stable]fix reorderable_list_test.dart (#164050)
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:
What is the link to the issue this cherry-pick is addressing? 

https://github.com/flutter/flutter/issues/164128

### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples

This cherry pick lands a fix to a test that is currently causing all presubmits to fail on the 3.29-candidate.0 stable release branch. The failure fixed in this test is dependent on the random ordering seed, which is why it didn't fail before. The current seed in which it fails is `--test-randomize-ordering-seed=20250221`.

### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)

The only change is to reduce the flakiness of reorderable_list.test.dart.

### Workaround:
Is there a workaround for this issue?

Change the seed?

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:
What are the steps to validate that this fix works?

```
 flutter test /Users/jmccandless/Projects/flutter/packages/flutter/test/material/reorderable_list_test.dart --test-randomize-ordering-seed=20250221
```
2025-02-25 19:58:41 +00:00
John McDole
7d0f4d9ae8
[CP][Stable] Check for tracked engine.version before overriding (#163741)
### Issue Link:

#163308
#163691
and in some cases #162251

### Changelog Description:

Flutter tool respects tracked `engine.version`

### Impact Description:

Non `master`, `stable`, and `beta` branches will respect tracked versions of `engine.version` and not download incorrect engine artifacts.

### Workaround:

Deleting `engine/src/.gn` will trick the tools into thinking this is a non-monorepo.

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:

1. Switch to the branch / tag this is checked out to (i.e. `3.29.0`)
2. Examine `bin/internal/engine.version`
2. Run `flutter doctor`
3. See that it downloads the correct hash and `engine.version` hasn't been modified.
2025-02-20 22:06:55 +00:00
Jonah Williams
7253c79e2c
[CP][Impeller] Fix text glitch when returning to foreground. (#163754)
Fixes https://github.com/flutter/flutter/issues/163730
Fixes https://github.com/flutter/flutter/issues/163452
2025-02-20 20:46:07 +00:00
Jonah Williams
703ef37a89
[CP][Impeller] disable Vulkan on known bad exynos SoCs. (#163236) (#163265)
The common theme in:
  * https://github.com/flutter/flutter/issues/160854
  * https://github.com/flutter/flutter/issues/160804
  * https://github.com/flutter/flutter/issues/158091
  
Is that the Samsung exynos chipset has problems with AHB imports. Unfortunately some of the reported bugs are hard crashes/. While I couldn't reproduce the crash itself, it does indicate to me that attempting to feature detect if AHB imports work is probably too risky (and potentially slow, as we'd have to do a read back).
 
While the Vulkan drivers otherwise work, the deivces in question are not able to reliably import AHBs which prevents platform views from working.
 
This may not fix all issues as there could be different SoC models that also have problems. I considered removing 29 support as well, but there are a large number of APi 29 devices that work fine.
2025-02-20 18:10:07 +00:00
Jonah Williams
de3ca3d603
[CP][iOS] always post new task during gesture dispatch. (#163666)
CP for https://github.com/flutter/flutter/pull/163646

Fixes https://github.com/flutter/flutter/issues/163429
2025-02-20 18:06:40 +00:00
flutteractionsbot
9bc7df0177
[CP-stable]Fix buttons with icons ignore provided foregroundColor (#163201)
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:
What is the link to the issue this cherry-pick is addressing?

PR: https://github.com/flutter/flutter/pull/162880
Issue: https://github.com/flutter/flutter/issues/162839

### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples

Fixes buttons with icons ignore `foregroundColor`.

### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)

It impacts how buttons with icons render color when using `foregroundColor`.

### Workaround:
Is there a workaround for this issue?

Provide additional property such as `iconColor`  along with `foregroundColor` to match colors for button label and icon.

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:
What are the steps to validate that this fix works?

Testing and samples.
2025-02-20 04:49:14 +00:00
gaaclarke
d73fc34a73
[CP] all jittery glyph fixes (#163058)
This is a cherry-pick for all the changes that went into fixing https://github.com/flutter/flutter/issues/149652

It looks like a lot but most of it is testing and refactoring.

## PRs included
- https://github.com/flutter/flutter/pull/161625
- https://github.com/flutter/flutter/pull/162351
- https://github.com/flutter/flutter/pull/162415
- https://github.com/flutter/flutter/pull/162555
- https://github.com/flutter/flutter/pull/162824

## Impacted Users

All users of Impeller.

## Impact Description

Animating text with translations and scales can cause:
  - jitter between glyphs
  - jitter between glyphs and the baseline
  - artifacts when rendering glyphs at non integer scales

## Workaround

Use skia.

## Risk

Since this edits how text is rendered, the risk is pretty high.  The actual changes are small and there are unit tests for them.  Golden test coverage for cherry-picks is not complete and text rendering golden coverage for android is problematic.

## Test Coverage

Yes.

## Validation Steps

The reproduction code in https://github.com/flutter/flutter/issues/149652 is good.
2025-02-20 04:49:11 +00:00
Victor Sanni
33859b004b
[CP-stable] Support CupertinoSliverNavigationBar.search with condensed large title (#162912)
Original PR: https://github.com/flutter/flutter/pull/159120

The next stable branch has `CupertinoSliverNavigationBar.search`, but it is currently [unusable](https://github.com/flutter/flutter/pull/159120#discussion_r1945591377). The linked PR adds the search functionality and makes it usable.
2025-02-20 04:46:58 +00:00
Jonah Williams
383d56ed91
[CP][Impeller] Fix crash when using BackdropFilters in certain GLES drivers. (#163581)
This is a cherry picked of https://github.com/flutter/flutter/pull/163345 and https://github.com/flutter/flutter/pull/163327 combined, as they both are parts of the same bug.

The issues are:
  https://github.com/flutter/flutter/issues/163304
  https://github.com/flutter/flutter/issues/163421
  
And potentially others, though we don't have clear repros or stack traces for all of them.
2025-02-19 23:21:55 +00:00
flutteractionsbot
652d388b0a
[CP-stable]Run Mac_arm64 framework_tests_misc on Mac-14 with Xcode 16 (#163316)
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:
What is the link to the issue this cherry-pick is addressing?

Part of https://github.com/flutter/flutter/issues/148887.

### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples

Configuration changes to run test on macOS 14 for Flutter's CI.

### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)

Impacts what type of bot the test runs on for releases.

### Workaround:
Is there a workaround for this issue?

N/A

### Risk:
What is the risk level of this cherry-pick?

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

### Validation Steps:
What are the steps to validate that this fix works?

N/A
2025-02-19 22:48:28 +00:00
Jonah Williams
81e3a42c0b
[CP] Disable Vulkan on known bad Xclipse GPU drivrs (#163616)
Cherry pick of https://github.com/flutter/flutter/pull/161981

Fixes https://github.com/flutter/flutter/issues/163466
2025-02-19 21:28:02 +00:00
Christopher Fujino
35c388afb5
Update engine.version for 3.29.0 release (#163003)
Update engine.version file for binaries from: https://github.com/flutter/flutter/pull/162899
3.29.0
2025-02-10 20:48:41 +00:00
Christopher Fujino
f73bfc4522
[flutter_releases] Flutter stable 3.29.0 Framework Cherrypicks (#162899)
# Flutter stable 3.29.0 Framework

## Scheduled Cherrypicks

Roll Dart 3.7.0 stable: a8bfb132c5
2025-02-07 21:32:51 +00:00
Loïc Sharma
bd28ab6d9b
[beta] Show error on macOS if missing Local Network permissions (#162119)
⚠️ This targets branch `flutter-3.29-candidate.0` for the Flutter beta. 

Cherrypicks https://github.com/flutter/flutter/pull/161846 to `flutter-3.29-candidate.0`.

**Impacted Users**: Users that use macOS Sequoia and haven't turned on Local Network permissions for their IDE or terminal app. See: https://github.com/flutter/flutter/issues/150131
**Impact Description**: Without this improved error message, `flutter run` outputs this error: `SocketException: Send failed, OS Error: No route to host, errno = 65`.
**Workaround**: Turn on Local Network permissions for your IDE or terminal app. However, it's difficult for customers to discover this from the error message.
**Risk**: This change could regress the tool's Dart VM discovery.
**Test Coverage**: Yes added tests
**Validation Steps**: In System Settings > Privacy & Security > Local Network, toggle off Visual Studio Code. In VS Code, run a Flutter app on a physical device.
2025-02-07 01:06:04 +00:00
Mitchell Goodwin
8a61a077c2
[CP][Beta] Unblock drag gestures in CupertinoSheetRoute content (#162629)
CupertinoSheetRoute is a new widget added in 3.29 as a part of #157568. #161696 fixes #161623, which was an issue where you could not put scrollable content in the sheet, which is expected behavior. CupertinoSheetRoute has been a highly requested widget so is expected to get a lot of use.

Impacted users: anyone using the CupertinoSheetRoute with scrollable content, which should be a common use case.

Impact description: not being able to scroll within the sheet would create a very bad first impression and leave the sheet unusable for a lot of apps.

Workaround: None.

Risk: This is a brand new widget, so none. 
Test Coverage (Are you confident that your fix is well-tested by automated tests?): Yes, the fix has regression tests.
Validation Steps (What are the steps to validate that this fix works?): Create a CupertinoSheetRoute with scrollable content that expands past the size of the sheet. #161623 has a code sample.
2025-02-06 22:07:14 +00:00
Jonah Williams
b29799c6e6
[CP][Impeller] Increase conical gradient precision. (#162543) (#162619)
Fixes https://github.com/flutter/flutter/issues/162379

The IPConicalGradient function requires full float 32 precision, though this depends on the exact gpu behavior. To be safe, increase the general precision in all of these shaders.
2025-02-06 19:50:32 +00:00
Jonah Williams
1d03bf20fe
[CP][Impeller] Disable Vulkan on Emulators. (#162454) (#162536)
Forces known android emulators to use OpenGLES. This is a very conservative check that could be expanded over time if need be. For testing emulators can still use the debug flags.

Fixes https://github.com/flutter/flutter/issues/160442
Fixes https://github.com/flutter/flutter/issues/160439
Fixes https://github.com/flutter/flutter/issues/155973
2025-02-05 23:38:18 +00:00
Reid Baker
c21336e227
3.29 beta engine version bump (#162520)
Related to flutter/flutter/issues/161732
3.29.0-0.3.pre
2025-01-31 18:00:23 +00:00
Jim Graham
5000ea89b5
[Impeller] Avoid NaN values when setting up for the fast squircle blu… (#162485)
Fixes https://github.com/flutter/flutter/issues/162128

Zero dimensioned rectangle blurs were causing the setup code to generate NaN values. This condition could also happen for some very thin or short rectangles so rather than just rule out zero-dimensioned rectangles, the uniforms are checked for NaN values and the operation is skipped in those cases.
2025-01-31 15:16:29 +00:00
Reid Baker
3d63c78e51
3.29 engine bump and dart rev (#162471)
- **Commit dart version change and NOT the results from `python3 engine/src/tools/dart/create_updated_flutter_deps.py`**
2025-01-31 14:59:23 +00:00
Jonah Williams
6440935b09
[CP][Impeller] Skip clip entity replay that cannot impact current clip. (#162113) (#162195)
Fixes https://github.com/flutter/flutter/issues/161262

Sometimes we end up with clip replay entities that have clip depth values substantially below the current depth. I suspect this is due to either mismatched save/restore or a bug in our code. Update: this isn't a bug/bug but its definitely a bug. We can have multiple clips per save, but the restore will remove at most one from the record/replay.

If a clip has a depth value that is less than the current clip depth, it cannot by definition impact anything that draws after it.
2025-01-30 20:14:59 +00:00
Jonah Williams
593a51f73a
[CP][Impeller] when a command pool has many unused buffers, reset with release resources flag. (#162207)
Fixes https://github.com/flutter/flutter/issues/161861

Resetting a command pool is not sufficient to reclaim memory.  Contrary to what you would expect, it appears that just resetting the pool, even if the cmd buffers are reclaimed, never frees any memory unless this flag is provided.
2025-01-29 15:39:58 +00:00
Jonah Williams
d1e425d611
[CP][Impeller] Update partial repaint to use a fullsize onscreen. (#161626) (#162194)
The existing technique of offsetting a smaller texture is very vunerable to bugs in the renderer. Rather than this approach, we can allocate a new offscreen that is full sized and then blit a smaller region. To reduce the allocation costs, we can also set up a transients cache which will reuse this texture. In total, this should be more performant than the existing partial repaint (due to lack of continual re-allocation) at the cost of higher peak memory usage.

Fixes https://github.com/flutter/flutter/issues/140877 Fixes https://github.com/flutter/flutter/issues/160588 Fixes https://github.com/flutter/flutter/issues/156113
2025-01-29 15:39:55 +00:00
Jonah Williams
32620428e5
[CP][Impellerc] correctly pad arrays of vec3s in reflector. (#161697) (#162190)
When processing the metadata for a struct with an array, incorporate the padding into the layout. Previously we would register a vec3[n] array as being 4*n bytes (including the padding), but when uploading this would result in us writing data into the padding and then leave the rest uninitialized. now we correctly insert a padding element between 3 byte elements.

Fixes https://github.com/flutter/flutter/issues/161645
2025-01-29 15:37:55 +00:00
Jonah Williams
5ab0df4b7e
[CP][Impeller] when mips are disabled, also disable from sampler options (#161765) (#162193)
If we have disabled mipmap generation on a platform due to GPU driver bugs, make sure that all sampling options used declare that only the base mip level should be read. Otherwise we can end up sampling from unpopulated mip levels.
2025-01-29 15:37:51 +00:00
Jonah Williams
670206c4a3
[CP][Impeller] remove Adreno denylist entries. (#161740) (#162191)
Fixes https://github.com/flutter/flutter/issues/161209

testing on a 540 and everything seems to work now that we have the Adreno specific workarounds added to the renderer. Its possible there are some bugs that only exist on the early 600s but I guess we'll find out.
2025-01-29 15:37:48 +00:00
Jonah Williams
e77a96d975
[CP][Impeller] adjust coverage origin when rounding out SaveLayer bounds (#161838) (#162189)
Fixes https://github.com/flutter/flutter/issues/161374

When we round out the texture size for a saveLayer, also round out the coverage so that the drawing origin is correct. Otherwise we may actually cut off the top left edge of rendering.
2025-01-29 15:35:55 +00:00
Jonah Williams
920ce84605
[CP][impeller] prevent PowerVR from using Vulkan backend. (#161841) (#162188)
Almost all remaining blackscreen or rendering bugs/crashes are PowerVR hardware. Based on common knowledge that several large engines prevent PowerVR completely, we'll also block PowerVR until we have time to accumulate the necessary workarounds.
2025-01-29 15:35:54 +00:00
Jonah Williams
2c6c4dd7e6
[CP][Impeller] check both linear sampling props for AHBs. (#162043) (#162187)
According to
https://github.com/KhronosGroup/Vulkan-ValidationLayers/issues/5806 , both eSampledImageYcbcrConversionLinearFilter and
eSampledImageFilterLinear properties are required to use a linear chromaFilter.
2025-01-29 15:34:27 +00:00
Christopher Fujino
45459707c0
Check in engine.version (#162264)
Hack around https://github.com/flutter/flutter/issues/162265
3.29.0-0.2.pre
2025-01-27 10:17:05 -08:00
Justin McCandless
53c27e519d
Update dart revision for beta release 3.29 (#162127)
Do I need to run this script too?

```
  # When updating the Dart revision, ensure that all entries that are
  # dependencies of Dart are also updated to match the entries in the
  # Dart SDK's DEPS file for that revision of Dart. The DEPS file for
  # Dart is: https://github.com/dart-lang/sdk/blob/main/DEPS
  # You can use //tools/dart/create_updated_flutter_deps.py to produce
  # updated revision list of existing dependencies.
```
3.29.0-0.1.pre
2025-01-24 19:12:19 +00:00
jacobsimionato
010c8a806b
Revert "Autocomplete Options Width" (#161666)
Reverts flutter/flutter#143249

This broke some Google tests sadly - see b/390128156
3.29.0-0.0.pre
2025-01-15 19:31:59 +00:00
stuartmorgan
fd2b5637b5
Update two_dimensional_scrollables triage routing (#161667)
`two_dimensional_scrollables` is primarily owned by the framework team
rather than the ecosystem team.
2025-01-15 19:14:33 +00:00
Jim Graham
a10e25e727
[DisplayList] Migrate from SkRSXform to Impeller RSTransform (#161652)
Fixes SkRSXform task in https://github.com/flutter/flutter/issues/161456

Removes (nearly) all uses of Skia SkRSXform object from DisplayList and
replaces it with a new Impeller RSTransform geometry object.

There are remaining uses in:
- Skia adapter code which needs to convert them back to SkRSXform when
using the Skia backend
- dl_rendering_tests which is waiting for a major conversion effort
- ?Fuchsia? code has an SkCanvas spy adapter used in its embedder code
(not DisplayList related)
- web_ui/skwasm
2025-01-15 19:08:38 +00:00
engine-flutter-autoroll
1580a3d3fb
Roll Packages from d1fd6232ec33 to f73cb00e127b (2 revisions) (#161672)
d1fd6232ec...f73cb00e12

2025-01-14 engine-flutter-autoroll@skia.org Roll Flutter from
72db8f69e339 to 40c2b86fdf65 (33 revisions) (flutter/packages#8428)
2025-01-14 nate.w5687@gmail.com [two_dimensional_scrollables] prepare
for `const AnimationStyle` (flutter/packages#8397)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@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-01-15 16:31:11 +00:00
Bruno Leroux
44ff2f5977
Fix DropdownMenu isCollapsed decoration does not Reduce height (#161427)
## Description

This PR fixes DropdownMenu arrow icon position when
`InputDecoration.isCollapsed` is set to true and
`InputDecoration.suffixConstraints` is set to a smaller value than the
min interactive height.

It makes it possible to use collapsed `DropdownMenu` such as:


![image](https://github.com/user-attachments/assets/145c2a0b-a638-4226-ae29-0e21bb9d4bb0)

_____

Before this PR and https://github.com/flutter/flutter/pull/153089,
`InputDecoration.isCollapsed` had no impact on the `DropdownMenu` height
and there was no solution to reduce the height because its minimum
height is enforced by the `IconButton` (arrow down or up) which is part
of the `DropdownMenu`.

Since https://github.com/flutter/flutter/pull/153089, the height can be
reduce with `InputDecoration.suffixIconConstraints` but it results in
the icon being misaligned:


![image](https://github.com/user-attachments/assets/2a4d99bc-c26d-454b-8e62-dd8828789ae5)


After this PR:

When `InputDecoration.suffixIconConstraints` is used the icon is
correctly aligned:


![image](https://github.com/user-attachments/assets/145c2a0b-a638-4226-ae29-0e21bb9d4bb0)


<details><summary>Code sample</summary>

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

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Flutter Demo',
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return const Scaffold(
      body: Center(
        child: Center(
          child: DropdownMenu<String>(
            dropdownMenuEntries: [
              DropdownMenuEntry(label: 'Item 1', value: '1'),
              DropdownMenuEntry(label: 'Item 2', value: '2'),
            ],
            inputDecorationTheme: InputDecorationTheme(
              contentPadding: EdgeInsets.fromLTRB(5, 0, 5, 0),
              isCollapsed: true,
              // Usable since https://github.com/flutter/flutter/pull/153089.
              suffixIconConstraints: BoxConstraints(minHeight: 24, maxHeight: 24),
              filled: true,
            ),
          ),
        ),
      ),
    );
  }
}

``` 

</details> 

## Related Issue

Fixes [DropdownMenu inputDecoration isCollapsed property does not reduce
vertical spacing](https://github.com/flutter/flutter/issues/138691)

## Tests

Adds 2 tests.
2025-01-15 15:30:51 +00:00
Jason Simmons
1e79b65ea1
Manual roll of Skia to e7b8d078851f (#161609)
The Skia->engine roller was disabled for a few weeks during the
migration to the monorepo.
2025-01-15 15:14:23 +00:00
Taha Tesser
2b34d78c23
Fix TabBar glitchy elastic Tab animation (#161514)
Fixes [M3 TabBar indicator animation broken both when swiping or
tapping](https://github.com/flutter/flutter/issues/160631)

### Description

This refactors the elastic `Tab` animation. Added additional tests that
follows the elastic animation frame by frame and generates a golden
file.

### Code Sample

<details>
<summary>expand to view the code sample</summary> 

```dart
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';

void main() => runApp(const MyApp());

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

  @override
  Widget build(BuildContext context) {
    // timeDilation = 10;
    return MaterialApp(
      home: ScrollConfiguration(
        behavior: ScrollConfiguration.of(context).copyWith(dragDevices: <PointerDeviceKind>{
          PointerDeviceKind.touch,
          PointerDeviceKind.mouse,
        }),
        child: Directionality(
          textDirection: TextDirection.ltr,
          child: DefaultTabController(
            length: 8,
            child: Scaffold(
              appBar: AppBar(
                bottom: const TabBar(
                  isScrollable: true,
                  tabAlignment: TabAlignment.start,
                  tabs: <Widget>[
                    Tab(text: 'Home'),
                    Tab(text: 'Search'),
                    Tab(text: 'Add'),
                    Tab(text: 'Favorite'),
                    Tab(text: 'The longest text...'),
                    Tab(text: 'Short'),
                    Tab(text: 'Longer text...'),
                    Tab(text: 'Profile'),
                  ],
                ),
              ),
              body: const TabBarView(
                children: <Widget>[
                  Center(child: Text('Page')),
                  Center(child: Text('Page')),
                  Center(child: Text('Page')),
                  Center(child: Text('Page')),
                  Center(child: Text('Page')),
                  Center(child: Text('Page')),
                  Center(child: Text('Page')),
                  Center(child: Text('Page')),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }
}

```

</details>

### Before (`timeDilation = 10`)


https://github.com/user-attachments/assets/4f69f94b-0bcf-4813-b49f-06ff411435ca


### After (`timeDilation = 10`)


https://github.com/user-attachments/assets/65801c1c-d28f-4b42-870a-7140d5d3c4c3

| Before Test Results | After Test Results |
| --------------- | --------------- |
| <img
src="https://github.com/user-attachments/assets/72ae9fbe-fef9-44a0-9b86-5a4c31fd39cf"
/> | <img
src="https://github.com/user-attachments/assets/2545f35e-ac03-495d-a33b-72b9bc71299b"
/> |

## 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.
- [ ] 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].
- [ ] 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-01-15 11:23:41 +00:00
flutter-pub-roller-bot
14d4abbd66
Roll pub packages (#161643)
This PR was generated by `flutter update-packages --force-upgrade`.
2025-01-15 06:31:28 +00:00
Matan Lurey
fd1c02d301
Exclude the top-level engine directory from generate_gradle_lockfiles. (#161635)
For local development workflows, this would find directories we don't
want included in the script.

Added a simple test.
2025-01-15 03:00:59 +00:00
flutter-pub-roller-bot
97acba4df8
Roll pub packages (#161632)
This PR was generated by `flutter update-packages --force-upgrade`.
2025-01-15 01:17:04 +00:00
Matan Lurey
e517ae3457
Refactor android_engine_test, make it easier to debug/deflake locally. (#161534)
The goal here is to have a great standalone `android_engine_test` suite
that [replaces
`scenario_app/android`](https://github.com/flutter/flutter/pull/160992).

No test is _functionally_ changed in this PR, but overview of changes:
- Finished renaming the suite `android_engine_tests` instead of
`flutter_driver_android`
- Added instructions and an environment variable for local generation of
golden-files (`UPDATE_GOLDENS=1`)
- Added explanations of the individual tests, where they live, and how
to run them locally
- Added a hybrid-composition (HC, not TLHC, which is already tested)
test
- Renamed "other_smiley" to "surface_texture_smiley" (and renamed the
original to "surface_producer_smiley")
- Removed unnecessary ".android" suffix (we will not run this on
anything but Android)
- Added a `tool/deflake.dart` to run a test suite 10x (or custom) times
locally to try and determine flakiness

After this PR, I'll add flags to let you control variants and name the
screenshots accordingly, i.e.:
- API v34 or v35
- OpenGLES or Vulkan (will require an `AndroidManifest.xml` edit during
the test instrumentation)
2025-01-15 01:05:31 +00:00
Jonah Williams
b515f829af
[Impeller] null check device buffer in image encoding. (#161194)
Fixes https://github.com/flutter/flutter/issues/160652
2025-01-15 00:34:53 +00:00
NabilaWorks
e0d7b588b6
Feature/twitter keyboard (#161025)
<!--
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/64801

Example :

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Centered TextField Example',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: CenteredTextFieldScreen(),
    );
  }
}

class CenteredTextFieldScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Centered TextField')),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: TextField(
            keyboardType: TextInputType.twitter,
            decoration: InputDecoration(
              border: OutlineInputBorder(),
              hintText: 'Enter some text here',
            ),
          ),
        ),
      ),
    );
  }
}
```


https://github.com/user-attachments/assets/5a2a2a4a-6994-44b1-bb0e-395c24012ef8


https://github.com/user-attachments/assets/aefc7bc5-a997-4e0f-a74e-a39a4517c898

## 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.
- [ ] 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: Jenn Magder <magder@google.com>
2025-01-15 00:15:15 +00:00