1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "flutter/shell/common/shell_test_platform_view_gl.h"
6#include "flutter/shell/gpu/gpu_surface_gl.h"
7
8namespace flutter {
9namespace testing {
10
11ShellTestPlatformViewGL::ShellTestPlatformViewGL(
12 PlatformView::Delegate& delegate,
13 TaskRunners task_runners,
14 std::shared_ptr<ShellTestVsyncClock> vsync_clock,
15 CreateVsyncWaiter create_vsync_waiter,
16 std::shared_ptr<ShellTestExternalViewEmbedder>
17 shell_test_external_view_embedder)
18 : ShellTestPlatformView(delegate, std::move(task_runners)),
19 gl_surface_(SkISize::Make(800, 600)),
20 create_vsync_waiter_(std::move(create_vsync_waiter)),
21 vsync_clock_(vsync_clock),
22 shell_test_external_view_embedder_(shell_test_external_view_embedder) {}
23
24ShellTestPlatformViewGL::~ShellTestPlatformViewGL() = default;
25
26std::unique_ptr<VsyncWaiter> ShellTestPlatformViewGL::CreateVSyncWaiter() {
27 return create_vsync_waiter_();
28}
29
30void ShellTestPlatformViewGL::SimulateVSync() {
31 vsync_clock_->SimulateVSync();
32}
33
34// |PlatformView|
35std::unique_ptr<Surface> ShellTestPlatformViewGL::CreateRenderingSurface() {
36 return std::make_unique<GPUSurfaceGL>(this, true);
37}
38
39// |PlatformView|
40PointerDataDispatcherMaker ShellTestPlatformViewGL::GetDispatcherMaker() {
41 return [](DefaultPointerDataDispatcher::Delegate& delegate) {
42 return std::make_unique<SmoothPointerDataDispatcher>(delegate);
43 };
44}
45
46// |GPUSurfaceGLDelegate|
47std::unique_ptr<GLContextResult>
48ShellTestPlatformViewGL::GLContextMakeCurrent() {
49 return std::make_unique<GLContextDefaultResult>(gl_surface_.MakeCurrent());
50}
51
52// |GPUSurfaceGLDelegate|
53bool ShellTestPlatformViewGL::GLContextClearCurrent() {
54 return gl_surface_.ClearCurrent();
55}
56
57// |GPUSurfaceGLDelegate|
58bool ShellTestPlatformViewGL::GLContextPresent() {
59 return gl_surface_.Present();
60}
61
62// |GPUSurfaceGLDelegate|
63intptr_t ShellTestPlatformViewGL::GLContextFBO() const {
64 return gl_surface_.GetFramebuffer();
65}
66
67// |GPUSurfaceGLDelegate|
68GPUSurfaceGLDelegate::GLProcResolver
69ShellTestPlatformViewGL::GetGLProcResolver() const {
70 return [surface = &gl_surface_](const char* name) -> void* {
71 return surface->GetProcAddress(name);
72 };
73}
74
75// |GPUSurfaceGLDelegate|
76ExternalViewEmbedder* ShellTestPlatformViewGL::GetExternalViewEmbedder() {
77 return shell_test_external_view_embedder_.get();
78}
79
80} // namespace testing
81} // namespace flutter
82