Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: trunk/src/cc/layers/nine_patch_layer_unittest.cc

Issue 23740010: Revert 223162 "Update the nine patch layer to use UI resources" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/layers/nine_patch_layer.h" 5 #include "cc/layers/nine_patch_layer.h"
6 6
7 #include "cc/debug/overdraw_metrics.h" 7 #include "cc/debug/overdraw_metrics.h"
8 #include "cc/resources/prioritized_resource_manager.h" 8 #include "cc/resources/prioritized_resource_manager.h"
9 #include "cc/resources/resource_provider.h" 9 #include "cc/resources/resource_provider.h"
10 #include "cc/resources/resource_update_queue.h" 10 #include "cc/resources/resource_update_queue.h"
11 #include "cc/resources/scoped_ui_resource.h"
12 #include "cc/scheduler/texture_uploader.h" 11 #include "cc/scheduler/texture_uploader.h"
13 #include "cc/test/fake_layer_tree_host_client.h" 12 #include "cc/test/fake_layer_tree_host_client.h"
14 #include "cc/test/fake_output_surface.h" 13 #include "cc/test/fake_output_surface.h"
15 #include "cc/test/fake_output_surface_client.h" 14 #include "cc/test/fake_output_surface_client.h"
16 #include "cc/test/geometry_test_utils.h" 15 #include "cc/test/geometry_test_utils.h"
17 #include "cc/trees/layer_tree_host.h" 16 #include "cc/trees/layer_tree_host.h"
18 #include "cc/trees/occlusion_tracker.h" 17 #include "cc/trees/occlusion_tracker.h"
19 #include "cc/trees/single_thread_proxy.h" 18 #include "cc/trees/single_thread_proxy.h"
20 #include "testing/gmock/include/gmock/gmock.h" 19 #include "testing/gmock/include/gmock/gmock.h"
21 #include "testing/gtest/include/gtest/gtest.h" 20 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 27 matching lines...) Expand all
49 } 48 }
50 49
51 virtual void TearDown() { 50 virtual void TearDown() {
52 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 51 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
53 } 52 }
54 53
55 scoped_ptr<MockLayerTreeHost> layer_tree_host_; 54 scoped_ptr<MockLayerTreeHost> layer_tree_host_;
56 FakeLayerTreeHostClient fake_client_; 55 FakeLayerTreeHostClient fake_client_;
57 }; 56 };
58 57
59 TEST_F(NinePatchLayerTest, SetBitmap) { 58 TEST_F(NinePatchLayerTest, TriggerFullUploadOnceWhenChangingBitmap) {
60 scoped_refptr<NinePatchLayer> test_layer = NinePatchLayer::Create(); 59 scoped_refptr<NinePatchLayer> test_layer = NinePatchLayer::Create();
61 ASSERT_TRUE(test_layer.get()); 60 ASSERT_TRUE(test_layer.get());
62 test_layer->SetIsDrawable(true); 61 test_layer->SetIsDrawable(true);
63 test_layer->SetBounds(gfx::Size(100, 100)); 62 test_layer->SetBounds(gfx::Size(100, 100));
64 63
65 layer_tree_host_->SetRootLayer(test_layer); 64 layer_tree_host_->SetRootLayer(test_layer);
66 Mock::VerifyAndClearExpectations(layer_tree_host_.get()); 65 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
67 EXPECT_EQ(test_layer->layer_tree_host(), layer_tree_host_.get()); 66 EXPECT_EQ(test_layer->layer_tree_host(), layer_tree_host_.get());
68 67
69 layer_tree_host_->InitializeOutputSurfaceIfNeeded(); 68 layer_tree_host_->InitializeOutputSurfaceIfNeeded();
70 69
70 PriorityCalculator calculator;
71 ResourceUpdateQueue queue; 71 ResourceUpdateQueue queue;
72 OcclusionTracker occlusion_tracker(gfx::Rect(), false); 72 OcclusionTracker occlusion_tracker(gfx::Rect(), false);
73
74 // No bitmap set should not trigger any uploads.
73 test_layer->SavePaintProperties(); 75 test_layer->SavePaintProperties();
76 test_layer->SetTexturePriorities(calculator);
74 test_layer->Update(&queue, &occlusion_tracker); 77 test_layer->Update(&queue, &occlusion_tracker);
78 EXPECT_EQ(0u, queue.FullUploadSize());
79 EXPECT_EQ(0u, queue.PartialUploadSize());
75 80
76 EXPECT_FALSE(test_layer->DrawsContent()); 81 // Setting a bitmap set should trigger a single full upload.
77
78 SkBitmap bitmap; 82 SkBitmap bitmap;
79 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); 83 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10);
80 bitmap.allocPixels(); 84 bitmap.allocPixels();
81 bitmap.setImmutable(); 85 test_layer->SetBitmap(bitmap, gfx::Rect(5, 5, 1, 1));
86 test_layer->SavePaintProperties();
87 test_layer->SetTexturePriorities(calculator);
88 test_layer->Update(&queue, &occlusion_tracker);
89 EXPECT_EQ(1u, queue.FullUploadSize());
90 EXPECT_EQ(0u, queue.PartialUploadSize());
91 ResourceUpdate params = queue.TakeFirstFullUpload();
92 EXPECT_TRUE(params.texture != NULL);
82 93
83 gfx::Rect aperture(5, 5, 1, 1); 94 // Upload the texture.
84 bool fill_center = false; 95 layer_tree_host_->contents_texture_manager()->SetMaxMemoryLimitBytes(
85 test_layer->SetBitmap(bitmap, aperture); 96 1024 * 1024);
86 test_layer->SetFillCenter(fill_center); 97 layer_tree_host_->contents_texture_manager()->PrioritizeTextures();
98
99 FakeOutputSurfaceClient output_surface_client;
100 scoped_ptr<OutputSurface> output_surface;
101 scoped_ptr<ResourceProvider> resource_provider;
102 {
103 DebugScopedSetImplThread impl_thread(Proxy());
104 DebugScopedSetMainThreadBlocked main_thread_blocked(Proxy());
105 output_surface = FakeOutputSurface::Create3d();
106 CHECK(output_surface->BindToClient(&output_surface_client));
107 resource_provider = ResourceProvider::Create(output_surface.get(), 0);
108 params.texture->AcquireBackingTexture(resource_provider.get());
109 ASSERT_TRUE(params.texture->have_backing_texture());
110 }
111
112 // Nothing changed, so no repeated upload.
113 test_layer->SavePaintProperties();
114 test_layer->SetTexturePriorities(calculator);
87 test_layer->Update(&queue, &occlusion_tracker); 115 test_layer->Update(&queue, &occlusion_tracker);
116 EXPECT_EQ(0u, queue.FullUploadSize());
117 EXPECT_EQ(0u, queue.PartialUploadSize());
118 {
119 DebugScopedSetImplThread impl_thread(Proxy());
120 DebugScopedSetMainThreadBlocked main_thread_blocked(Proxy());
121 layer_tree_host_->contents_texture_manager()->ClearAllMemory(
122 resource_provider.get());
123 }
88 124
89 EXPECT_TRUE(test_layer->DrawsContent()); 125 // Reupload after eviction
90 } 126 test_layer->SavePaintProperties();
127 test_layer->SetTexturePriorities(calculator);
128 test_layer->Update(&queue, &occlusion_tracker);
129 EXPECT_EQ(1u, queue.FullUploadSize());
130 EXPECT_EQ(0u, queue.PartialUploadSize());
91 131
92 TEST_F(NinePatchLayerTest, SetSharedBitmap) { 132 // PrioritizedResourceManager clearing
93 scoped_refptr<NinePatchLayer> test_layer = NinePatchLayer::Create(); 133 layer_tree_host_->contents_texture_manager()->UnregisterTexture(
94 ASSERT_TRUE(test_layer.get()); 134 params.texture);
95 test_layer->SetIsDrawable(true); 135 EXPECT_EQ(NULL, params.texture->resource_manager());
96 test_layer->SetBounds(gfx::Size(100, 100));
97
98 layer_tree_host_->SetRootLayer(test_layer);
99 Mock::VerifyAndClearExpectations(layer_tree_host_.get());
100 EXPECT_EQ(test_layer->layer_tree_host(), layer_tree_host_.get());
101
102 layer_tree_host_->InitializeOutputSurfaceIfNeeded();
103
104 ResourceUpdateQueue queue;
105 OcclusionTracker occlusion_tracker(gfx::Rect(), false);
106 test_layer->SavePaintProperties(); 136 test_layer->SavePaintProperties();
107 test_layer->Update(&queue, &occlusion_tracker); 137 test_layer->SetTexturePriorities(calculator);
108 138 ResourceUpdateQueue queue2;
109 EXPECT_FALSE(test_layer->DrawsContent()); 139 test_layer->Update(&queue2, &occlusion_tracker);
110 140 EXPECT_EQ(1u, queue2.FullUploadSize());
111 SkBitmap bitmap; 141 EXPECT_EQ(0u, queue2.PartialUploadSize());
112 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 10, 10); 142 params = queue2.TakeFirstFullUpload();
113 bitmap.allocPixels(); 143 EXPECT_TRUE(params.texture != NULL);
114 bitmap.setImmutable(); 144 EXPECT_EQ(params.texture->resource_manager(),
115 145 layer_tree_host_->contents_texture_manager());
116 scoped_ptr<ScopedUIResource> resource = ScopedUIResource::Create(
117 layer_tree_host_.get(), UIResourceBitmap(bitmap));
118 gfx::Rect aperture(5, 5, 1, 1);
119 bool fill_center = true;
120 test_layer->SetUIResourceId(resource->id(), aperture);
121 test_layer->SetFillCenter(fill_center);
122 test_layer->Update(&queue, &occlusion_tracker);
123
124 EXPECT_TRUE(test_layer->DrawsContent());
125 } 146 }
126 147
127 } // namespace 148 } // namespace
128 } // namespace cc 149 } // namespace cc
OLDNEW
« no previous file with comments | « trunk/src/cc/layers/nine_patch_layer_impl_unittest.cc ('k') | trunk/src/cc/layers/painted_scrollbar_layer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698