| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 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 "base/callback.h" | 5 #include "base/callback.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "cc/debug/micro_benchmark.h" | 7 #include "cc/debug/micro_benchmark.h" |
| 8 #include "cc/debug/micro_benchmark_controller.h" | 8 #include "cc/debug/micro_benchmark_controller.h" |
| 9 #include "cc/layers/layer.h" | 9 #include "cc/layers/layer.h" |
| 10 #include "cc/resources/resource_update_queue.h" | 10 #include "cc/resources/resource_update_queue.h" |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 26 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
| 27 layer_tree_host_impl_ = make_scoped_ptr(new FakeLayerTreeHostImpl( | 27 layer_tree_host_impl_ = make_scoped_ptr(new FakeLayerTreeHostImpl( |
| 28 impl_proxy_.get(), shared_bitmap_manager_.get())); | 28 impl_proxy_.get(), shared_bitmap_manager_.get())); |
| 29 | 29 |
| 30 layer_tree_host_ = FakeLayerTreeHost::Create(&layer_tree_host_client_); | 30 layer_tree_host_ = FakeLayerTreeHost::Create(&layer_tree_host_client_); |
| 31 layer_tree_host_->SetRootLayer(Layer::Create()); | 31 layer_tree_host_->SetRootLayer(Layer::Create()); |
| 32 layer_tree_host_->InitializeForTesting(scoped_ptr<Proxy>(new FakeProxy)); | 32 layer_tree_host_->InitializeForTesting(scoped_ptr<Proxy>(new FakeProxy)); |
| 33 } | 33 } |
| 34 | 34 |
| 35 virtual void TearDown() OVERRIDE { | 35 virtual void TearDown() OVERRIDE { |
| 36 layer_tree_host_impl_.reset(); | 36 layer_tree_host_impl_ = nullptr; |
| 37 layer_tree_host_.reset(); | 37 layer_tree_host_ = nullptr; |
| 38 impl_proxy_.reset(); | 38 impl_proxy_ = nullptr; |
| 39 } | 39 } |
| 40 | 40 |
| 41 FakeLayerTreeHostClient layer_tree_host_client_; | 41 FakeLayerTreeHostClient layer_tree_host_client_; |
| 42 scoped_ptr<FakeLayerTreeHost> layer_tree_host_; | 42 scoped_ptr<FakeLayerTreeHost> layer_tree_host_; |
| 43 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; | 43 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
| 44 scoped_ptr<FakeLayerTreeHostImpl> layer_tree_host_impl_; | 44 scoped_ptr<FakeLayerTreeHostImpl> layer_tree_host_impl_; |
| 45 scoped_ptr<FakeImplProxy> impl_proxy_; | 45 scoped_ptr<FakeImplProxy> impl_proxy_; |
| 46 }; | 46 }; |
| 47 | 47 |
| 48 void Noop(scoped_ptr<base::Value> value) { | 48 void Noop(scoped_ptr<base::Value> value) { |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 } | 119 } |
| 120 | 120 |
| 121 TEST_F(MicroBenchmarkControllerTest, BenchmarkImplRan) { | 121 TEST_F(MicroBenchmarkControllerTest, BenchmarkImplRan) { |
| 122 int run_count = 0; | 122 int run_count = 0; |
| 123 scoped_ptr<base::DictionaryValue> settings(new base::DictionaryValue); | 123 scoped_ptr<base::DictionaryValue> settings(new base::DictionaryValue); |
| 124 settings->SetBoolean("run_benchmark_impl", true); | 124 settings->SetBoolean("run_benchmark_impl", true); |
| 125 | 125 |
| 126 // Schedule a main thread benchmark. | 126 // Schedule a main thread benchmark. |
| 127 int id = layer_tree_host_->ScheduleMicroBenchmark( | 127 int id = layer_tree_host_->ScheduleMicroBenchmark( |
| 128 "unittest_only_benchmark", | 128 "unittest_only_benchmark", |
| 129 settings.PassAs<base::Value>(), | 129 settings.Pass(), |
| 130 base::Bind(&IncrementCallCount, base::Unretained(&run_count))); | 130 base::Bind(&IncrementCallCount, base::Unretained(&run_count))); |
| 131 EXPECT_GT(id, 0); | 131 EXPECT_GT(id, 0); |
| 132 | 132 |
| 133 // Schedule impl benchmarks. In production code, this is run in commit. | 133 // Schedule impl benchmarks. In production code, this is run in commit. |
| 134 layer_tree_host_->GetMicroBenchmarkController()->ScheduleImplBenchmarks( | 134 layer_tree_host_->GetMicroBenchmarkController()->ScheduleImplBenchmarks( |
| 135 layer_tree_host_impl_.get()); | 135 layer_tree_host_impl_.get()); |
| 136 | 136 |
| 137 // Now complete the commit (as if on the impl thread). | 137 // Now complete the commit (as if on the impl thread). |
| 138 layer_tree_host_impl_->CommitComplete(); | 138 layer_tree_host_impl_->CommitComplete(); |
| 139 | 139 |
| 140 // Make sure all posted messages run. | 140 // Make sure all posted messages run. |
| 141 base::MessageLoop::current()->RunUntilIdle(); | 141 base::MessageLoop::current()->RunUntilIdle(); |
| 142 | 142 |
| 143 EXPECT_EQ(1, run_count); | 143 EXPECT_EQ(1, run_count); |
| 144 } | 144 } |
| 145 | 145 |
| 146 TEST_F(MicroBenchmarkControllerTest, SendMessage) { | 146 TEST_F(MicroBenchmarkControllerTest, SendMessage) { |
| 147 // Send valid message to invalid benchmark (id = 0) | 147 // Send valid message to invalid benchmark (id = 0) |
| 148 scoped_ptr<base::DictionaryValue> message(new base::DictionaryValue); | 148 scoped_ptr<base::DictionaryValue> message(new base::DictionaryValue); |
| 149 message->SetBoolean("can_handle", true); | 149 message->SetBoolean("can_handle", true); |
| 150 bool message_handled = layer_tree_host_->SendMessageToMicroBenchmark( | 150 bool message_handled = |
| 151 0, message.PassAs<base::Value>()); | 151 layer_tree_host_->SendMessageToMicroBenchmark(0, message.Pass()); |
| 152 EXPECT_FALSE(message_handled); | 152 EXPECT_FALSE(message_handled); |
| 153 | 153 |
| 154 // Schedule a benchmark | 154 // Schedule a benchmark |
| 155 int run_count = 0; | 155 int run_count = 0; |
| 156 int id = layer_tree_host_->ScheduleMicroBenchmark( | 156 int id = layer_tree_host_->ScheduleMicroBenchmark( |
| 157 "unittest_only_benchmark", | 157 "unittest_only_benchmark", |
| 158 scoped_ptr<base::Value>(), | 158 scoped_ptr<base::Value>(), |
| 159 base::Bind(&IncrementCallCount, base::Unretained(&run_count))); | 159 base::Bind(&IncrementCallCount, base::Unretained(&run_count))); |
| 160 EXPECT_GT(id, 0); | 160 EXPECT_GT(id, 0); |
| 161 | 161 |
| 162 // Send valid message to valid benchmark | 162 // Send valid message to valid benchmark |
| 163 message = scoped_ptr<base::DictionaryValue>(new base::DictionaryValue); | 163 message = make_scoped_ptr(new base::DictionaryValue); |
| 164 message->SetBoolean("can_handle", true); | 164 message->SetBoolean("can_handle", true); |
| 165 message_handled = layer_tree_host_->SendMessageToMicroBenchmark( | 165 message_handled = |
| 166 id, message.PassAs<base::Value>()); | 166 layer_tree_host_->SendMessageToMicroBenchmark(id, message.Pass()); |
| 167 EXPECT_TRUE(message_handled); | 167 EXPECT_TRUE(message_handled); |
| 168 | 168 |
| 169 // Send invalid message to valid benchmark | 169 // Send invalid message to valid benchmark |
| 170 message = scoped_ptr<base::DictionaryValue>(new base::DictionaryValue); | 170 message = make_scoped_ptr(new base::DictionaryValue); |
| 171 message->SetBoolean("can_handle", false); | 171 message->SetBoolean("can_handle", false); |
| 172 message_handled = layer_tree_host_->SendMessageToMicroBenchmark( | 172 message_handled = |
| 173 id, message.PassAs<base::Value>()); | 173 layer_tree_host_->SendMessageToMicroBenchmark(id, message.Pass()); |
| 174 EXPECT_FALSE(message_handled); | 174 EXPECT_FALSE(message_handled); |
| 175 } | 175 } |
| 176 | 176 |
| 177 } // namespace | 177 } // namespace |
| 178 } // namespace cc | 178 } // namespace cc |
| OLD | NEW |