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 | #ifndef FLUTTER_SHELL_TEST_EXTERNAL_VIEW_EMBEDDER_H_ |
6 | #define FLUTTER_SHELL_TEST_EXTERNAL_VIEW_EMBEDDER_H_ |
7 | |
8 | #include "flutter/flow/embedded_views.h" |
9 | #include "flutter/fml/raster_thread_merger.h" |
10 | |
11 | namespace flutter { |
12 | |
13 | //------------------------------------------------------------------------------ |
14 | /// @brief The external view embedder used by |ShellTestPlatformViewGL| |
15 | /// |
16 | class ShellTestExternalViewEmbedder final : public ExternalViewEmbedder { |
17 | public: |
18 | using EndFrameCallBack = std::function<void(bool)>; |
19 | |
20 | ShellTestExternalViewEmbedder(const EndFrameCallBack& end_frame_call_back, |
21 | PostPrerollResult post_preroll_result) |
22 | : end_frame_call_back_(end_frame_call_back), |
23 | post_preroll_result_(post_preroll_result) {} |
24 | |
25 | ~ShellTestExternalViewEmbedder() = default; |
26 | |
27 | private: |
28 | // |ExternalViewEmbedder| |
29 | void CancelFrame() override; |
30 | |
31 | // |ExternalViewEmbedder| |
32 | void BeginFrame( |
33 | SkISize frame_size, |
34 | GrDirectContext* context, |
35 | double device_pixel_ratio, |
36 | fml::RefPtr<fml::RasterThreadMerger> raster_thread_merger) override; |
37 | |
38 | // |ExternalViewEmbedder| |
39 | void PrerollCompositeEmbeddedView( |
40 | int view_id, |
41 | std::unique_ptr<EmbeddedViewParams> params) override; |
42 | |
43 | // |ExternalViewEmbedder| |
44 | PostPrerollResult PostPrerollAction( |
45 | fml::RefPtr<fml::RasterThreadMerger> raster_thread_merger) override; |
46 | |
47 | // |ExternalViewEmbedder| |
48 | std::vector<SkCanvas*> GetCurrentCanvases() override; |
49 | |
50 | // |ExternalViewEmbedder| |
51 | SkCanvas* CompositeEmbeddedView(int view_id) override; |
52 | |
53 | // |ExternalViewEmbedder| |
54 | void SubmitFrame(GrDirectContext* context, |
55 | std::unique_ptr<SurfaceFrame> frame) override; |
56 | |
57 | // |ExternalViewEmbedder| |
58 | void EndFrame( |
59 | bool should_resubmit_frame, |
60 | fml::RefPtr<fml::RasterThreadMerger> raster_thread_merger) override; |
61 | |
62 | // |ExternalViewEmbedder| |
63 | SkCanvas* GetRootCanvas() override; |
64 | |
65 | const EndFrameCallBack end_frame_call_back_; |
66 | const PostPrerollResult post_preroll_result_; |
67 | |
68 | FML_DISALLOW_COPY_AND_ASSIGN(ShellTestExternalViewEmbedder); |
69 | }; |
70 | |
71 | } // namespace flutter |
72 | |
73 | #endif // FLUTTER_SHELL_TEST_EXTERNAL_VIEW_EMBEDDER_H_ |
74 |