| Index: base/trace_event/trace_event.h | 
| diff --git a/base/trace_event/trace_event.h b/base/trace_event/trace_event.h | 
| index 4de64837161fded5fd176d1dc5136006d8521a9e..2dd5e93416ba22659e1d5a42c898f0e12d1f937e 100644 | 
| --- a/base/trace_event/trace_event.h | 
| +++ b/base/trace_event/trace_event.h | 
| @@ -376,29 +376,20 @@ TRACE_EVENT_API_CLASS_EXPORT extern \ | 
| }                                                                       \ | 
| } while (0) | 
|  | 
| -// This macro ignores whether the bind_id is local, global, or mangled. | 
| -#define INTERNAL_TRACE_EVENT_ADD_BIND_IDS(category_group, name, id, bind_id,  \ | 
| -                                          ...)                                \ | 
| +// The linked ID will not be mangled. | 
| +#define INTERNAL_TRACE_EVENT_ADD_LINK_IDS(category_group, name, id1, id2)     \ | 
| do {                                                                      \ | 
| INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group);                 \ | 
| if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ | 
| -        trace_event_internal::TraceID source_id((id));                        \ | 
| +        trace_event_internal::TraceID source_id((id1));                       \ | 
| unsigned int source_flags = source_id.id_flags();                     \ | 
| -        trace_event_internal::TraceID target_id((bind_id));                   \ | 
| -        if (target_id.scope() == trace_event_internal::kGlobalScope) {        \ | 
| -          trace_event_internal::AddTraceEvent(                                \ | 
| -              TRACE_EVENT_PHASE_BIND_IDS,                                     \ | 
| -              INTERNAL_TRACE_EVENT_UID(category_group_enabled),               \ | 
| -              name, source_id.scope(), source_id.raw_id(),                    \ | 
| -              source_flags, target_id.raw_id(), ##__VA_ARGS__);               \ | 
| -        } else {                                                              \ | 
| -          trace_event_internal::AddTraceEvent(                                \ | 
| -              TRACE_EVENT_PHASE_BIND_IDS,                                     \ | 
| -              INTERNAL_TRACE_EVENT_UID(category_group_enabled),               \ | 
| -              name, source_id.scope(), source_id.raw_id(),                    \ | 
| -              source_flags, target_id.raw_id(),                               \ | 
| -              "bind_scope", target_id.scope(), ##__VA_ARGS__);                \ | 
| -        }                                                                     \ | 
| +        trace_event_internal::TraceID target_id((id2));                       \ | 
| +        trace_event_internal::AddTraceEvent(                                  \ | 
| +            TRACE_EVENT_PHASE_LINK_IDS,                                       \ | 
| +            INTERNAL_TRACE_EVENT_UID(category_group_enabled),                 \ | 
| +            name, source_id.scope(), source_id.raw_id(), source_flags,        \ | 
| +            trace_event_internal::kNoId,                                      \ | 
| +            "linked_id", target_id.AsConvertableToTraceFormat());             \ | 
| }                                                                       \ | 
| } while (0) | 
|  | 
| @@ -456,7 +447,7 @@ const unsigned long long kNoId = 0; | 
| // TraceID encapsulates an ID that can either be an integer or pointer. Pointers | 
| // are by default mangled with the Process ID so that they are unlikely to | 
| // collide when the same pointer is used on different processes. | 
| -class TraceID { | 
| +class BASE_EXPORT TraceID { | 
| public: | 
| // Can be combined with WithScope. | 
| class LocalId { | 
| @@ -582,6 +573,9 @@ class TraceID { | 
| const char* scope() const { return scope_; } | 
| unsigned int id_flags() const { return id_flags_; } | 
|  | 
| +  std::unique_ptr<base::trace_event::ConvertableToTraceFormat> | 
| +  AsConvertableToTraceFormat() const; | 
| + | 
| private: | 
| const char* scope_ = nullptr; | 
| unsigned long long raw_id_; | 
|  |