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
);
32 int id() const { return id_
; }
33 void set_id(int id
) { id_
= id
; }
35 virtual void RunOnLayer(Layer
* layer
);
36 virtual void RunOnLayer(PictureLayer
* layer
);
38 virtual bool ProcessMessage(scoped_ptr
<base::Value
> value
);
40 bool ProcessedForBenchmarkImpl() const;
41 scoped_ptr
<MicroBenchmarkImpl
> GetBenchmarkImpl(
42 scoped_refptr
<base::MessageLoopProxy
> origin_loop
);
45 void NotifyDone(scoped_ptr
<base::Value
> result
);
47 virtual scoped_ptr
<MicroBenchmarkImpl
> CreateBenchmarkImpl(
48 scoped_refptr
<base::MessageLoopProxy
> origin_loop
);
51 DoneCallback callback_
;
53 bool processed_for_benchmark_impl_
;
59 #endif // CC_DEBUG_MICRO_BENCHMARK_H_