ui_resource_layer_unittest.cc revision f2477e01787aa58f445919b809d89e252beef54f
1// Copyright 2013 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/ui_resource_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 UIResourceLayerTest : public testing::Test { 34 public: 35 UIResourceLayerTest() : fake_client_(FakeLayerTreeHostClient::DIRECT_3D) {} 36 37 protected: 38 virtual void SetUp() { 39 layer_tree_host_ = FakeLayerTreeHost::Create(); 40 layer_tree_host_->InitializeSingleThreaded(&fake_client_); 41 } 42 43 virtual void TearDown() { 44 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 45 } 46 47 scoped_ptr<FakeLayerTreeHost> layer_tree_host_; 48 FakeLayerTreeHostClient fake_client_; 49}; 50 51TEST_F(UIResourceLayerTest, SetBitmap) { 52 scoped_refptr<UIResourceLayer> test_layer = UIResourceLayer::Create(); 53 ASSERT_TRUE(test_layer.get()); 54 test_layer->SetIsDrawable(true); 55 test_layer->SetBounds(gfx::Size(100, 100)); 56 57 layer_tree_host_->SetRootLayer(test_layer); 58 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 59 EXPECT_EQ(test_layer->layer_tree_host(), layer_tree_host_.get()); 60 61 layer_tree_host_->InitializeOutputSurfaceIfNeeded(); 62 63 ResourceUpdateQueue queue; 64 OcclusionTracker occlusion_tracker(gfx::Rect(), false); 65 test_layer->SavePaintProperties(); 66 test_layer->Update(&queue, &occlusion_tracker); 67 68 EXPECT_FALSE(test_layer->DrawsContent()); 69 70 SkBitmap bitmap; 71 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); 72 bitmap.allocPixels(); 73 bitmap.setImmutable(); 74 75 test_layer->SetBitmap(bitmap); 76 test_layer->Update(&queue, &occlusion_tracker); 77 78 EXPECT_TRUE(test_layer->DrawsContent()); 79} 80 81TEST_F(UIResourceLayerTest, SetUIResourceId) { 82 scoped_refptr<UIResourceLayer> test_layer = UIResourceLayer::Create(); 83 ASSERT_TRUE(test_layer.get()); 84 test_layer->SetIsDrawable(true); 85 test_layer->SetBounds(gfx::Size(100, 100)); 86 87 layer_tree_host_->SetRootLayer(test_layer); 88 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 89 EXPECT_EQ(test_layer->layer_tree_host(), layer_tree_host_.get()); 90 91 layer_tree_host_->InitializeOutputSurfaceIfNeeded(); 92 93 ResourceUpdateQueue queue; 94 OcclusionTracker occlusion_tracker(gfx::Rect(), false); 95 test_layer->SavePaintProperties(); 96 test_layer->Update(&queue, &occlusion_tracker); 97 98 EXPECT_FALSE(test_layer->DrawsContent()); 99 100 SkBitmap bitmap; 101 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); 102 bitmap.allocPixels(); 103 bitmap.setImmutable(); 104 105 scoped_ptr<ScopedUIResource> resource = ScopedUIResource::Create( 106 layer_tree_host_.get(), UIResourceBitmap(bitmap)); 107 test_layer->SetUIResourceId(resource->id()); 108 test_layer->Update(&queue, &occlusion_tracker); 109 110 EXPECT_TRUE(test_layer->DrawsContent()); 111} 112 113} // namespace 114} // namespace cc 115