-
Notifications
You must be signed in to change notification settings - Fork 29.2k
Open
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.platform-iosiOS applications specificallyiOS applications specificallyteam-iosOwned by iOS platform teamOwned by iOS platform teamtriaged-iosTriaged by iOS platform teamTriaged by iOS platform team
Description
Migrate iOS embedder to use the embedder API
The current planned steps are: (Check marked items are in flutter/main)
- Setup a runtime flag to enable and disable Embedder api during the migration.
- ☂️ Migrate iOS embedder objective-c code to ARC (Auto Reference Counting) #137801
- Initialize the FlutterEngineProcTable& embedderAPI property, with callbacks left as TODOs.
- Implementing features. This can be separated to smaller patches, enable tests along the way if possible
- Run all the tests with the embedder API, make sure there are no meaningless regressions.
- Remove legacy code and make embedder API stable.
In step 3 above, some features are non-trivial. They are listed are listed below: (Check marked items are in flutter/main)
- Initialize FlutterEngine with EmbedderAPI.
- Render content on FlutterView.
- Background Platform Channel message
- Touch events.
- Keyboard Events.
- External View Embedder (PlatformView)
- SemanticsUpdate
- VsyncWaiter
Additional graphics-related work
- Impeller integration
- Swapchain integration
- Wide gamut
- Hook up graphics debugger
A draft PR that contains the full migration is maintained here: flutter/engine#39988 as a reference while working on individual patches.
Below is a list of completed features in the draft PR. (Check marked items are the ones completed in the flutter/engine#39988)
- Initialize FlutterEngine with EmbedderAPI.
- Render content on FlutterView.
- Background Platform Channel message. (Workaround)
- Background Platform Channel message.
- Touch events.
- Keyboard Events.
- External View Embedder (PlatformView) (In progress)
- SemanticsUpdate
- VsyncWaiter
Currently, the embedder API doesn't support impeller. #112230 is required to enable iOS to use impeller by default after the migration.
hellohuanlin, swift-kim, mono0926, vially and lin72h
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work listengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.platform-iosiOS applications specificallyiOS applications specificallyteam-iosOwned by iOS platform teamOwned by iOS platform teamtriaged-iosTriaged by iOS platform teamTriaged by iOS platform team