44
55#define FML_USED_ON_EMBEDDER
66
7- #include " flutter/shell/common/shell_test.h"
7+ #include " flutter/shell/common/tests/ shell_test.h"
88
9- #include " flutter/flow/layers/layer_tree.h"
109#include " flutter/flow/layers/transform_layer.h"
11- #include " flutter/fml/make_copyable.h"
12- #include " flutter/fml/mapping.h"
13- #include " flutter/runtime/dart_vm.h"
10+ #include " flutter/shell/common/tests/shell_test_platform_view.h"
1411#include " flutter/shell/common/vsync_waiter_fallback.h"
15- #include " flutter/shell/gpu/gpu_surface_gl.h"
16- #include " flutter/testing/testing.h"
1712
1813namespace flutter {
1914namespace testing {
@@ -250,35 +245,66 @@ TaskRunners ShellTest::GetTaskRunnersForFixture() {
250245 };
251246}
252247
248+ static std::unique_ptr<Shell> CreateTestShell (
249+ Settings settings,
250+ TaskRunners task_runners,
251+ bool simulate_vsync,
252+ ShellTestSurface::ClientRenderingAPI api) {
253+ auto vsync_clock = std::make_shared<ShellTestVsyncClock>();
254+ CreateVsyncWaiter on_create_vsync_waiter = [&]() {
255+ std::unique_ptr<VsyncWaiter> waiter;
256+ if (simulate_vsync) {
257+ waiter =
258+ std::make_unique<ShellTestVsyncWaiter>(task_runners, vsync_clock);
259+ } else {
260+ waiter = std::make_unique<VsyncWaiterFallback>(task_runners);
261+ }
262+ return waiter;
263+ };
264+
265+ Shell::CreateCallback<PlatformView> on_create_platform_view =
266+ [&](Shell& shell) {
267+ return std::make_unique<ShellTestPlatformView>(
268+ shell, shell.GetTaskRunners (), vsync_clock, on_create_vsync_waiter,
269+ api);
270+ };
271+
272+ Shell::CreateCallback<Rasterizer> on_create_rasterizer = [](Shell& shell) {
273+ return std::make_unique<Rasterizer>(shell, shell.GetTaskRunners ());
274+ };
275+
276+ return Shell::Create (task_runners, //
277+ settings, //
278+ on_create_platform_view, //
279+ on_create_rasterizer //
280+ );
281+ }
282+
283+ std::unique_ptr<Shell> ShellTest::CreateShell (
284+ Settings settings,
285+ ShellTestSurface::ClientRenderingAPI api) {
286+ return CreateTestShell (settings, GetTaskRunnersForFixture (), false , api);
287+ }
288+
253289std::unique_ptr<Shell> ShellTest::CreateShell (Settings settings,
254290 bool simulate_vsync) {
255- return CreateShell (std::move (settings), GetTaskRunnersForFixture (),
256- simulate_vsync);
291+ return CreateTestShell (
292+ settings, //
293+ GetTaskRunnersForFixture (), //
294+ simulate_vsync, //
295+ ShellTestSurface::ClientRenderingAPI::kClientRenderingAPIOpenGL //
296+ );
257297}
258298
259299std::unique_ptr<Shell> ShellTest::CreateShell (Settings settings,
260300 TaskRunners task_runners,
261301 bool simulate_vsync) {
262- const auto vsync_clock = std::make_shared<ShellTestVsyncClock>();
263- CreateVsyncWaiter create_vsync_waiter = [&]() {
264- if (simulate_vsync) {
265- return static_cast <std::unique_ptr<VsyncWaiter>>(
266- std::make_unique<ShellTestVsyncWaiter>(task_runners, vsync_clock));
267- } else {
268- return static_cast <std::unique_ptr<VsyncWaiter>>(
269- std::make_unique<VsyncWaiterFallback>(task_runners));
270- }
271- };
272- return Shell::Create (
273- task_runners, settings,
274- [vsync_clock, &create_vsync_waiter](Shell& shell) {
275- return std::make_unique<ShellTestPlatformView>(
276- shell, shell.GetTaskRunners (), vsync_clock,
277- std::move (create_vsync_waiter));
278- },
279- [](Shell& shell) {
280- return std::make_unique<Rasterizer>(shell, shell.GetTaskRunners ());
281- });
302+ return CreateTestShell (
303+ settings, //
304+ task_runners, //
305+ simulate_vsync, //
306+ ShellTestSurface::ClientRenderingAPI::kClientRenderingAPIOpenGL //
307+ );
282308}
283309
284310void ShellTest::DestroyShell (std::unique_ptr<Shell> shell) {
@@ -301,70 +327,5 @@ void ShellTest::AddNativeCallback(std::string name,
301327 native_resolver_->AddNativeCallback (std::move (name), callback);
302328}
303329
304- ShellTestPlatformView::ShellTestPlatformView (
305- PlatformView::Delegate& delegate,
306- TaskRunners task_runners,
307- std::shared_ptr<ShellTestVsyncClock> vsync_clock,
308- CreateVsyncWaiter create_vsync_waiter)
309- : PlatformView(delegate, std::move(task_runners)),
310- gl_surface_(SkISize::Make(800 , 600 )),
311- create_vsync_waiter_(std::move(create_vsync_waiter)),
312- vsync_clock_(vsync_clock) {}
313-
314- ShellTestPlatformView::~ShellTestPlatformView () = default ;
315-
316- std::unique_ptr<VsyncWaiter> ShellTestPlatformView::CreateVSyncWaiter () {
317- return create_vsync_waiter_ ();
318- }
319-
320- void ShellTestPlatformView::SimulateVSync () {
321- vsync_clock_->SimulateVSync ();
322- }
323-
324- // |PlatformView|
325- std::unique_ptr<Surface> ShellTestPlatformView::CreateRenderingSurface () {
326- return std::make_unique<GPUSurfaceGL>(this , true );
327- }
328-
329- // |PlatformView|
330- PointerDataDispatcherMaker ShellTestPlatformView::GetDispatcherMaker () {
331- return [](DefaultPointerDataDispatcher::Delegate& delegate) {
332- return std::make_unique<SmoothPointerDataDispatcher>(delegate);
333- };
334- }
335-
336- // |GPUSurfaceGLDelegate|
337- bool ShellTestPlatformView::GLContextMakeCurrent () {
338- return gl_surface_.MakeCurrent ();
339- }
340-
341- // |GPUSurfaceGLDelegate|
342- bool ShellTestPlatformView::GLContextClearCurrent () {
343- return gl_surface_.ClearCurrent ();
344- }
345-
346- // |GPUSurfaceGLDelegate|
347- bool ShellTestPlatformView::GLContextPresent () {
348- return gl_surface_.Present ();
349- }
350-
351- // |GPUSurfaceGLDelegate|
352- intptr_t ShellTestPlatformView::GLContextFBO () const {
353- return gl_surface_.GetFramebuffer ();
354- }
355-
356- // |GPUSurfaceGLDelegate|
357- GPUSurfaceGLDelegate::GLProcResolver ShellTestPlatformView::GetGLProcResolver ()
358- const {
359- return [surface = &gl_surface_](const char * name) -> void * {
360- return surface->GetProcAddress (name);
361- };
362- }
363-
364- // |GPUSurfaceGLDelegate|
365- ExternalViewEmbedder* ShellTestPlatformView::GetExternalViewEmbedder () {
366- return nullptr ;
367- }
368-
369330} // namespace testing
370331} // namespace flutter
0 commit comments