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 #ifndef CC_DEBUG_MICRO_BENCHMARK_H_
6 #define CC_DEBUG_MICRO_BENCHMARK_H_
8 #include "base/callback.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "cc/base/cc_export.h"
14 class MessageLoopProxy
;
22 class MicroBenchmarkImpl
;
23 class CC_EXPORT MicroBenchmark
{
25 typedef base::Callback
<void(scoped_ptr
<base::Value
>)> DoneCallback
;
27 explicit MicroBenchmark(const DoneCallback
& callback
);
28 virtual ~MicroBenchmark();
31 virtual void DidUpdateLayers(LayerTreeHost
* host
);
33 virtual void RunOnLayer(Layer
* layer
);
34 virtual void RunOnLayer(PictureLayer
* layer
);
36 bool ProcessedForBenchmarkImpl() const;
37 scoped_ptr
<MicroBenchmarkImpl
> GetBenchmarkImpl(
38 scoped_refptr
<base::MessageLoopProxy
> origin_loop
);
41 void NotifyDone(scoped_ptr
<base::Value
> result
);
43 virtual scoped_ptr
<MicroBenchmarkImpl
> CreateBenchmarkImpl(
44 scoped_refptr
<base::MessageLoopProxy
> origin_loop
);
47 DoneCallback callback_
;
49 bool processed_for_benchmark_impl_
;
54 #endif // CC_DEBUG_MICRO_BENCHMARK_H_