summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-26 02:48:25 +0000
committernduca@chromium.org <nduca@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-26 02:48:25 +0000
commitb4dc36479c72f274edccfb813ecad046d8ebe9ad (patch)
tree07770cce8f52effe2deea3f2a9d85ad299811a71
parent966584c7ff64da8a4b069b7e2abb4e461ff6cd5a (diff)
downloadchromium_src-b4dc36479c72f274edccfb813ecad046d8ebe9ad.zip
chromium_src-b4dc36479c72f274edccfb813ecad046d8ebe9ad.tar.gz
chromium_src-b4dc36479c72f274edccfb813ecad046d8ebe9ad.tar.bz2
Fix frame viewer: LayerTypeAsString() can't be called from ~LayerImpl
For details on the fix see: https://code.google.com/p/trace-viewer/source/detail?r=1165 R=enne@chromium.org Review URL: https://codereview.chromium.org/179063003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@253336 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--cc/debug/traced_value.cc11
-rw-r--r--cc/debug/traced_value.h6
-rw-r--r--cc/layers/layer_impl.cc8
3 files changed, 22 insertions, 3 deletions
diff --git a/cc/debug/traced_value.cc b/cc/debug/traced_value.cc
index 5a32414..3b506ae 100644
--- a/cc/debug/traced_value.cc
+++ b/cc/debug/traced_value.cc
@@ -30,6 +30,17 @@ void TracedValue::MakeDictIntoImplicitSnapshotWithCategory(
MakeDictIntoImplicitSnapshot(dict, object_name, id);
}
+void TracedValue::MakeDictIntoImplicitSnapshotWithCategory(
+ const char* category,
+ base::DictionaryValue* dict,
+ const char* object_base_type_name,
+ const char* object_name,
+ const void* id) {
+ dict->SetString("cat", category);
+ dict->SetString("base_type", object_base_type_name);
+ MakeDictIntoImplicitSnapshot(dict, object_name, id);
+}
+
scoped_refptr<base::debug::ConvertableToTraceFormat> TracedValue::FromValue(
base::Value* value) {
return scoped_refptr<base::debug::ConvertableToTraceFormat>(
diff --git a/cc/debug/traced_value.h b/cc/debug/traced_value.h
index fe17695..e96c09a 100644
--- a/cc/debug/traced_value.h
+++ b/cc/debug/traced_value.h
@@ -26,6 +26,12 @@ class TracedValue : public base::debug::ConvertableToTraceFormat {
base::DictionaryValue* dict,
const char* object_name,
const void* id);
+ static void MakeDictIntoImplicitSnapshotWithCategory(
+ const char* category,
+ base::DictionaryValue* dict,
+ const char* object_base_type_name,
+ const char* object_name,
+ const void* id);
static scoped_refptr<base::debug::ConvertableToTraceFormat> FromValue(
base::Value* value);
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index 161efa1..731aaab 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -111,8 +111,7 @@ LayerImpl::~LayerImpl() {
clip_parent_->RemoveClipChild(this);
TRACE_EVENT_OBJECT_DELETED_WITH_ID(
- TRACE_DISABLED_BY_DEFAULT("cc.debug"),
- LayerTypeAsString(), this);
+ TRACE_DISABLED_BY_DEFAULT("cc.debug"), "cc::LayerImpl", this);
}
void LayerImpl::AddChild(scoped_ptr<LayerImpl> child) {
@@ -1400,7 +1399,10 @@ void LayerImpl::RemoveDependentNeedsPushProperties() {
void LayerImpl::AsValueInto(base::DictionaryValue* state) const {
TracedValue::MakeDictIntoImplicitSnapshotWithCategory(
TRACE_DISABLED_BY_DEFAULT("cc.debug"),
- state, LayerTypeAsString(), this);
+ state,
+ "cc::LayerImpl",
+ LayerTypeAsString(),
+ this);
state->SetInteger("layer_id", id());
state->Set("bounds", MathUtil::AsValue(bounds()).release());
state->SetInteger("draws_content", DrawsContent());