micro_benchmark_controller.h revision f2477e01787aa58f445919b809d89e252beef54f
14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef CC_DEBUG_MICRO_BENCHMARK_CONTROLLER_H_ 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define CC_DEBUG_MICRO_BENCHMARK_CONTROLLER_H_ 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <string> 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/basictypes.h" 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/callback.h" 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "cc/base/scoped_ptr_vector.h" 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "cc/debug/micro_benchmark.h" 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace base { 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class Value; 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class MessageLoopProxy; 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace base 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)namespace cc { 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class LayerTreeHost; 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class LayerTreeHostImpl; 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class CC_EXPORT MicroBenchmarkController { 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) explicit MicroBenchmarkController(LayerTreeHost* host); 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ~MicroBenchmarkController(); 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void DidUpdateLayers(); 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool ScheduleRun(const std::string& micro_benchmark_name, 328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) scoped_ptr<base::Value> value, 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const MicroBenchmark::DoneCallback& callback); 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void ScheduleImplBenchmarks(LayerTreeHostImpl* host_impl); 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private: 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void CleanUpFinishedBenchmarks(); 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) LayerTreeHost* host_; 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ScopedPtrVector<MicroBenchmark> benchmarks_; 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_refptr<base::MessageLoopProxy> main_controller_message_loop_; 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MicroBenchmarkController); 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 474e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace cc 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // CC_DEBUG_MICRO_BENCHMARK_CONTROLLER_H_ 50