| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include "base/macros.h" | 7 #include "base/macros.h" |
| 8 #include "cc/animation/animation_host.h" | 8 #include "cc/animation/animation_host.h" |
| 9 #include "cc/resources/ui_resource_bitmap.h" | 9 #include "cc/resources/ui_resource_bitmap.h" |
| 10 #include "cc/resources/ui_resource_manager.h" |
| 10 #include "cc/test/stub_layer_tree_host_client.h" | 11 #include "cc/test/stub_layer_tree_host_client.h" |
| 11 #include "cc/test/test_task_graph_runner.h" | 12 #include "cc/test/test_task_graph_runner.h" |
| 12 #include "cc/trees/layer_tree_host.h" | |
| 13 #include "testing/gmock/include/gmock/gmock.h" | 13 #include "testing/gmock/include/gmock/gmock.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
| 15 #include "third_party/skia/include/core/SkBitmap.h" | 15 #include "third_party/skia/include/core/SkBitmap.h" |
| 16 #include "third_party/skia/include/core/SkCanvas.h" | 16 #include "third_party/skia/include/core/SkCanvas.h" |
| 17 #include "ui/android/resources/resource_manager_impl.h" | 17 #include "ui/android/resources/resource_manager_impl.h" |
| 18 #include "ui/android/resources/system_ui_resource_type.h" | 18 #include "ui/android/resources/system_ui_resource_type.h" |
| 19 #include "ui/android/window_android.h" | 19 #include "ui/android/window_android.h" |
| 20 #include "ui/gfx/android/java_bitmap.h" | 20 #include "ui/gfx/android/java_bitmap.h" |
| 21 | 21 |
| 22 | 22 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 void RequestResourceFromJava(AndroidResourceType res_type, | 64 void RequestResourceFromJava(AndroidResourceType res_type, |
| 65 int res_id) override { | 65 int res_id) override { |
| 66 SetResourceAsLoaded(res_type, res_id); | 66 SetResourceAsLoaded(res_type, res_id); |
| 67 } | 67 } |
| 68 }; | 68 }; |
| 69 | 69 |
| 70 namespace { | 70 namespace { |
| 71 | 71 |
| 72 const ui::SystemUIResourceType kTestResourceType = ui::OVERSCROLL_GLOW; | 72 const ui::SystemUIResourceType kTestResourceType = ui::OVERSCROLL_GLOW; |
| 73 | 73 |
| 74 class MockLayerTreeHost : public cc::LayerTreeHost { | 74 class MockUIResourceManager : public cc::UIResourceManager { |
| 75 public: | 75 public: |
| 76 MockLayerTreeHost(cc::LayerTreeHost::InitParams* params, | 76 MockUIResourceManager() {} |
| 77 cc::CompositorMode mode) | |
| 78 : cc::LayerTreeHost(params, mode) {} | |
| 79 | 77 |
| 80 MOCK_METHOD1(CreateUIResource, cc::UIResourceId(cc::UIResourceClient*)); | 78 MOCK_METHOD1(CreateUIResource, cc::UIResourceId(cc::UIResourceClient*)); |
| 81 MOCK_METHOD1(DeleteUIResource, void(cc::UIResourceId)); | 79 MOCK_METHOD1(DeleteUIResource, void(cc::UIResourceId)); |
| 82 | 80 |
| 83 private: | 81 private: |
| 84 DISALLOW_COPY_AND_ASSIGN(MockLayerTreeHost); | 82 DISALLOW_COPY_AND_ASSIGN(MockUIResourceManager); |
| 85 }; | 83 }; |
| 86 | 84 |
| 87 } // namespace | 85 } // namespace |
| 88 | 86 |
| 89 class ResourceManagerTest : public testing::Test { | 87 class ResourceManagerTest : public testing::Test { |
| 90 public: | 88 public: |
| 91 ResourceManagerTest() | 89 ResourceManagerTest() |
| 92 : window_android_(WindowAndroid::CreateForTesting()), | 90 : window_android_(WindowAndroid::CreateForTesting()), |
| 93 resource_manager_(window_android_) { | 91 resource_manager_(window_android_) { |
| 94 cc::LayerTreeHost::InitParams params; | 92 resource_manager_.Init(&ui_resource_manager_); |
| 95 cc::LayerTreeSettings settings; | |
| 96 params.client = &stub_client_; | |
| 97 params.settings = &settings; | |
| 98 params.task_graph_runner = &task_graph_runner_; | |
| 99 params.animation_host = | |
| 100 cc::AnimationHost::CreateForTesting(cc::ThreadInstance::MAIN); | |
| 101 host_.reset(new MockLayerTreeHost(¶ms, | |
| 102 cc::CompositorMode::SINGLE_THREADED)); | |
| 103 resource_manager_.Init(host_.get()); | |
| 104 } | 93 } |
| 105 | 94 |
| 106 ~ResourceManagerTest() override { | 95 ~ResourceManagerTest() override { |
| 107 window_android_->Destroy(nullptr, nullptr); | 96 window_android_->Destroy(nullptr, nullptr); |
| 108 } | 97 } |
| 109 | 98 |
| 110 void PreloadResource(ui::SystemUIResourceType type) { | 99 void PreloadResource(ui::SystemUIResourceType type) { |
| 111 resource_manager_.PreloadResource(ui::ANDROID_RESOURCE_TYPE_SYSTEM, type); | 100 resource_manager_.PreloadResource(ui::ANDROID_RESOURCE_TYPE_SYSTEM, type); |
| 112 } | 101 } |
| 113 | 102 |
| 114 cc::UIResourceId GetUIResourceId(ui::SystemUIResourceType type) { | 103 cc::UIResourceId GetUIResourceId(ui::SystemUIResourceType type) { |
| 115 return resource_manager_.GetUIResourceId(ui::ANDROID_RESOURCE_TYPE_SYSTEM, | 104 return resource_manager_.GetUIResourceId(ui::ANDROID_RESOURCE_TYPE_SYSTEM, |
| 116 type); | 105 type); |
| 117 } | 106 } |
| 118 | 107 |
| 119 void SetResourceAsLoaded(ui::SystemUIResourceType type) { | 108 void SetResourceAsLoaded(ui::SystemUIResourceType type) { |
| 120 resource_manager_.SetResourceAsLoaded(ui::ANDROID_RESOURCE_TYPE_SYSTEM, | 109 resource_manager_.SetResourceAsLoaded(ui::ANDROID_RESOURCE_TYPE_SYSTEM, |
| 121 type); | 110 type); |
| 122 } | 111 } |
| 123 | 112 |
| 124 private: | 113 private: |
| 125 WindowAndroid* window_android_; | 114 WindowAndroid* window_android_; |
| 126 | 115 |
| 127 protected: | 116 protected: |
| 128 std::unique_ptr<MockLayerTreeHost> host_; | 117 MockUIResourceManager ui_resource_manager_; |
| 129 TestResourceManagerImpl resource_manager_; | 118 TestResourceManagerImpl resource_manager_; |
| 130 cc::TestTaskGraphRunner task_graph_runner_; | 119 cc::TestTaskGraphRunner task_graph_runner_; |
| 131 cc::StubLayerTreeHostClient stub_client_; | 120 cc::StubLayerTreeHostClient stub_client_; |
| 132 }; | 121 }; |
| 133 | 122 |
| 134 TEST_F(ResourceManagerTest, GetResource) { | 123 TEST_F(ResourceManagerTest, GetResource) { |
| 135 const cc::UIResourceId kResourceId = 99; | 124 const cc::UIResourceId kResourceId = 99; |
| 136 EXPECT_CALL(*host_.get(), CreateUIResource(_)) | 125 EXPECT_CALL(ui_resource_manager_, CreateUIResource(_)) |
| 137 .WillOnce(Return(kResourceId)) | 126 .WillOnce(Return(kResourceId)) |
| 138 .RetiresOnSaturation(); | 127 .RetiresOnSaturation(); |
| 139 EXPECT_EQ(kResourceId, GetUIResourceId(kTestResourceType)); | 128 EXPECT_EQ(kResourceId, GetUIResourceId(kTestResourceType)); |
| 140 } | 129 } |
| 141 | 130 |
| 142 TEST_F(ResourceManagerTest, PreloadEnsureResource) { | 131 TEST_F(ResourceManagerTest, PreloadEnsureResource) { |
| 143 const cc::UIResourceId kResourceId = 99; | 132 const cc::UIResourceId kResourceId = 99; |
| 144 PreloadResource(kTestResourceType); | 133 PreloadResource(kTestResourceType); |
| 145 EXPECT_CALL(*host_.get(), CreateUIResource(_)) | 134 EXPECT_CALL(ui_resource_manager_, CreateUIResource(_)) |
| 146 .WillOnce(Return(kResourceId)) | 135 .WillOnce(Return(kResourceId)) |
| 147 .RetiresOnSaturation(); | 136 .RetiresOnSaturation(); |
| 148 SetResourceAsLoaded(kTestResourceType); | 137 SetResourceAsLoaded(kTestResourceType); |
| 149 EXPECT_EQ(kResourceId, GetUIResourceId(kTestResourceType)); | 138 EXPECT_EQ(kResourceId, GetUIResourceId(kTestResourceType)); |
| 150 } | 139 } |
| 151 | 140 |
| 152 TEST_F(ResourceManagerTest, ProcessCrushedSpriteFrameRects) { | 141 TEST_F(ResourceManagerTest, ProcessCrushedSpriteFrameRects) { |
| 153 const size_t kNumFrames = 3; | 142 const size_t kNumFrames = 3; |
| 154 | 143 |
| 155 // Create input | 144 // Create input |
| (...skipping 26 matching lines...) Expand all Loading... |
| 182 EXPECT_EQ(kNumFrames, actual_rects.size()); | 171 EXPECT_EQ(kNumFrames, actual_rects.size()); |
| 183 for (size_t i = 0; i < kNumFrames; i++) { | 172 for (size_t i = 0; i < kNumFrames; i++) { |
| 184 EXPECT_EQ(expected_rects[i].size(), actual_rects[i].size()); | 173 EXPECT_EQ(expected_rects[i].size(), actual_rects[i].size()); |
| 185 for (size_t j = 0; j < actual_rects[i].size(); j++) { | 174 for (size_t j = 0; j < actual_rects[i].size(); j++) { |
| 186 EXPECT_EQ(expected_rects[i][j], actual_rects[i][j]); | 175 EXPECT_EQ(expected_rects[i][j], actual_rects[i][j]); |
| 187 } | 176 } |
| 188 } | 177 } |
| 189 } | 178 } |
| 190 | 179 |
| 191 } // namespace ui | 180 } // namespace ui |
| OLD | NEW |