Home | History | Annotate | Download | only in layers
      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 
     25 using ::testing::Mock;
     26 using ::testing::_;
     27 using ::testing::AtLeast;
     28 using ::testing::AnyNumber;
     29 
     30 namespace cc {
     31 namespace {
     32 
     33 class 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 
     50 TEST_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