| Index: cc/trees/layer_tree_host_impl.cc
|
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc
|
| index fdf8e5cfb37dd2adf27f1381ac141c953138853d..e155be69517bd86761125deddecbded319767b07 100644
|
| --- a/cc/trees/layer_tree_host_impl.cc
|
| +++ b/cc/trees/layer_tree_host_impl.cc
|
| @@ -9,6 +9,7 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/containers/hash_tables.h"
|
| +#include "base/debug/trace_event_argument.h"
|
| #include "base/json/json_writer.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/stl_util.h"
|
| @@ -528,8 +529,8 @@ void LayerTreeHostImpl::TrackDamageForAllSurfaces(
|
| }
|
| }
|
|
|
| -scoped_ptr<base::Value> LayerTreeHostImpl::FrameData::AsValue() const {
|
| - scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue());
|
| +void LayerTreeHostImpl::FrameData::AsValueInto(
|
| + base::debug::TracedValue* value) const {
|
| value->SetBoolean("contains_incomplete_tile", contains_incomplete_tile);
|
| value->SetBoolean("has_no_damage", has_no_damage);
|
|
|
| @@ -539,12 +540,14 @@ scoped_ptr<base::Value> LayerTreeHostImpl::FrameData::AsValue() const {
|
| TRACE_EVENT_CATEGORY_GROUP_ENABLED(
|
| TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), &quads_enabled);
|
| if (quads_enabled) {
|
| - scoped_ptr<base::ListValue> render_pass_list(new base::ListValue());
|
| - for (size_t i = 0; i < render_passes.size(); ++i)
|
| - render_pass_list->Append(render_passes[i]->AsValue().release());
|
| - value->Set("render_passes", render_pass_list.release());
|
| + value->BeginArray("render_passes");
|
| + for (size_t i = 0; i < render_passes.size(); ++i) {
|
| + value->BeginDictionary();
|
| + render_passes[i]->AsValueInto(value);
|
| + value->EndDictionary();
|
| + }
|
| + value->EndArray();
|
| }
|
| - return value.PassAs<base::Value>();
|
| }
|
|
|
| void LayerTreeHostImpl::FrameData::AppendRenderPass(
|
| @@ -1543,7 +1546,7 @@ void LayerTreeHostImpl::DrawLayers(FrameData* frame,
|
| TRACE_DISABLED_BY_DEFAULT("devtools.timeline.layers"),
|
| "cc::LayerTreeHostImpl",
|
| id_,
|
| - TracedValue::FromValue(AsValueWithFrame(frame).release()));
|
| + AsValueWithFrame(frame));
|
| }
|
|
|
| const DrawMode draw_mode = GetDrawMode();
|
| @@ -3169,29 +3172,66 @@ base::TimeTicks LayerTreeHostImpl::CurrentFrameTimeTicks() {
|
| return gfx::FrameTime::Now();
|
| }
|
|
|
| -scoped_ptr<base::Value> LayerTreeHostImpl::AsValueWithFrame(
|
| - FrameData* frame) const {
|
| - scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
|
| - if (this->pending_tree_)
|
| - state->Set("activation_state", ActivationStateAsValue().release());
|
| - state->Set("device_viewport_size",
|
| - MathUtil::AsValue(device_viewport_size_).release());
|
| - if (tile_manager_)
|
| - state->Set("tiles", tile_manager_->AllTilesAsValue().release());
|
| - state->Set("active_tree", active_tree_->AsValue().release());
|
| - if (pending_tree_)
|
| - state->Set("pending_tree", pending_tree_->AsValue().release());
|
| - if (frame)
|
| - state->Set("frame", frame->AsValue().release());
|
| - return state.PassAs<base::Value>();
|
| -}
|
| -
|
| -scoped_ptr<base::Value> LayerTreeHostImpl::ActivationStateAsValue() const {
|
| - scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
|
| - state->Set("lthi", TracedValue::CreateIDRef(this).release());
|
| - if (tile_manager_)
|
| - state->Set("tile_manager", tile_manager_->BasicStateAsValue().release());
|
| - return state.PassAs<base::Value>();
|
| +scoped_refptr<base::debug::ConvertableToTraceFormat>
|
| +LayerTreeHostImpl::AsValue() const {
|
| + return AsValueWithFrame(NULL);
|
| +}
|
| +
|
| +scoped_refptr<base::debug::ConvertableToTraceFormat>
|
| +LayerTreeHostImpl::AsValueWithFrame(FrameData* frame) const {
|
| + scoped_refptr<base::debug::TracedValue> state =
|
| + new base::debug::TracedValue();
|
| + AsValueWithFrameInto(frame, state.get());
|
| + return state;
|
| +}
|
| +
|
| +void LayerTreeHostImpl::AsValueWithFrameInto(
|
| + FrameData* frame,
|
| + base::debug::TracedValue* state) const {
|
| + if (this->pending_tree_) {
|
| + state->BeginDictionary("activation_state");
|
| + ActivationStateAsValueInto(state);
|
| + state->EndDictionary();
|
| + }
|
| + state->BeginDictionary("device_viewport_size");
|
| + MathUtil::AddToTracedValue(device_viewport_size_, state);
|
| + state->EndDictionary();
|
| + if (tile_manager_) {
|
| + state->BeginArray("tiles");
|
| + tile_manager_->AllTilesAsValueInto(state);
|
| + state->EndArray();
|
| + }
|
| + state->BeginDictionary("active_tree");
|
| + active_tree_->AsValueInto(state);
|
| + state->EndDictionary();
|
| + if (pending_tree_) {
|
| + state->BeginDictionary("pending_tree");
|
| + pending_tree_->AsValueInto(state);
|
| + state->EndDictionary();
|
| + }
|
| + if (frame) {
|
| + state->BeginDictionary("frame");
|
| + frame->AsValueInto(state);
|
| + state->EndDictionary();
|
| + }
|
| +}
|
| +
|
| +scoped_refptr<base::debug::ConvertableToTraceFormat>
|
| +LayerTreeHostImpl::ActivationStateAsValue() const {
|
| + scoped_refptr<base::debug::TracedValue> state =
|
| + new base::debug::TracedValue();
|
| + ActivationStateAsValueInto(state.get());
|
| + return state;
|
| +}
|
| +
|
| +void LayerTreeHostImpl::ActivationStateAsValueInto(
|
| + base::debug::TracedValue* state) const {
|
| + TracedValue::SetIDRef(this, state, "lthi");
|
| + if (tile_manager_) {
|
| + state->BeginDictionary("tile_manager");
|
| + tile_manager_->BasicStateAsValueInto(state);
|
| + state->EndDictionary();
|
| + }
|
| }
|
|
|
| void LayerTreeHostImpl::SetDebugState(
|
|
|