diff --git a/shell/common/platform_view.cc b/shell/common/platform_view.cc index a933bd3b3c6bf4182310712d3f6ecbaac7ffe36d..3e2b1daa476a60735ac5de6839f251eb49b825f3 100644 --- a/shell/common/platform_view.cc +++ b/shell/common/platform_view.cc @@ -136,6 +136,13 @@ std::unique_ptr PlatformView::CreateRenderingSurface() { return nullptr; } +std::shared_ptr +PlatformView::CreateExternalViewEmbedder() { + FML_DLOG(WARNING) + << "This platform doesn't support embedding external views."; + return nullptr; +} + void PlatformView::SetNextFrameCallback(const fml::closure& closure) { if (!closure) { return; diff --git a/shell/common/platform_view.h b/shell/common/platform_view.h index 5b376878ee208eab400f2c68939e4b0260fb255c..a67b4b793cce1cf3e3b4a19682ac1cf670eba997 100644 --- a/shell/common/platform_view.h +++ b/shell/common/platform_view.h @@ -7,6 +7,7 @@ #include +#include "flow/embedded_views.h" #include "flutter/common/task_runners.h" #include "flutter/flow/surface.h" #include "flutter/flow/texture.h" @@ -593,6 +594,8 @@ class PlatformView { // GPU task runner. virtual std::unique_ptr CreateRenderingSurface(); + virtual std::shared_ptr CreateExternalViewEmbedder(); + private: FML_DISALLOW_COPY_AND_ASSIGN(PlatformView); }; diff --git a/shell/common/shell_test_platform_view_gl.cc b/shell/common/shell_test_platform_view_gl.cc index 2175464f83fa01cf3eee10ef1d8386d5e80001d6..287686b08c80595e3af11670e510e337cdf0c66b 100644 --- a/shell/common/shell_test_platform_view_gl.cc +++ b/shell/common/shell_test_platform_view_gl.cc @@ -37,6 +37,12 @@ std::unique_ptr ShellTestPlatformViewGL::CreateRenderingSurface() { return std::make_unique(this, true); } +// |PlatformView| +std::shared_ptr +ShellTestPlatformViewGL::CreateExternalViewEmbedder() { + return shell_test_external_view_embedder_; +} + // |PlatformView| PointerDataDispatcherMaker ShellTestPlatformViewGL::GetDispatcherMaker() { return [](DefaultPointerDataDispatcher::Delegate& delegate) { diff --git a/shell/common/shell_test_platform_view_gl.h b/shell/common/shell_test_platform_view_gl.h index a4e020915f31532d5a24b85ec9ddfe05a26296a8..5779147e289aff88643db13eae4c979b2cd3e8dd 100644 --- a/shell/common/shell_test_platform_view_gl.h +++ b/shell/common/shell_test_platform_view_gl.h @@ -40,6 +40,9 @@ class ShellTestPlatformViewGL : public ShellTestPlatformView, // |PlatformView| std::unique_ptr CreateRenderingSurface() override; + // |PlatformView| + std::shared_ptr CreateExternalViewEmbedder() override; + // |PlatformView| std::unique_ptr CreateVSyncWaiter() override; diff --git a/shell/common/shell_test_platform_view_vulkan.cc b/shell/common/shell_test_platform_view_vulkan.cc index 3c43095af39f6f04e9203a43beee30076da349dd..b34c1a70b80179ad0fbd33bb3f96882db1fe7305 100644 --- a/shell/common/shell_test_platform_view_vulkan.cc +++ b/shell/common/shell_test_platform_view_vulkan.cc @@ -39,6 +39,12 @@ std::unique_ptr ShellTestPlatformViewVulkan::CreateRenderingSurface() { shell_test_external_view_embedder_); } +// |PlatformView| +std::shared_ptr +ShellTestPlatformViewVulkan::CreateExternalViewEmbedder() { + return shell_test_external_view_embedder_; +} + // |PlatformView| PointerDataDispatcherMaker ShellTestPlatformViewVulkan::GetDispatcherMaker() { return [](DefaultPointerDataDispatcher::Delegate& delegate) { diff --git a/shell/common/shell_test_platform_view_vulkan.h b/shell/common/shell_test_platform_view_vulkan.h index c2a13e70f6830511e17ae37aa682d9c1edff0244..745647e77ca382792881bd368a38ff3d036b57f9 100644 --- a/shell/common/shell_test_platform_view_vulkan.h +++ b/shell/common/shell_test_platform_view_vulkan.h @@ -76,6 +76,9 @@ class ShellTestPlatformViewVulkan : public ShellTestPlatformView { // |PlatformView| std::unique_ptr CreateRenderingSurface() override; + // |PlatformView| + std::shared_ptr CreateExternalViewEmbedder() override; + // |PlatformView| std::unique_ptr CreateVSyncWaiter() override; diff --git a/shell/platform/android/platform_view_android.cc b/shell/platform/android/platform_view_android.cc index 8ebac2aa929b92de8cd61c6c05f3e33da469b1af..8612d646519fe0f47371629250693da219b588a7 100644 --- a/shell/platform/android/platform_view_android.cc +++ b/shell/platform/android/platform_view_android.cc @@ -307,6 +307,12 @@ std::unique_ptr PlatformViewAndroid::CreateRenderingSurface() { return android_surface_->CreateGPUSurface(); } +// |PlatformView| +std::shared_ptr +PlatformViewAndroid::CreateExternalViewEmbedder() { + return external_view_embedder_; +} + // |PlatformView| sk_sp PlatformViewAndroid::CreateResourceContext() const { if (!android_surface_) { diff --git a/shell/platform/android/platform_view_android.h b/shell/platform/android/platform_view_android.h index b1bf8194976f56c5270ffa4cfb00ee6bb1b5c0a5..b2500c979b98cb522a0676b88293a1b0082b5a18 100644 --- a/shell/platform/android/platform_view_android.h +++ b/shell/platform/android/platform_view_android.h @@ -127,6 +127,9 @@ class PlatformViewAndroid final : public PlatformView { // |PlatformView| std::unique_ptr CreateRenderingSurface() override; + // |PlatformView| + std::shared_ptr CreateExternalViewEmbedder() override; + // |PlatformView| sk_sp CreateResourceContext() const override; diff --git a/shell/platform/darwin/ios/platform_view_ios.h b/shell/platform/darwin/ios/platform_view_ios.h index 661d5e57f5b854317d0c46bdbaacfd178bd8776d..0681cfb95661705a62c16324b1c1a410a5ef3651 100644 --- a/shell/platform/darwin/ios/platform_view_ios.h +++ b/shell/platform/darwin/ios/platform_view_ios.h @@ -140,6 +140,9 @@ class PlatformViewIOS final : public PlatformView { // |PlatformView| std::unique_ptr CreateRenderingSurface() override; + // |PlatformView| + std::shared_ptr CreateExternalViewEmbedder() override; + // |PlatformView| sk_sp CreateResourceContext() const override; diff --git a/shell/platform/darwin/ios/platform_view_ios.mm b/shell/platform/darwin/ios/platform_view_ios.mm index 43543c1e2fcdeb37b47c3544d7f521c376aa3fd9..fb151d6d515e26fe0549df260c7a285acb7b24d0 100644 --- a/shell/platform/darwin/ios/platform_view_ios.mm +++ b/shell/platform/darwin/ios/platform_view_ios.mm @@ -140,6 +140,11 @@ std::unique_ptr PlatformViewIOS::CreateRenderingSurface() { return ios_surface_->CreateGPUSurface(); } +// |PlatformView| +std::shared_ptr PlatformViewIOS::CreateExternalViewEmbedder() { + return ios_surface_factory_->GetExternalViewEmbedder(); +} + // |PlatformView| sk_sp PlatformViewIOS::CreateResourceContext() const { return ios_context_->CreateResourceContext(); diff --git a/shell/platform/embedder/platform_view_embedder.cc b/shell/platform/embedder/platform_view_embedder.cc index de51eb31afcc4156b88ade79097a0290c5e797c9..d5cbb54d6782287d3c60c29aa8ec9065809ff922 100644 --- a/shell/platform/embedder/platform_view_embedder.cc +++ b/shell/platform/embedder/platform_view_embedder.cc @@ -77,6 +77,12 @@ std::unique_ptr PlatformViewEmbedder::CreateRenderingSurface() { return embedder_surface_->CreateGPUSurface(); } +// |PlatformView| +std::shared_ptr +PlatformViewEmbedder::CreateExternalViewEmbedder() { + return external_view_embedder_; +} + // |PlatformView| sk_sp PlatformViewEmbedder::CreateResourceContext() const { if (embedder_surface_ == nullptr) { diff --git a/shell/platform/embedder/platform_view_embedder.h b/shell/platform/embedder/platform_view_embedder.h index 6fefcf8b20a9d43208932130438940a6610afa20..76fc26a99b3b435a89527625038f749dcaf6334d 100644 --- a/shell/platform/embedder/platform_view_embedder.h +++ b/shell/platform/embedder/platform_view_embedder.h @@ -82,6 +82,9 @@ class PlatformViewEmbedder final : public PlatformView { // |PlatformView| std::unique_ptr CreateRenderingSurface() override; + // |PlatformView| + std::shared_ptr CreateExternalViewEmbedder() override; + // |PlatformView| sk_sp CreateResourceContext() const override; diff --git a/shell/platform/fuchsia/flutter/platform_view.cc b/shell/platform/fuchsia/flutter/platform_view.cc index fa7e9a77c9357c6c75deb98d7908d1d6314cba2a..0d379b395752b51d6fa1a89b46e3ff60127a7eb0 100644 --- a/shell/platform/fuchsia/flutter/platform_view.cc +++ b/shell/platform/fuchsia/flutter/platform_view.cc @@ -586,6 +586,12 @@ std::unique_ptr PlatformView::CreateRenderingSurface() { return on_create_surface_callback_ ? on_create_surface_callback_() : nullptr; } +// |flutter::PlatformView| +std::shared_ptr +PlatformView::CreateExternalViewEmbedder() { + return external_view_embedder_; +} + // |flutter::PlatformView| void PlatformView::HandlePlatformMessage( fml::RefPtr message) { diff --git a/shell/platform/fuchsia/flutter/platform_view.h b/shell/platform/fuchsia/flutter/platform_view.h index 092633f1dde0ac39ad30ced5f65a5c6e15ea3999..28765d2fd146a42c3dd2af336a2bab1ff3fd6e63 100644 --- a/shell/platform/fuchsia/flutter/platform_view.h +++ b/shell/platform/fuchsia/flutter/platform_view.h @@ -121,6 +121,10 @@ class PlatformView final : public flutter::PlatformView, // |flutter::PlatformView| std::unique_ptr CreateRenderingSurface() override; + // |flutter::PlatformView| + std::shared_ptr CreateExternalViewEmbedder() + override; + // |flutter::PlatformView| void HandlePlatformMessage( fml::RefPtr message) override;