6 #include "fml/task_runner.h"
8 #include "flutter/common/constants.h"
16 const std::shared_ptr<IOSContext>& context)
17 : platform_views_controller_(platform_views_controller), ios_context_(context) {
18 FML_CHECK(ios_context_);
24 DlCanvas* IOSExternalViewEmbedder::GetRootCanvas() {
31 void IOSExternalViewEmbedder::CancelFrame() {
32 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::CancelFrame");
33 FML_CHECK(platform_views_controller_);
34 [platform_views_controller_ cancelFrame];
38 void IOSExternalViewEmbedder::BeginFrame(
39 GrDirectContext* context,
40 const fml::RefPtr<fml::RasterThreadMerger>& raster_thread_merger) {}
43 void IOSExternalViewEmbedder::PrepareFlutterView(SkISize frame_size,
double device_pixel_ratio) {
44 FML_CHECK(platform_views_controller_);
45 [platform_views_controller_ beginFrameWithSize:frame_size];
49 void IOSExternalViewEmbedder::PrerollCompositeEmbeddedView(
51 std::unique_ptr<EmbeddedViewParams> params) {
52 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::PrerollCompositeEmbeddedView");
53 FML_CHECK(platform_views_controller_);
54 [platform_views_controller_ prerollCompositeEmbeddedView:view_id withParams:std::move(params)];
58 PostPrerollResult IOSExternalViewEmbedder::PostPrerollAction(
59 const fml::RefPtr<fml::RasterThreadMerger>& raster_thread_merger) {
60 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::PostPrerollAction");
61 FML_CHECK(platform_views_controller_);
63 PostPrerollResult result =
64 [platform_views_controller_ postPrerollActionWithThreadMerger:raster_thread_merger
65 impellerEnabled:impeller_enabled];
70 DlCanvas* IOSExternalViewEmbedder::CompositeEmbeddedView(int64_t view_id) {
71 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::CompositeEmbeddedView");
72 FML_CHECK(platform_views_controller_);
73 return [platform_views_controller_ compositeEmbeddedViewWithId:view_id];
77 void IOSExternalViewEmbedder::SubmitFlutterView(
78 int64_t flutter_view_id,
79 GrDirectContext* context,
80 const std::shared_ptr<impeller::AiksContext>& aiks_context,
81 std::unique_ptr<SurfaceFrame> frame) {
82 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::SubmitFlutterView");
86 FML_DCHECK(flutter_view_id == kFlutterImplicitViewId);
87 FML_CHECK(platform_views_controller_);
88 [platform_views_controller_ submitFrame:std::move(frame)
89 withIosContext:ios_context_
91 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::DidSubmitFrame");
95 void IOSExternalViewEmbedder::EndFrame(
96 bool should_resubmit_frame,
97 const fml::RefPtr<fml::RasterThreadMerger>& raster_thread_merger) {
98 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::EndFrame");
100 [platform_views_controller_ endFrameWithResubmit:should_resubmit_frame
101 threadMerger:raster_thread_merger
102 impellerEnabled:impeller_enabled];
106 bool IOSExternalViewEmbedder::SupportsDynamicThreadMerging() {
108 #if FML_OS_IOS_SIMULATOR
112 #endif // FML_OS_IOS_SIMULATOR
116 void IOSExternalViewEmbedder::PushFilterToVisitedPlatformViews(
117 const std::shared_ptr<DlImageFilter>& filter,
118 const SkRect& filter_rect) {
119 [platform_views_controller_ pushFilterToVisitedPlatformViews:filter withRect:filter_rect];
123 void IOSExternalViewEmbedder::PushVisitedPlatformView(int64_t view_id) {
124 [platform_views_controller_ pushVisitedPlatformViewId:view_id];