| Index: cc/output/begin_frame_args.cc
|
| diff --git a/cc/output/begin_frame_args.cc b/cc/output/begin_frame_args.cc
|
| index 92901afb1f3d897b37ca374297a8e5bc25463cbc..f74c061fda0500c6a1ae6d911b0bf5d63f12599a 100644
|
| --- a/cc/output/begin_frame_args.cc
|
| +++ b/cc/output/begin_frame_args.cc
|
| @@ -2,6 +2,9 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include <string>
|
| +
|
| +#include "base/json/json_writer.h"
|
| #include "cc/output/begin_frame_args.h"
|
| #include "ui/gfx/frame_time.h"
|
|
|
| @@ -27,6 +30,58 @@ BeginFrameArgs BeginFrameArgs::Create(base::TimeTicks frame_time,
|
| return BeginFrameArgs(frame_time, deadline, interval);
|
| }
|
|
|
| +scoped_ptr<base::Value> BeginFrameArgs::AsValue() const {
|
| + scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue);
|
| + state->SetString("type", "BeginFrameArgs");
|
| + state->SetDouble("frame_time_us", frame_time.ToInternalValue());
|
| + state->SetDouble("deadline_us", deadline.ToInternalValue());
|
| + state->SetDouble("interval_us", interval.InMicroseconds());
|
| + return state.PassAs<base::Value>();
|
| +}
|
| +
|
| +namespace {
|
| +
|
| +// TODO(mithro): This class should be part of base/debug/trace code.
|
| +class TracedValue : public base::debug::ConvertableToTraceFormat {
|
| + public:
|
| + static scoped_refptr<base::debug::ConvertableToTraceFormat> FromValue(
|
| + scoped_ptr<base::Value> value);
|
| +
|
| + virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE;
|
| +
|
| + private:
|
| + explicit TracedValue(base::Value* value);
|
| + virtual ~TracedValue();
|
| +
|
| + scoped_ptr<base::Value> value_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TracedValue);
|
| +};
|
| +
|
| +scoped_refptr<base::debug::ConvertableToTraceFormat> TracedValue::FromValue(
|
| + scoped_ptr<base::Value> value) {
|
| + return scoped_refptr<base::debug::ConvertableToTraceFormat>(
|
| + new TracedValue(value.release()));
|
| +}
|
| +
|
| +TracedValue::~TracedValue() {
|
| +}
|
| +
|
| +void TracedValue::AppendAsTraceFormat(std::string* out) const {
|
| + std::string tmp;
|
| + base::JSONWriter::Write(value_.get(), &tmp);
|
| + *out += tmp;
|
| +}
|
| +
|
| +TracedValue::TracedValue(base::Value* value) : value_(value) {
|
| +}
|
| +} // namespace
|
| +
|
| +scoped_refptr<base::debug::ConvertableToTraceFormat> BeginFrameArgs::AsTrace()
|
| + const {
|
| + return TracedValue::FromValue(AsValue());
|
| +}
|
| +
|
| BeginFrameArgs BeginFrameArgs::CreateForSynchronousCompositor() {
|
| // For WebView/SynchronousCompositor, we always want to draw immediately,
|
| // so we set the deadline to 0 and guess that the interval is 16 milliseconds.
|
|
|