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 | |
8 | namespace flutter { |
9 | namespace testing { |
10 | |
11 | ShellTestPlatformViewGL::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 | |
24 | ShellTestPlatformViewGL::~ShellTestPlatformViewGL() = default; |
25 | |
26 | std::unique_ptr<VsyncWaiter> ShellTestPlatformViewGL::CreateVSyncWaiter() { |
27 | return create_vsync_waiter_(); |
28 | } |
29 | |
30 | void ShellTestPlatformViewGL::SimulateVSync() { |
31 | vsync_clock_->SimulateVSync(); |
32 | } |
33 | |
34 | // |PlatformView| |
35 | std::unique_ptr<Surface> ShellTestPlatformViewGL::CreateRenderingSurface() { |
36 | return std::make_unique<GPUSurfaceGL>(this, true); |
37 | } |
38 | |
39 | // |PlatformView| |
40 | PointerDataDispatcherMaker ShellTestPlatformViewGL::GetDispatcherMaker() { |
41 | return [](DefaultPointerDataDispatcher::Delegate& delegate) { |
42 | return std::make_unique<SmoothPointerDataDispatcher>(delegate); |
43 | }; |
44 | } |
45 | |
46 | // |GPUSurfaceGLDelegate| |
47 | std::unique_ptr<GLContextResult> |
48 | ShellTestPlatformViewGL::GLContextMakeCurrent() { |
49 | return std::make_unique<GLContextDefaultResult>(gl_surface_.MakeCurrent()); |
50 | } |
51 | |
52 | // |GPUSurfaceGLDelegate| |
53 | bool ShellTestPlatformViewGL::GLContextClearCurrent() { |
54 | return gl_surface_.ClearCurrent(); |
55 | } |
56 | |
57 | // |GPUSurfaceGLDelegate| |
58 | bool ShellTestPlatformViewGL::GLContextPresent() { |
59 | return gl_surface_.Present(); |
60 | } |
61 | |
62 | // |GPUSurfaceGLDelegate| |
63 | intptr_t ShellTestPlatformViewGL::GLContextFBO() const { |
64 | return gl_surface_.GetFramebuffer(); |
65 | } |
66 | |
67 | // |GPUSurfaceGLDelegate| |
68 | GPUSurfaceGLDelegate::GLProcResolver |
69 | ShellTestPlatformViewGL::GetGLProcResolver() const { |
70 | return [surface = &gl_surface_](const char* name) -> void* { |
71 | return surface->GetProcAddress(name); |
72 | }; |
73 | } |
74 | |
75 | // |GPUSurfaceGLDelegate| |
76 | ExternalViewEmbedder* ShellTestPlatformViewGL::GetExternalViewEmbedder() { |
77 | return shell_test_external_view_embedder_.get(); |
78 | } |
79 | |
80 | } // namespace testing |
81 | } // namespace flutter |
82 | |