// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CC_BENCHMARKS_MICRO_BENCHMARK_H_ #define CC_BENCHMARKS_MICRO_BENCHMARK_H_ #include #include "base/callback.h" #include "cc/cc_export.h" namespace base { class SingleThreadTaskRunner; class Value; } // namespace base namespace cc { class Layer; class LayerTreeHost; class PictureLayer; class MicroBenchmarkImpl; class CC_EXPORT MicroBenchmark { public: typedef base::Callback)> DoneCallback; explicit MicroBenchmark(const DoneCallback& callback); virtual ~MicroBenchmark(); bool IsDone() const; virtual void DidUpdateLayers(LayerTreeHost* layer_tree_host); int id() const { return id_; } void set_id(int id) { id_ = id; } virtual void RunOnLayer(Layer* layer); virtual void RunOnLayer(PictureLayer* layer); virtual bool ProcessMessage(std::unique_ptr value); bool ProcessedForBenchmarkImpl() const; std::unique_ptr GetBenchmarkImpl( scoped_refptr origin_task_runner); protected: void NotifyDone(std::unique_ptr result); virtual std::unique_ptr CreateBenchmarkImpl( scoped_refptr origin_task_runner); private: DoneCallback callback_; bool is_done_; bool processed_for_benchmark_impl_; int id_; }; } // namespace cc #endif // CC_BENCHMARKS_MICRO_BENCHMARK_H_