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_TRACED_VALUE_H_
6#define CC_DEBUG_TRACED_VALUE_H_
7
8#include <string>
9
10#include "base/debug/trace_event.h"
11#include "base/memory/scoped_ptr.h"
12
13namespace base {
14class DictionaryValue;
15class Value;
16}
17namespace cc {
18
19class TracedValue : public base::debug::ConvertableToTraceFormat {
20 public:
21  static scoped_ptr<base::Value> CreateIDRef(const void* id);
22  static void MakeDictIntoImplicitSnapshot(
23      base::DictionaryValue* dict, const char* object_name, const void* id);
24  static void MakeDictIntoImplicitSnapshotWithCategory(
25      const char* category,
26      base::DictionaryValue* dict,
27      const char* object_name,
28      const void* id);
29  static scoped_ptr<ConvertableToTraceFormat> FromValue(
30      base::Value* value);
31
32  virtual ~TracedValue();
33
34  virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE;
35
36 private:
37  explicit TracedValue(base::Value* value);
38
39  scoped_ptr<base::Value> value_;
40
41  DISALLOW_COPY_AND_ASSIGN(TracedValue);
42};
43
44}  // namespace cc
45
46#endif  // CC_DEBUG_TRACED_VALUE_H_
47