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