Flutter Engine
 
Loading...
Searching...
No Matches
mock_layer.cc
Go to the documentation of this file.
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
6
7#include <utility>
8
13
14namespace flutter {
15namespace testing {
16
18 : fake_paint_path_(path), fake_paint_(std::move(paint)) {}
19
20bool MockLayer::IsReplacing(DiffContext* context, const Layer* layer) const {
21 // Similar to PictureLayer, only return true for identical mock layers;
22 // That way ContainerLayer::DiffChildren can properly detect mock layer
23 // insertion
24 auto mock_layer = layer->as_mock_layer();
25 return mock_layer && mock_layer->fake_paint_ == fake_paint_ &&
26 mock_layer->fake_paint_path_ == fake_paint_path_;
27}
28
29void MockLayer::Diff(DiffContext* context, const Layer* old_layer) {
30 DiffContext::AutoSubtreeRestore subtree(context);
31 context->AddLayerBounds(fake_paint_path_.GetBounds());
32 context->SetLayerPaintRegion(this, context->CurrentSubtreeRegion());
33}
34
36 context->state_stack.fill(&parent_mutators_);
37 parent_matrix_ = context->state_stack.matrix();
38 parent_cull_rect_ = context->state_stack.local_cull_rect();
39
42
45 set_paint_bounds(fake_paint_path_.GetBounds());
46 if (fake_reads_surface()) {
47 context->surface_needs_readback = true;
48 }
51 }
52}
53
54void MockLayer::Paint(PaintContext& context) const {
55 FML_DCHECK(needs_painting(context));
56
57 if (expected_paint_matrix_.has_value()) {
58 EXPECT_EQ(context.canvas->GetMatrix(), expected_paint_matrix_.value());
59 }
60
61 DlPaint paint = fake_paint_;
62 context.state_stack.fill(paint);
63 context.canvas->DrawPath(fake_paint_path_, paint);
64}
65
74
78 auto cache = AutoCache(raster_cache_item_.get(), context,
79 context->state_stack.matrix());
80
81 MockLayer::Preroll(context);
82}
83
84} // namespace testing
85} // namespace flutter
std::unique_ptr< LayerRasterCacheItem > layer_raster_cache_item_
void Preroll(PrerollContext *context) override
void SetLayerPaintRegion(const Layer *layer, const PaintRegion &region)
PaintRegion CurrentSubtreeRegion() const
void AddLayerBounds(const DlRect &rect)
virtual DlMatrix GetMatrix() const =0
virtual void DrawPath(const DlPath &path, const DlPaint &paint)=0
DlRect GetBounds() const override
Definition dl_path.cc:245
static AutoPrerollSaveLayerState Create(PrerollContext *preroll_context, bool save_layer_is_active=true, bool layer_itself_performs_readback=false)
Definition layer.cc:37
virtual const testing::MockLayer * as_mock_layer() const
Definition layer.h:252
void set_paint_bounds(const DlRect &paint_bounds)
Definition layer.h:209
bool needs_painting(PaintContext &context) const
Definition layer.h:218
void fill(MutatorsStack *mutators)
const DlMatrix matrix() const
static constexpr int kCallerCanApplyOpacity
void Preroll(PrerollContext *context) override
Definition mock_layer.cc:66
void Preroll(PrerollContext *context) override
Definition mock_layer.cc:75
bool IsReplacing(DiffContext *context, const Layer *layer) const override
Definition mock_layer.cc:20
MockLayer & set_parent_has_platform_view(bool flag)
Definition mock_layer.h:70
MockLayer(const DlPath &path, DlPaint paint=DlPaint())
Definition mock_layer.cc:17
MockLayer & set_parent_has_texture_layer(bool flag)
Definition mock_layer.h:76
void Diff(DiffContext *context, const Layer *old_layer) override
Definition mock_layer.cc:29
void Preroll(PrerollContext *context) override
Definition mock_layer.cc:35
void Paint(PaintContext &context) const override
Definition mock_layer.cc:54
#define FML_DCHECK(condition)
Definition logging.h:122
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition switch_defs.h:52
Definition ref_ptr.h:261
DlCanvas * canvas
Definition layer.h:92
LayerStateStack & state_stack
Definition layer.h:91
LayerStateStack & state_stack
Definition layer.h:49
bool surface_needs_readback
Definition layer.h:51