1 // Copyright 2013 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CC_BENCHMARKS_MICRO_BENCHMARK_H_
6 #define CC_BENCHMARKS_MICRO_BENCHMARK_H_
10 #include "base/functional/callback.h"
11 #include "base/values.h"
12 #include "cc/cc_export.h"
15 class SingleThreadTaskRunner;
21 class MicroBenchmarkImpl;
23 class CC_EXPORT MicroBenchmark {
25 using DoneCallback = base::OnceCallback<void(base::Value::Dict)>;
27 explicit MicroBenchmark(DoneCallback callback);
28 virtual ~MicroBenchmark();
31 virtual void DidUpdateLayers(LayerTreeHost* layer_tree_host);
32 int id() const { return id_; }
33 void set_id(int id) { id_ = id; }
35 virtual void RunOnLayer(PictureLayer* layer);
37 virtual bool ProcessMessage(base::Value::Dict message);
39 bool ProcessedForBenchmarkImpl() const;
40 std::unique_ptr<MicroBenchmarkImpl> GetBenchmarkImpl(
41 scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner);
44 void NotifyDone(base::Value::Dict result);
46 virtual std::unique_ptr<MicroBenchmarkImpl> CreateBenchmarkImpl(
47 scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner);
50 DoneCallback callback_;
51 bool is_done_ = false;
52 bool processed_for_benchmark_impl_ = false;
58 #endif // CC_BENCHMARKS_MICRO_BENCHMARK_H_