1 // Copyright (c) 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 #include "cc/debug/traced_picture.h"
7 #include "base/json/json_writer.h"
8 #include "base/strings/stringprintf.h"
9 #include "base/values.h"
10 #include "cc/debug/traced_value.h"
14 TracedPicture::TracedPicture(scoped_refptr
<const Picture
> picture
)
15 : picture_(picture
), is_alias_(false) {}
17 TracedPicture::~TracedPicture() {
20 scoped_refptr
<base::debug::ConvertableToTraceFormat
>
21 TracedPicture::AsTraceablePicture(const Picture
* picture
) {
22 return scoped_refptr
<base::debug::ConvertableToTraceFormat
>(
23 new TracedPicture(picture
));
26 scoped_refptr
<base::debug::ConvertableToTraceFormat
>
27 TracedPicture::AsTraceablePictureAlias(const Picture
* original
) {
28 scoped_refptr
<TracedPicture
> ptr
= new TracedPicture(original
);
29 ptr
->is_alias_
= true;
30 return scoped_refptr
<base::debug::ConvertableToTraceFormat
>(ptr
);
33 void TracedPicture::AppendAsTraceFormat(std::string
* out
) const {
35 AppendPictureAlias(out
);
40 void TracedPicture::AppendPictureAlias(std::string
* out
) const {
41 scoped_ptr
<base::DictionaryValue
> alias(new base::DictionaryValue());
42 alias
->SetString("id_ref", base::StringPrintf("%p", picture_
.get()));
44 scoped_ptr
<base::DictionaryValue
> res(new base::DictionaryValue());
45 res
->Set("alias", alias
.release());
48 base::JSONWriter::Write(res
.get(), &tmp
);
52 void TracedPicture::AppendPicture(std::string
* out
) const {
53 scoped_ptr
<base::Value
> value
= picture_
->AsValue();
55 base::JSONWriter::Write(value
.get(), &tmp
);