// 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_DEBUG_MICRO_BENCHMARK_H_
#define CC_DEBUG_MICRO_BENCHMARK_H_

#include "base/callback.h"
#include "base/memory/scoped_ptr.h"
#include "cc/base/cc_export.h"

namespace base {
class SingleThreadTaskRunner;
class Value;
}  // namespace base

namespace cc {

class LayerTreeHost;
class Layer;
class PictureLayer;
class MicroBenchmarkImpl;
class CC_EXPORT MicroBenchmark {
 public:
  typedef base::Callback<void(scoped_ptr<base::Value>)> DoneCallback;

  explicit MicroBenchmark(const DoneCallback& callback);
  virtual ~MicroBenchmark();

  bool IsDone() const;
  virtual void DidUpdateLayers(LayerTreeHost* 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(scoped_ptr<base::Value> value);

  bool ProcessedForBenchmarkImpl() const;
  scoped_ptr<MicroBenchmarkImpl> GetBenchmarkImpl(
      scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner);

 protected:
  void NotifyDone(scoped_ptr<base::Value> result);

  virtual scoped_ptr<MicroBenchmarkImpl> CreateBenchmarkImpl(
      scoped_refptr<base::SingleThreadTaskRunner> origin_task_runner);

 private:
  DoneCallback callback_;
  bool is_done_;
  bool processed_for_benchmark_impl_;
  int id_;
};

}  // namespace cc

#endif  // CC_DEBUG_MICRO_BENCHMARK_H_
