diff options
Diffstat (limited to 'base')
-rw-r--r-- | base/debug/trace_event.h | 3 | ||||
-rw-r--r-- | base/debug/trace_event_impl.cc | 2 | ||||
-rw-r--r-- | base/debug/trace_event_unittest.cc | 22 |
3 files changed, 24 insertions, 3 deletions
diff --git a/base/debug/trace_event.h b/base/debug/trace_event.h index cdfe9e3..628383f 100644 --- a/base/debug/trace_event.h +++ b/base/debug/trace_event.h @@ -1060,6 +1060,7 @@ static inline void AddTraceEventWithThreadIdAndTimestamp( const char* arg2_name, scoped_ptr<base::debug::ConvertableToTraceFormat> arg2_val) { const int num_args = 2; + const char* arg_names[2] = { arg1_name, arg2_name }; unsigned char arg_types[2] = { TRACE_VALUE_TYPE_CONVERTABLE, TRACE_VALUE_TYPE_CONVERTABLE }; scoped_ptr<base::debug::ConvertableToTraceFormat> convertable_values[2]; @@ -1068,7 +1069,7 @@ static inline void AddTraceEventWithThreadIdAndTimestamp( TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( phase, category_group_enabled, name, id, thread_id, timestamp, - num_args, &arg1_name, arg_types, NULL, convertable_values, flags); + num_args, arg_names, arg_types, NULL, convertable_values, flags); } static inline void AddTraceEvent( diff --git a/base/debug/trace_event_impl.cc b/base/debug/trace_event_impl.cc index 96ef2c7..9e441ca 100644 --- a/base/debug/trace_event_impl.cc +++ b/base/debug/trace_event_impl.cc @@ -335,8 +335,6 @@ TraceEvent::TraceEvent( if (copy) { CopyTraceEventParameter(&ptr, &name_, end); for (i = 0; i < num_args; ++i) { - if (arg_types_[i] == TRACE_VALUE_TYPE_CONVERTABLE) - continue; CopyTraceEventParameter(&ptr, &arg_names_[i], end); } } diff --git a/base/debug/trace_event_unittest.cc b/base/debug/trace_event_unittest.cc index 82c8dc0..297a345 100644 --- a/base/debug/trace_event_unittest.cc +++ b/base/debug/trace_event_unittest.cc @@ -1636,8 +1636,14 @@ TEST_F(TraceEventTestFixture, ConvertableTypes) { TraceLog::RECORD_UNTIL_FULL); scoped_ptr<MyData> data(new MyData()); + scoped_ptr<MyData> data1(new MyData()); + scoped_ptr<MyData> data2(new MyData()); TRACE_EVENT1("foo", "bar", "data", data.PassAs<base::debug::ConvertableToTraceFormat>()); + TRACE_EVENT2("foo", "baz", + "data1", data1.PassAs<base::debug::ConvertableToTraceFormat>(), + "data2", data2.PassAs<base::debug::ConvertableToTraceFormat>()); + EndTraceAndFlush(); DictionaryValue* dict = FindNamePhase("bar", "B"); @@ -1655,6 +1661,22 @@ TEST_F(TraceEventTestFixture, ConvertableTypes) { int foo_val; EXPECT_TRUE(convertable_dict->GetInteger("foo", &foo_val)); EXPECT_EQ(1, foo_val); + + dict = FindNamePhase("baz", "B"); + ASSERT_TRUE(dict); + args_dict = NULL; + dict->GetDictionary("args", &args_dict); + ASSERT_TRUE(args_dict); + + value = NULL; + convertable_dict = NULL; + EXPECT_TRUE(args_dict->Get("data1", &value)); + ASSERT_TRUE(value->GetAsDictionary(&convertable_dict)); + + value = NULL; + convertable_dict = NULL; + EXPECT_TRUE(args_dict->Get("data2", &value)); + ASSERT_TRUE(value->GetAsDictionary(&convertable_dict)); } |