blob: a44ebdbead301781c968fe6c73bfcd890ea4416e [file] [log] [blame]
// 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