| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "flutter/flow/testing/layer_test.h" |
| |
| #include "gtest/gtest.h" |
| |
| namespace flutter { |
| namespace testing { |
| |
| using AutoSaveLayerTests = LayerTest; |
| |
| TEST_F(AutoSaveLayerTests, SaveLayerOnInternalNodesCanvasByDefault) { |
| // For: |
| // static AutoSaveLayer Create(const PaintContext& paint_context, |
| // const SkRect& bounds, |
| // const SkPaint* paint, |
| // SaveMode save_mode); |
| { |
| int saved_count_before = |
| paint_context().internal_nodes_canvas->getSaveCount(); |
| { |
| const SkPaint paint; |
| const SkRect rect = SkRect::MakeEmpty(); |
| Layer::AutoSaveLayer save = |
| Layer::AutoSaveLayer::Create(paint_context(), rect, &paint); |
| EXPECT_EQ(paint_context().internal_nodes_canvas->getSaveCount(), |
| saved_count_before + 1); |
| EXPECT_EQ(paint_context().leaf_nodes_canvas->getSaveCount(), |
| saved_count_before + 1); |
| } |
| EXPECT_EQ(paint_context().internal_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| EXPECT_EQ(paint_context().leaf_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| } |
| // For: |
| // static AutoSaveLayer Create(const PaintContext& paint_context, |
| // const SkCanvas::SaveLayerRec& layer_rec, |
| // SaveMode save_mode); |
| { |
| int saved_count_before = |
| paint_context().internal_nodes_canvas->getSaveCount(); |
| { |
| const SkPaint paint; |
| const SkRect rect = SkRect::MakeEmpty(); |
| const SkCanvas::SaveLayerRec save_layer_rect = |
| SkCanvas::SaveLayerRec{&rect, &paint, nullptr, 0}; |
| Layer::AutoSaveLayer save = |
| Layer::AutoSaveLayer::Create(paint_context(), save_layer_rect); |
| EXPECT_EQ(paint_context().internal_nodes_canvas->getSaveCount(), |
| saved_count_before + 1); |
| EXPECT_EQ(paint_context().leaf_nodes_canvas->getSaveCount(), |
| saved_count_before + 1); |
| } |
| EXPECT_EQ(paint_context().internal_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| EXPECT_EQ(paint_context().leaf_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| } |
| } |
| |
| TEST_F(AutoSaveLayerTests, SaveLayerOnlyOnLeafNodesCanvas) { |
| // For: |
| // static AutoSaveLayer Create(const PaintContext& paint_context, |
| // const SkRect& bounds, |
| // const SkPaint* paint, |
| // SaveMode save_mode); |
| { |
| int saved_count_before = |
| paint_context().internal_nodes_canvas->getSaveCount(); |
| { |
| const SkPaint paint; |
| const SkRect rect = SkRect::MakeEmpty(); |
| Layer::AutoSaveLayer save = Layer::AutoSaveLayer::Create( |
| paint_context(), rect, &paint, |
| Layer::AutoSaveLayer::SaveMode::kLeafNodesCanvas); |
| EXPECT_EQ(paint_context().internal_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| EXPECT_EQ(paint_context().leaf_nodes_canvas->getSaveCount(), |
| saved_count_before + 1); |
| } |
| EXPECT_EQ(paint_context().internal_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| EXPECT_EQ(paint_context().leaf_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| } |
| // For: |
| // static AutoSaveLayer Create(const PaintContext& paint_context, |
| // const SkCanvas::SaveLayerRec& layer_rec, |
| // SaveMode save_mode); |
| { |
| int saved_count_before = |
| paint_context().internal_nodes_canvas->getSaveCount(); |
| { |
| const SkPaint paint; |
| const SkRect rect = SkRect::MakeEmpty(); |
| const SkCanvas::SaveLayerRec save_layer_rect = |
| SkCanvas::SaveLayerRec{&rect, &paint, nullptr, 0}; |
| Layer::AutoSaveLayer save = Layer::AutoSaveLayer::Create( |
| paint_context(), save_layer_rect, |
| Layer::AutoSaveLayer::SaveMode::kLeafNodesCanvas); |
| EXPECT_EQ(paint_context().internal_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| EXPECT_EQ(paint_context().leaf_nodes_canvas->getSaveCount(), |
| saved_count_before + 1); |
| } |
| EXPECT_EQ(paint_context().internal_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| EXPECT_EQ(paint_context().leaf_nodes_canvas->getSaveCount(), |
| saved_count_before); |
| } |
| } |
| |
| } // namespace testing |
| } // namespace flutter |