nine_patch_layer_unittest.cc revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright 2012 The Chromium 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#include "cc/layers/nine_patch_layer.h"
6
7#include "cc/debug/overdraw_metrics.h"
8#include "cc/resources/prioritized_resource_manager.h"
9#include "cc/resources/resource_provider.h"
10#include "cc/resources/resource_update_queue.h"
11#include "cc/resources/scoped_ui_resource.h"
12#include "cc/scheduler/texture_uploader.h"
13#include "cc/test/fake_layer_tree_host.h"
14#include "cc/test/fake_layer_tree_host_client.h"
15#include "cc/test/fake_output_surface.h"
16#include "cc/test/fake_output_surface_client.h"
17#include "cc/test/geometry_test_utils.h"
18#include "cc/trees/layer_tree_host.h"
19#include "cc/trees/occlusion_tracker.h"
20#include "cc/trees/single_thread_proxy.h"
21#include "testing/gmock/include/gmock/gmock.h"
22#include "testing/gtest/include/gtest/gtest.h"
23#include "third_party/skia/include/core/SkBitmap.h"
24
25using ::testing::Mock;
26using ::testing::_;
27using ::testing::AtLeast;
28using ::testing::AnyNumber;
29
30namespace cc {
31namespace {
32
33class NinePatchLayerTest : public testing::Test {
34 public:
35  NinePatchLayerTest() : fake_client_(FakeLayerTreeHostClient::DIRECT_3D) {}
36
37 protected:
38  virtual void SetUp() {
39    layer_tree_host_ = FakeLayerTreeHost::Create();
40  }
41
42  virtual void TearDown() {
43    Mock::VerifyAndClearExpectations(layer_tree_host_.get());
44  }
45
46  scoped_ptr<FakeLayerTreeHost> layer_tree_host_;
47  FakeLayerTreeHostClient fake_client_;
48};
49
50TEST_F(NinePatchLayerTest, SetLayerProperties) {
51  scoped_refptr<NinePatchLayer> test_layer = NinePatchLayer::Create();
52  ASSERT_TRUE(test_layer.get());
53  test_layer->SetIsDrawable(true);
54  test_layer->SetBounds(gfx::Size(100, 100));
55
56  layer_tree_host_->SetRootLayer(test_layer);
57  Mock::VerifyAndClearExpectations(layer_tree_host_.get());
58  EXPECT_EQ(test_layer->layer_tree_host(), layer_tree_host_.get());
59
60  ResourceUpdateQueue queue;
61  OcclusionTracker occlusion_tracker(gfx::Rect(), false);
62  test_layer->SavePaintProperties();
63  test_layer->Update(&queue, &occlusion_tracker);
64
65  EXPECT_FALSE(test_layer->DrawsContent());
66
67  SkBitmap bitmap;
68  bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
69  bitmap.allocPixels();
70  bitmap.setImmutable();
71
72  scoped_ptr<ScopedUIResource> resource = ScopedUIResource::Create(
73      layer_tree_host_.get(), UIResourceBitmap(bitmap));
74  gfx::Rect aperture(5, 5, 1, 1);
75  bool fill_center = true;
76  test_layer->SetAperture(aperture);
77  test_layer->SetUIResourceId(resource->id());
78  test_layer->SetFillCenter(fill_center);
79  test_layer->Update(&queue, &occlusion_tracker);
80
81  EXPECT_TRUE(test_layer->DrawsContent());
82}
83
84}  // namespace
85}  // namespace cc
86