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.
4
5#ifndef CC_DEBUG_UNITTEST_ONLY_BENCHMARK_H_
6#define CC_DEBUG_UNITTEST_ONLY_BENCHMARK_H_
7
8#include "base/memory/weak_ptr.h"
9#include "cc/debug/micro_benchmark.h"
10
11namespace cc {
12
13class CC_EXPORT UnittestOnlyBenchmark : public MicroBenchmark {
14 public:
15  UnittestOnlyBenchmark(scoped_ptr<base::Value> value,
16                        const DoneCallback& callback);
17  virtual ~UnittestOnlyBenchmark();
18
19  virtual void DidUpdateLayers(LayerTreeHost* host) OVERRIDE;
20  virtual bool ProcessMessage(scoped_ptr<base::Value> value) OVERRIDE;
21
22 protected:
23  virtual scoped_ptr<MicroBenchmarkImpl> CreateBenchmarkImpl(
24      scoped_refptr<base::MessageLoopProxy> origin_loop) OVERRIDE;
25
26 private:
27  void RecordImplResults(scoped_ptr<base::Value> results);
28
29  bool create_impl_benchmark_;
30  base::WeakPtrFactory<UnittestOnlyBenchmark> weak_ptr_factory_;
31};
32
33}  // namespace cc
34
35#endif  // CC_DEBUG_UNITTEST_ONLY_BENCHMARK_H_
36