15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "cc/debug/traced_value.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/debug/trace_event_argument.h" 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/strings/stringprintf.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace cc { 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TracedValue::AppendIDRef(const void* id, base::debug::TracedValue* state) { 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) state->BeginDictionary(); 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu state->SetString("id_ref", base::StringPrintf("%p", id)); 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) state->EndDictionary(); 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void TracedValue::SetIDRef(const void* id, 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::debug::TracedValue* state, 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* name) { 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) state->BeginDictionary(name); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) state->SetString("id_ref", base::StringPrintf("%p", id)); 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) state->EndDictionary(); 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TracedValue::MakeDictIntoImplicitSnapshot(base::debug::TracedValue* dict, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* object_name, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const void* id) { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dict->SetString("id", base::StringPrintf("%s/%p", object_name, id)); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TracedValue::MakeDictIntoImplicitSnapshotWithCategory( 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* category, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::debug::TracedValue* dict, 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* object_name, 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const void* id) { 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu dict->SetString("cat", category); 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu MakeDictIntoImplicitSnapshot(dict, object_name, id); 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TracedValue::MakeDictIntoImplicitSnapshotWithCategory( 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* category, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::debug::TracedValue* dict, 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const char* object_base_type_name, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* object_name, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const void* id) { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dict->SetString("cat", category); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) dict->SetString("base_type", object_base_type_name); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MakeDictIntoImplicitSnapshot(dict, object_name, id); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace cc 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)