Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 6e95e00

Browse files
authored
Platform views have CreateExternalViewEmbedder (#22214)
1 parent d5b4f64 commit 6e95e00

14 files changed

+64
-0
lines changed

shell/common/platform_view.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,13 @@ std::unique_ptr<Surface> PlatformView::CreateRenderingSurface() {
136136
return nullptr;
137137
}
138138

139+
std::shared_ptr<ExternalViewEmbedder>
140+
PlatformView::CreateExternalViewEmbedder() {
141+
FML_DLOG(WARNING)
142+
<< "This platform doesn't support embedding external views.";
143+
return nullptr;
144+
}
145+
139146
void PlatformView::SetNextFrameCallback(const fml::closure& closure) {
140147
if (!closure) {
141148
return;

shell/common/platform_view.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <memory>
99

10+
#include "flow/embedded_views.h"
1011
#include "flutter/common/task_runners.h"
1112
#include "flutter/flow/surface.h"
1213
#include "flutter/flow/texture.h"
@@ -593,6 +594,8 @@ class PlatformView {
593594
// GPU task runner.
594595
virtual std::unique_ptr<Surface> CreateRenderingSurface();
595596

597+
virtual std::shared_ptr<ExternalViewEmbedder> CreateExternalViewEmbedder();
598+
596599
private:
597600
FML_DISALLOW_COPY_AND_ASSIGN(PlatformView);
598601
};

shell/common/shell_test_platform_view_gl.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@ std::unique_ptr<Surface> ShellTestPlatformViewGL::CreateRenderingSurface() {
3737
return std::make_unique<GPUSurfaceGL>(this, true);
3838
}
3939

40+
// |PlatformView|
41+
std::shared_ptr<ExternalViewEmbedder>
42+
ShellTestPlatformViewGL::CreateExternalViewEmbedder() {
43+
return shell_test_external_view_embedder_;
44+
}
45+
4046
// |PlatformView|
4147
PointerDataDispatcherMaker ShellTestPlatformViewGL::GetDispatcherMaker() {
4248
return [](DefaultPointerDataDispatcher::Delegate& delegate) {

shell/common/shell_test_platform_view_gl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ class ShellTestPlatformViewGL : public ShellTestPlatformView,
4040
// |PlatformView|
4141
std::unique_ptr<Surface> CreateRenderingSurface() override;
4242

43+
// |PlatformView|
44+
std::shared_ptr<ExternalViewEmbedder> CreateExternalViewEmbedder() override;
45+
4346
// |PlatformView|
4447
std::unique_ptr<VsyncWaiter> CreateVSyncWaiter() override;
4548

shell/common/shell_test_platform_view_vulkan.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ std::unique_ptr<Surface> ShellTestPlatformViewVulkan::CreateRenderingSurface() {
3939
shell_test_external_view_embedder_);
4040
}
4141

42+
// |PlatformView|
43+
std::shared_ptr<ExternalViewEmbedder>
44+
ShellTestPlatformViewVulkan::CreateExternalViewEmbedder() {
45+
return shell_test_external_view_embedder_;
46+
}
47+
4248
// |PlatformView|
4349
PointerDataDispatcherMaker ShellTestPlatformViewVulkan::GetDispatcherMaker() {
4450
return [](DefaultPointerDataDispatcher::Delegate& delegate) {

shell/common/shell_test_platform_view_vulkan.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ class ShellTestPlatformViewVulkan : public ShellTestPlatformView {
7676
// |PlatformView|
7777
std::unique_ptr<Surface> CreateRenderingSurface() override;
7878

79+
// |PlatformView|
80+
std::shared_ptr<ExternalViewEmbedder> CreateExternalViewEmbedder() override;
81+
7982
// |PlatformView|
8083
std::unique_ptr<VsyncWaiter> CreateVSyncWaiter() override;
8184

shell/platform/android/platform_view_android.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,12 @@ std::unique_ptr<Surface> PlatformViewAndroid::CreateRenderingSurface() {
307307
return android_surface_->CreateGPUSurface();
308308
}
309309

310+
// |PlatformView|
311+
std::shared_ptr<ExternalViewEmbedder>
312+
PlatformViewAndroid::CreateExternalViewEmbedder() {
313+
return external_view_embedder_;
314+
}
315+
310316
// |PlatformView|
311317
sk_sp<GrDirectContext> PlatformViewAndroid::CreateResourceContext() const {
312318
if (!android_surface_) {

shell/platform/android/platform_view_android.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ class PlatformViewAndroid final : public PlatformView {
127127
// |PlatformView|
128128
std::unique_ptr<Surface> CreateRenderingSurface() override;
129129

130+
// |PlatformView|
131+
std::shared_ptr<ExternalViewEmbedder> CreateExternalViewEmbedder() override;
132+
130133
// |PlatformView|
131134
sk_sp<GrDirectContext> CreateResourceContext() const override;
132135

shell/platform/darwin/ios/platform_view_ios.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ class PlatformViewIOS final : public PlatformView {
140140
// |PlatformView|
141141
std::unique_ptr<Surface> CreateRenderingSurface() override;
142142

143+
// |PlatformView|
144+
std::shared_ptr<ExternalViewEmbedder> CreateExternalViewEmbedder() override;
145+
143146
// |PlatformView|
144147
sk_sp<GrDirectContext> CreateResourceContext() const override;
145148

shell/platform/darwin/ios/platform_view_ios.mm

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@
140140
return ios_surface_->CreateGPUSurface();
141141
}
142142

143+
// |PlatformView|
144+
std::shared_ptr<ExternalViewEmbedder> PlatformViewIOS::CreateExternalViewEmbedder() {
145+
return ios_surface_factory_->GetExternalViewEmbedder();
146+
}
147+
143148
// |PlatformView|
144149
sk_sp<GrDirectContext> PlatformViewIOS::CreateResourceContext() const {
145150
return ios_context_->CreateResourceContext();

0 commit comments

Comments
 (0)