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_);
62 PostPrerollResult result =
63 [platform_views_controller_ postPrerollActionWithThreadMerger:raster_thread_merger];
68 DlCanvas* IOSExternalViewEmbedder::CompositeEmbeddedView(int64_t view_id) {
69 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::CompositeEmbeddedView");
70 FML_CHECK(platform_views_controller_);
71 return [platform_views_controller_ compositeEmbeddedViewWithId:view_id];
75 void IOSExternalViewEmbedder::SubmitFlutterView(
76 int64_t flutter_view_id,
77 GrDirectContext* context,
78 const std::shared_ptr<impeller::AiksContext>& aiks_context,
79 std::unique_ptr<SurfaceFrame> frame) {
80 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::SubmitFlutterView");
84 FML_DCHECK(flutter_view_id == kFlutterImplicitViewId);
85 FML_CHECK(platform_views_controller_);
86 [platform_views_controller_ submitFrame:std::move(frame) withIosContext:ios_context_];
87 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::DidSubmitFrame");
91 void IOSExternalViewEmbedder::EndFrame(
92 bool should_resubmit_frame,
93 const fml::RefPtr<fml::RasterThreadMerger>& raster_thread_merger) {
94 TRACE_EVENT0(
"flutter",
"IOSExternalViewEmbedder::EndFrame");
95 [platform_views_controller_ endFrameWithResubmit:should_resubmit_frame
96 threadMerger:raster_thread_merger];
100 bool IOSExternalViewEmbedder::SupportsDynamicThreadMerging() {
105 void IOSExternalViewEmbedder::PushFilterToVisitedPlatformViews(
106 const std::shared_ptr<DlImageFilter>& filter,
107 const SkRect& filter_rect) {
108 [platform_views_controller_ pushFilterToVisitedPlatformViews:filter withRect:filter_rect];
112 void IOSExternalViewEmbedder::PushVisitedPlatformView(int64_t view_id) {
113 [platform_views_controller_ pushVisitedPlatformViewId:view_id];