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.
5 #include "cc/debug/micro_benchmark_controller_impl.h"
9 #include "base/callback.h"
10 #include "base/values.h"
11 #include "cc/trees/layer_tree_host_impl.h"
17 class IsDonePredicate
{
19 typedef const MicroBenchmarkImpl
* argument_type
;
20 typedef bool result_type
;
22 result_type
operator()(argument_type benchmark
) const {
23 return benchmark
->IsDone();
29 MicroBenchmarkControllerImpl::MicroBenchmarkControllerImpl(
30 LayerTreeHostImpl
* host
)
35 MicroBenchmarkControllerImpl::~MicroBenchmarkControllerImpl() {}
37 void MicroBenchmarkControllerImpl::ScheduleRun(
38 scoped_ptr
<MicroBenchmarkImpl
> benchmark
) {
39 benchmarks_
.push_back(benchmark
.Pass());
42 void MicroBenchmarkControllerImpl::DidCompleteCommit() {
43 for (ScopedPtrVector
<MicroBenchmarkImpl
>::iterator it
= benchmarks_
.begin();
44 it
!= benchmarks_
.end();
46 DCHECK(!(*it
)->IsDone());
47 (*it
)->DidCompleteCommit(host_
);
50 CleanUpFinishedBenchmarks();
53 void MicroBenchmarkControllerImpl::CleanUpFinishedBenchmarks() {
55 benchmarks_
.partition(std::not1(IsDonePredicate())),