|
| 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(void)>; |
| 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(SkISize frame_size, |
| 33 | + GrContext* context, |
| 34 | + double device_pixel_ratio) override; |
| 35 | + |
| 36 | + // |ExternalViewEmbedder| |
| 37 | + void PrerollCompositeEmbeddedView( |
| 38 | + int view_id, |
| 39 | + std::unique_ptr<EmbeddedViewParams> params) override; |
| 40 | + |
| 41 | + // |ExternalViewEmbedder| |
| 42 | + PostPrerollResult PostPrerollAction( |
| 43 | + fml::RefPtr<fml::RasterThreadMerger> raster_thread_merger) override; |
| 44 | + |
| 45 | + // |ExternalViewEmbedder| |
| 46 | + std::vector<SkCanvas*> GetCurrentCanvases() override; |
| 47 | + |
| 48 | + // |ExternalViewEmbedder| |
| 49 | + SkCanvas* CompositeEmbeddedView(int view_id) override; |
| 50 | + |
| 51 | + // |ExternalViewEmbedder| |
| 52 | + bool SubmitFrame(GrContext* context, SkCanvas* background_canvas) override; |
| 53 | + |
| 54 | + // |ExternalViewEmbedder| |
| 55 | + void FinishFrame() override; |
| 56 | + |
| 57 | + // |ExternalViewEmbedder| |
| 58 | + void EndFrame( |
| 59 | + fml::RefPtr<fml::RasterThreadMerger> raster_thread_merger) override; |
| 60 | + |
| 61 | + // |ExternalViewEmbedder| |
| 62 | + SkCanvas* GetRootCanvas() override; |
| 63 | + |
| 64 | + const EndFrameCallBack end_frame_call_back_; |
| 65 | + const PostPrerollResult post_preroll_result_; |
| 66 | + |
| 67 | + FML_DISALLOW_COPY_AND_ASSIGN(ShellTestExternalViewEmbedder); |
| 68 | +}; |
| 69 | + |
| 70 | +} // namespace flutter |
| 71 | + |
| 72 | +#endif // FLUTTER_SHELL_TEST_EXTERNAL_VIEW_EMBEDDER_H_ |
0 commit comments