diff --git a/shell/platform/darwin/ios/ios_surface.h b/shell/platform/darwin/ios/ios_surface.h index 3a3ec5da18b37..0e3d784aefcfb 100644 --- a/shell/platform/darwin/ios/ios_surface.h +++ b/shell/platform/darwin/ios/ios_surface.h @@ -28,7 +28,7 @@ class IOSSurface { static std::unique_ptr Create( std::shared_ptr context, fml::scoped_nsobject layer, - const std::shared_ptr& platform_views_controller); + const std::shared_ptr& external_view_embedder); std::shared_ptr GetContext() const; @@ -49,7 +49,7 @@ class IOSSurface { protected: IOSSurface(std::shared_ptr ios_context, - const std::shared_ptr& platform_views_controller); + const std::shared_ptr& external_view_embedder); private: std::shared_ptr ios_context_; diff --git a/shell/platform/darwin/ios/ios_surface.mm b/shell/platform/darwin/ios/ios_surface.mm index 0f4a47da8312c..84cd298b318d6 100644 --- a/shell/platform/darwin/ios/ios_surface.mm +++ b/shell/platform/darwin/ios/ios_surface.mm @@ -18,7 +18,7 @@ std::unique_ptr IOSSurface::Create( std::shared_ptr context, fml::scoped_nsobject layer, - const std::shared_ptr& platform_views_controller) { + const std::shared_ptr& external_view_embedder) { FML_DCHECK(layer); FML_DCHECK(context); @@ -27,7 +27,7 @@ fml::scoped_nsobject( reinterpret_cast([layer.get() retain])), // EAGL layer std::move(context), // context - platform_views_controller // platform views controller + external_view_embedder // external view embedder ); } @@ -38,26 +38,22 @@ fml::scoped_nsobject( reinterpret_cast([layer.get() retain])), // Metal layer std::move(context), // context - platform_views_controller // platform views controller + external_view_embedder // external view embedder ); } } #endif // FLUTTER_SHELL_ENABLE_METAL - return std::make_unique( - std::move(layer), // layer - std::move(context), // context - platform_views_controller // platform views controller + return std::make_unique(std::move(layer), // layer + std::move(context), // context + external_view_embedder // external view embedder ); } -IOSSurface::IOSSurface( - std::shared_ptr ios_context, - const std::shared_ptr& platform_views_controller) - : ios_context_(std::move(ios_context)) { +IOSSurface::IOSSurface(std::shared_ptr ios_context, + const std::shared_ptr& external_view_embedder) + : ios_context_(std::move(ios_context)), external_view_embedder_(external_view_embedder) { FML_DCHECK(ios_context_); - external_view_embedder_ = - std::make_shared(platform_views_controller, ios_context_); } IOSSurface::~IOSSurface() = default; diff --git a/shell/platform/darwin/ios/ios_surface_factory.h b/shell/platform/darwin/ios/ios_surface_factory.h index 8184918114c78..bf6305d0d3184 100644 --- a/shell/platform/darwin/ios/ios_surface_factory.h +++ b/shell/platform/darwin/ios/ios_surface_factory.h @@ -9,6 +9,7 @@ #import "flutter/shell/platform/darwin/ios/ios_surface.h" #import "flutter/shell/platform/darwin/ios/rendering_api_selection.h" +#include "shell/platform/darwin/ios/ios_external_view_embedder.h" namespace flutter { @@ -28,8 +29,10 @@ class IOSSurfaceFactory { std::unique_ptr CreateSurface( fml::scoped_nsobject ca_layer); + std::shared_ptr GetExternalViewEmbedder(); + private: - std::shared_ptr platform_views_controller_; + std::shared_ptr external_view_embedder_; std::shared_ptr ios_context_; FML_DISALLOW_COPY_AND_ASSIGN(IOSSurfaceFactory); diff --git a/shell/platform/darwin/ios/ios_surface_factory.mm b/shell/platform/darwin/ios/ios_surface_factory.mm index 2c228bc074e92..6a6fd65138a4d 100644 --- a/shell/platform/darwin/ios/ios_surface_factory.mm +++ b/shell/platform/darwin/ios/ios_surface_factory.mm @@ -4,6 +4,7 @@ #import "flutter/shell/platform/darwin/ios/ios_surface_factory.h" #import "flutter/shell/platform/darwin/ios/ios_context.h" +#include "shell/platform/darwin/ios/ios_external_view_embedder.h" namespace flutter { @@ -19,12 +20,17 @@ void IOSSurfaceFactory::SetPlatformViewsController( const std::shared_ptr& platform_views_controller) { - platform_views_controller_ = platform_views_controller; + external_view_embedder_.reset( + new IOSExternalViewEmbedder(platform_views_controller, ios_context_)); +} + +std::shared_ptr IOSSurfaceFactory::GetExternalViewEmbedder() { + return external_view_embedder_; } std::unique_ptr IOSSurfaceFactory::CreateSurface( fml::scoped_nsobject ca_layer) { - return flutter::IOSSurface::Create(ios_context_, ca_layer, platform_views_controller_); + return flutter::IOSSurface::Create(ios_context_, ca_layer, external_view_embedder_); } } // namespace flutter diff --git a/shell/platform/darwin/ios/ios_surface_gl.h b/shell/platform/darwin/ios/ios_surface_gl.h index bd65457a8cd92..b5514c945106c 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.h +++ b/shell/platform/darwin/ios/ios_surface_gl.h @@ -18,10 +18,9 @@ namespace flutter { class IOSSurfaceGL final : public IOSSurface, public GPUSurfaceGLDelegate { public: - IOSSurfaceGL( - fml::scoped_nsobject layer, - std::shared_ptr context, - const std::shared_ptr& platform_views_controller = nullptr); + IOSSurfaceGL(fml::scoped_nsobject layer, + std::shared_ptr context, + const std::shared_ptr& external_view_embedder = nullptr); ~IOSSurfaceGL() override; diff --git a/shell/platform/darwin/ios/ios_surface_gl.mm b/shell/platform/darwin/ios/ios_surface_gl.mm index 06732dba5a10f..36f8238868444 100644 --- a/shell/platform/darwin/ios/ios_surface_gl.mm +++ b/shell/platform/darwin/ios/ios_surface_gl.mm @@ -14,11 +14,10 @@ return reinterpret_cast(context.get()); } -IOSSurfaceGL::IOSSurfaceGL( - fml::scoped_nsobject layer, - std::shared_ptr context, - const std::shared_ptr& platform_views_controller) - : IOSSurface(context, platform_views_controller) { +IOSSurfaceGL::IOSSurfaceGL(fml::scoped_nsobject layer, + std::shared_ptr context, + const std::shared_ptr& external_view_embedder) + : IOSSurface(context, external_view_embedder) { render_target_ = CastToGLContext(context)->CreateRenderTarget(std::move(layer)); } diff --git a/shell/platform/darwin/ios/ios_surface_metal.h b/shell/platform/darwin/ios/ios_surface_metal.h index 5b2f04d3360be..a0f7f075cf120 100644 --- a/shell/platform/darwin/ios/ios_surface_metal.h +++ b/shell/platform/darwin/ios/ios_surface_metal.h @@ -19,7 +19,7 @@ class SK_API_AVAILABLE_CA_METAL_LAYER IOSSurfaceMetal final : public IOSSurface, public: IOSSurfaceMetal(fml::scoped_nsobject layer, std::shared_ptr context, - const std::shared_ptr& platform_views_controller); + const std::shared_ptr& external_view_embedder); // |IOSSurface| ~IOSSurfaceMetal() override; diff --git a/shell/platform/darwin/ios/ios_surface_metal.mm b/shell/platform/darwin/ios/ios_surface_metal.mm index 6f73110b76683..00271e610fc85 100644 --- a/shell/platform/darwin/ios/ios_surface_metal.mm +++ b/shell/platform/darwin/ios/ios_surface_metal.mm @@ -16,8 +16,8 @@ IOSSurfaceMetal::IOSSurfaceMetal( fml::scoped_nsobject layer, std::shared_ptr context, - const std::shared_ptr& platform_views_controller) - : IOSSurface(std::move(context), platform_views_controller), layer_(std::move(layer)) { + const std::shared_ptr& external_view_embedder) + : IOSSurface(std::move(context), external_view_embedder), layer_(std::move(layer)) { if (!layer_) { return; } diff --git a/shell/platform/darwin/ios/ios_surface_software.h b/shell/platform/darwin/ios/ios_surface_software.h index 31492b8128f63..915071af8b954 100644 --- a/shell/platform/darwin/ios/ios_surface_software.h +++ b/shell/platform/darwin/ios/ios_surface_software.h @@ -18,10 +18,9 @@ namespace flutter { class IOSSurfaceSoftware final : public IOSSurface, public GPUSurfaceSoftwareDelegate { public: - IOSSurfaceSoftware( - fml::scoped_nsobject layer, - std::shared_ptr context, - const std::shared_ptr& platform_views_controller); + IOSSurfaceSoftware(fml::scoped_nsobject layer, + std::shared_ptr context, + const std::shared_ptr& external_view_embedder); ~IOSSurfaceSoftware() override; diff --git a/shell/platform/darwin/ios/ios_surface_software.mm b/shell/platform/darwin/ios/ios_surface_software.mm index 501492652cb60..8899bc675b881 100644 --- a/shell/platform/darwin/ios/ios_surface_software.mm +++ b/shell/platform/darwin/ios/ios_surface_software.mm @@ -18,8 +18,8 @@ IOSSurfaceSoftware::IOSSurfaceSoftware( fml::scoped_nsobject layer, std::shared_ptr context, - const std::shared_ptr& platform_views_controller) - : IOSSurface(std::move(context), platform_views_controller), layer_(std::move(layer)) {} + const std::shared_ptr& external_view_embedder) + : IOSSurface(std::move(context), external_view_embedder), layer_(std::move(layer)) {} IOSSurfaceSoftware::~IOSSurfaceSoftware() = default;