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 [email protected] Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 [email protected] [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 [email protected] Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 [email protected] Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 [email protected] Roll pub packages (flutter/flutter#191726) 2026-08-25 [email protected] Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 [email protected] Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 [email protected] Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 [email protected] iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 [email protected] iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 [email protected] Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 [email protected] Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 [email protected] Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 [email protected] Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 [email protected] Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 [email protected] Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 [email protected] Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 [email protected] [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 [email protected] Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 [email protected] [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 [email protected] Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 [email protected] Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 [email protected] Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 [email protected] Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 [email protected] [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 [email protected] Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 [email protected] [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 [email protected] [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 [email protected] Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 [email protected] On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 [email protected] [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 [email protected] [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 [email protected] [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 [email protected] [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 [email protected] [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 [email protected] [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 [email protected] 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 [email protected],[email protected] 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 [email protected] Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 [email protected] [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 [email protected] Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 [email protected] Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 [email protected] Roll pub packages (flutter/flutter#191726) 2026-08-25 [email protected] Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 [email protected] Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 [email protected] Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 [email protected] iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 [email protected] iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 [email protected] Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 [email protected] Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 [email protected] Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 [email protected] Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 [email protected] Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 [email protected] Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 [email protected] Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 [email protected] [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 [email protected] Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 [email protected] [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 [email protected] Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 [email protected] Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 [email protected] Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 [email protected] Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 [email protected] [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 [email protected] Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 [email protected] [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 [email protected] [AGP 9.1.0 Migration #3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 [email protected] Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 [email protected] On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 [email protected] [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 [email protected] [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 [email protected] [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 [email protected] [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 [email protected] [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 [email protected] [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 [email protected] 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 [email protected],[email protected] 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 [email protected] Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 [email protected] [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 [email protected] Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 [email protected] Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 [email protected] Roll pub packages (flutter/flutter#191726) 2026-08-25 [email protected] Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 [email protected] Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 [email protected] Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 [email protected] iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 [email protected] iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 [email protected] Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 [email protected] Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 [email protected] Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 [email protected] Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 [email protected] Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 [email protected] Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 [email protected] Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 [email protected] [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 [email protected] Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 [email protected] [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 [email protected] Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 [email protected] Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 [email protected] Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 [email protected] Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 [email protected] [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 [email protected] Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 [email protected] [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 [email protected] [AGP 9.1.0 Migration flutter#3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 [email protected] Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 [email protected] On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 [email protected] [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 [email protected] [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 [email protected] [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 [email protected] [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 [email protected] [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 [email protected] [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 [email protected] 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 [email protected],[email protected] 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 [email protected] Roll Packages from df2ba94 to 740f093 (17 revisions) (flutter/flutter#191734) 2026-08-25 [email protected] [record_use] Remove const_finder (flutter/flutter#191702) 2026-08-25 [email protected] Warn when SwiftPM is disabled (flutter/flutter#188695) 2026-08-25 [email protected] Roll Skia from b1a31575c373 to 480540178356 (1 revision) (flutter/flutter#191723) 2026-08-25 [email protected] Roll pub packages (flutter/flutter#191726) 2026-08-25 [email protected] Roll Skia from bfa276ed9ac5 to b1a31575c373 (1 revision) (flutter/flutter#191717) 2026-08-25 [email protected] Roll Dart SDK from 0818e6dc28cc to 8996935d3d0a (2 revisions) (flutter/flutter#191706) 2026-08-25 [email protected] Roll Skia from 31799e707cd4 to bfa276ed9ac5 (1 revision) (flutter/flutter#191701) 2026-08-25 [email protected] iOS: Add null check for touch rate correction task runner (flutter/flutter#191641) 2026-08-25 [email protected] iOS: Add test for engineAllowHeadlessExecution (flutter/flutter#191635) 2026-08-25 [email protected] Roll Skia from cfae2af1bfeb to 31799e707cd4 (4 revisions) (flutter/flutter#191649) 2026-08-25 [email protected] Roll Dart SDK from 2b75c83ddd77 to 0818e6dc28cc (1 revision) (flutter/flutter#191643) 2026-08-25 [email protected] Roll Skia from 4a2fddefd3d8 to cfae2af1bfeb (1 revision) (flutter/flutter#191642) 2026-08-25 [email protected] Roll Skia from 256c15026b91 to 4a2fddefd3d8 (6 revisions) (flutter/flutter#191633) 2026-08-25 [email protected] Remove octant_offset_c uniform from ubersdf, reorder/document ubersdf uniforms (flutter/flutter#191597) 2026-08-25 [email protected] Roll Fuchsia Linux SDK from 8Xu4ujBJniC0nQGx3... to MstTWE1RDOT-RnrtH... (flutter/flutter#191621) 2026-08-25 [email protected] Roll Dart SDK from 78bbc37b6ff6 to 2b75c83ddd77 (3 revisions) (flutter/flutter#191614) 2026-08-24 [email protected] [flutter_tools] Fix $git typo in shared.bat to restore cache invalidation on Windows (flutter/flutter#191217) 2026-08-24 [email protected] Skip removed observers during app exit requests (flutter/flutter#190343) 2026-08-24 [email protected] [engine] Support UTF-8 paths in Windows filesystem and path APIs (flutter/flutter#191360) 2026-08-24 [email protected] Migrate ios driver tests batch 3 to simulators (flutter/flutter#191333) 2026-08-24 [email protected] Migrate texture example to material_ui (flutter/flutter#190673) 2026-08-24 [email protected] Remove outdated test todo about `dither` property of `Paint` (flutter/flutter#190936) 2026-08-24 [email protected] Add agent rule to prevent using material and cupertino in widget tests (flutter/flutter#191588) 2026-08-24 [email protected] [flutter_tools] Prevent crash when stdout is broken and print fails (flutter/flutter#191356) 2026-08-24 [email protected] Add FlViewRendererSubsurface (flutter/flutter#191389) 2026-08-24 [email protected] [Android] Inject `route` into manifest when specified on the command line in release mode (flutter/flutter#191328) 2026-08-24 [email protected] [AGP 9.1.0 Migration flutter#3] Add buildModeFor overloads and wire Flutter dependencies through the new DSL (flutter/flutter#191218) 2026-08-24 [email protected] Roll Skia from 698c60bf58f1 to 256c15026b91 (1 revision) (flutter/flutter#191586) 2026-08-24 [email protected] On iOS 27+ devices, manually process lldb stops (flutter/flutter#191434) 2026-08-24 [email protected] [flutter_tools] Handle missing Xcode gracefully in getInfo and buildMacOS (flutter/flutter#191180) 2026-08-24 [email protected] [flutter_tools] Handle null version gracefully in CachedArtifact and MaterialFonts (flutter/flutter#191494) 2026-08-24 [email protected] [flutter_tools] Do not treat 'daemon' argument as daemon command in logger initialization (flutter/flutter#191442) 2026-08-24 [email protected] [flutter_tools] Resolve workspace root when running widget preview from member package (flutter/flutter#190952) 2026-08-24 [email protected] [native_assets] Roll native packages (flutter/flutter#191253) 2026-08-24 [email protected] [flutter_tools] Add --force flag to flutter channel (flutter/flutter#191579) 2026-08-24 [email protected] 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 [email protected],[email protected] 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.