Repository navigation
iOS: Add test for engineAllowHeadlessExecution - #191635
Conversation
There was a problem hiding this comment.
Code Review
This pull request adds the allowHeadlessExecution property to FlutterEngine and introduces unit tests to verify that engineAllowHeadlessExecution can be configured via Key-Value Coding (KVC) on FlutterViewController and is correctly inherited by implicitly created engines. The feedback suggests enhancing the KVC test by asserting that the lazily initialized engine also receives the updated allowHeadlessExecution value.
| [viewController setValue:@YES forKey:@"engineAllowHeadlessExecution"]; | ||
| XCTAssertTrue(viewController.engineAllowHeadlessExecution); | ||
| } |
There was a problem hiding this comment.
To fully verify the primary storyboard/XIB integration use case, we should also assert that the implicitly created engine actually receives the allowHeadlessExecution value set via Key-Value Coding (KVC). Adding an assertion for viewController.engine.allowHeadlessExecution ensures that the KVC-configured property correctly propagates to the lazily initialized engine.
[viewController setValue:@YES forKey:@"engineAllowHeadlessExecution"];
XCTAssertTrue(viewController.engineAllowHeadlessExecution);
XCTAssertTrue(viewController.engine.allowHeadlessExecution);
}
There was a problem hiding this comment.
This engine isn't "lazily initialised". initWithProject: calls sharedSetupWithProject: synchronously which builds the engine right there and immediately reads engineAllowHeadlessExecution.
Setting it later does nothing -- the engine was already created!
Added a note in the doc comment to make that clearer.
ea0329f to
149f8fb
Compare
`FlutterViewController.engineAllowHeadlessExecution` drives whether an implicitly-created `FlutterEngine` is createed with `allowHeadlessExecution`, which causes the engine to tear down its shell when its view controller deallocs. We didn't previously have any test coverage for this. The property was added in flutter-team-archive/engine#19458 with the intent of being configured from a XIB, and since it's read-only, Interface Builder's User Defined Runtime Attributes reach it by setting the synthesized ivar through key-value coding. Declaring a getter, or marking it `@dynamic`, would leave storyboards unable to set it, which would break it for end-users. We now check: * that the property can be set via `setValue:forKey:` (check KV support) * that an implicitly-created engine picks it up I added `allowHeadlessExecution` from the extension in FlutterEngine.mm to the FlutterEngine (Test) category so we can check it in tests.
149f8fb to
16a69af
Compare
`FlutterViewController.engineAllowHeadlessExecution` drives whether an implicitly-created `FlutterEngine` is createed with `allowHeadlessExecution`, which causes the engine to tear down its shell when its view controller deallocs. We didn't previously have any test coverage for this. The property was added in flutter-team-archive/engine#19458 with the intent of being configured from a XIB, and since it's read-only, Interface Builder's User Defined Runtime Attributes reach it by setting the synthesized ivar through key-value coding. Declaring a getter, or marking it `@dynamic`, would leave storyboards unable to set it, which would break it for end-users. We now check: * that the property can be set via `setValue:forKey:` (check KV support) * that an implicitly-created engine picks it up I added `allowHeadlessExecution` from the extension in FlutterEngine.mm to the FlutterEngine (Test) category so we can check it in tests. Issue: flutter#112232 <!-- 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 --> - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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]. - [ ] 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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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
Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) 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 Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) 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 Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration flutter#3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) 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 Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
…r#12619) Roll Flutter from 9a8278982588 to 15d8908addf6 (37 revisions) flutter/flutter@9a82789...15d8908 2026-08-25 engine-flutter-autoroll@skia.org Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 dacoharkes@google.com [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 48625061+muradhossin@users.noreply.github.com Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#191726) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 chris@bracken.jp iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 chris@bracken.jp iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 engine-flutter-autoroll@skia.org Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 97480502+b-luk@users.noreply.github.com Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 engine-flutter-autoroll@skia.org Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 bkonyi@google.com [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 87962825+kyungilcho@users.noreply.github.com Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 bkonyi@google.com [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 okorohelijah@google.com Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 jmccandless@google.com Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 116356835+AbdeMohlbi@users.noreply.github.com Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 47866232+chunhtai@users.noreply.github.com Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 bkonyi@google.com [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 robert.ancell@canonical.com Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 43054281+camsim99@users.noreply.github.com [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 269567208+reidbaker-agent@users.noreply.github.com [AGP 9.1.0 Migration flutter#3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 15619084+vashworth@users.noreply.github.com On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 bkonyi@google.com [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 bkonyi@google.com [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 bkonyi@google.com [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 bkonyi@google.com [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 dacoharkes@google.com [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 bkonyi@google.com [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 engine-flutter-autoroll@skia.org Roll Skia from 57968d087d18 to 698c60bf58f1 (1 revision) (flutter/flutter#191577) 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 Please CC bmparr@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
FlutterViewController.engineAllowHeadlessExecutiondrives whether an implicitly-createdFlutterEngineis createed withallowHeadlessExecution, which causes the engine to tear down its shell when its view controller deallocs. We didn't previously have any test coverage for this.The property was added in flutter-team-archive/engine#19458 with the intent of being configured from a XIB, and since it's read-only, Interface Builder's User Defined Runtime Attributes reach it by setting the synthesized ivar through key-value coding. Declaring a getter, or marking it
@dynamic, would leave storyboards unable to set it, which would break it for end-users.We now check:
setValue:forKey:(check KV support)I added
allowHeadlessExecutionfrom the extension in FlutterEngine.mm to the FlutterEngine (Test) category so we can check it in tests.Issue: #112232
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.