Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(344)

Side by Side Diff: base/trace_event/trace_event.h

Issue 1424703003: Kills TraceTicks, which was functionally the same as TimeTicks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code review Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_TRACE_EVENT_TRACE_EVENT_H_ 5 #ifndef BASE_TRACE_EVENT_TRACE_EVENT_H_
6 #define BASE_TRACE_EVENT_TRACE_EVENT_H_ 6 #define BASE_TRACE_EVENT_TRACE_EVENT_H_
7 7
8 // This header file defines implementation details of how the trace macros in 8 // This header file defines implementation details of how the trace macros in
9 // trace_event_common.h collect and store trace events. Anything not 9 // trace_event_common.h collect and store trace events. Anything not
10 // implementation-specific should go in trace_macros_common.h instead of here. 10 // implementation-specific should go in trace_macros_common.h instead of here.
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 127
128 // Add a trace event to the platform tracing system. 128 // Add a trace event to the platform tracing system.
129 // base::trace_event::TraceEventHandle 129 // base::trace_event::TraceEventHandle
130 // TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_TIMESTAMP( 130 // TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_TIMESTAMP(
131 // char phase, 131 // char phase,
132 // const unsigned char* category_group_enabled, 132 // const unsigned char* category_group_enabled,
133 // const char* name, 133 // const char* name,
134 // unsigned long long id, 134 // unsigned long long id,
135 // unsigned long long context_id, 135 // unsigned long long context_id,
136 // int thread_id, 136 // int thread_id,
137 // const TraceTicks& timestamp, 137 // const TimeTicks& timestamp,
138 // int num_args, 138 // int num_args,
139 // const char** arg_names, 139 // const char** arg_names,
140 // const unsigned char* arg_types, 140 // const unsigned char* arg_types,
141 // const unsigned long long* arg_values, 141 // const unsigned long long* arg_values,
142 // const scoped_refptr<ConvertableToTraceFormat>* 142 // const scoped_refptr<ConvertableToTraceFormat>*
143 // convertable_values, 143 // convertable_values,
144 // unsigned int flags) 144 // unsigned int flags)
145 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP \ 145 #define TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP \
146 base::trace_event::TraceLog::GetInstance() \ 146 base::trace_event::TraceLog::GetInstance() \
147 ->AddTraceEventWithThreadIdAndTimestamp 147 ->AddTraceEventWithThreadIdAndTimestamp
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 category_group, name, id, thread_id, timestamp, flags, ...) \ 286 category_group, name, id, thread_id, timestamp, flags, ...) \
287 do { \ 287 do { \
288 INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \ 288 INTERNAL_TRACE_EVENT_GET_CATEGORY_INFO(category_group); \
289 if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \ 289 if (INTERNAL_TRACE_EVENT_CATEGORY_GROUP_ENABLED_FOR_RECORDING_MODE()) { \
290 unsigned int trace_event_flags = flags | TRACE_EVENT_FLAG_HAS_ID; \ 290 unsigned int trace_event_flags = flags | TRACE_EVENT_FLAG_HAS_ID; \
291 trace_event_internal::TraceID trace_event_trace_id( \ 291 trace_event_internal::TraceID trace_event_trace_id( \
292 id, &trace_event_flags); \ 292 id, &trace_event_flags); \
293 trace_event_internal::AddTraceEventWithThreadIdAndTimestamp( \ 293 trace_event_internal::AddTraceEventWithThreadIdAndTimestamp( \
294 phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), \ 294 phase, INTERNAL_TRACE_EVENT_UID(category_group_enabled), \
295 name, trace_event_trace_id.data(), trace_event_internal::kNoId, \ 295 name, trace_event_trace_id.data(), trace_event_internal::kNoId, \
296 thread_id, base::TraceTicks::FromInternalValue(timestamp), \ 296 thread_id, base::TimeTicks::FromInternalValue(timestamp), \
297 trace_event_flags | TRACE_EVENT_FLAG_EXPLICIT_TIMESTAMP, \ 297 trace_event_flags | TRACE_EVENT_FLAG_EXPLICIT_TIMESTAMP, \
298 trace_event_internal::kNoId, ##__VA_ARGS__); \ 298 trace_event_internal::kNoId, ##__VA_ARGS__); \
299 } \ 299 } \
300 } while (0) 300 } while (0)
301 301
302 302
303 namespace trace_event_internal { 303 namespace trace_event_internal {
304 304
305 // Specify these values when the corresponding argument of AddTraceEvent is not 305 // Specify these values when the corresponding argument of AddTraceEvent is not
306 // used. 306 // used.
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 *value = arg.ToInternalValue(); 490 *value = arg.ToInternalValue();
491 } 491 }
492 492
493 static inline void SetTraceValue(const base::ThreadTicks arg, 493 static inline void SetTraceValue(const base::ThreadTicks arg,
494 unsigned char* type, 494 unsigned char* type,
495 unsigned long long* value) { 495 unsigned long long* value) {
496 *type = TRACE_VALUE_TYPE_INT; 496 *type = TRACE_VALUE_TYPE_INT;
497 *value = arg.ToInternalValue(); 497 *value = arg.ToInternalValue();
498 } 498 }
499 499
500 static inline void SetTraceValue(const base::TraceTicks arg,
501 unsigned char* type,
502 unsigned long long* value) {
503 *type = TRACE_VALUE_TYPE_INT;
504 *value = arg.ToInternalValue();
505 }
506
507 // These AddTraceEvent and AddTraceEventWithThreadIdAndTimestamp template 500 // These AddTraceEvent and AddTraceEventWithThreadIdAndTimestamp template
508 // functions are defined here instead of in the macro, because the arg_values 501 // functions are defined here instead of in the macro, because the arg_values
509 // could be temporary objects, such as std::string. In order to store 502 // could be temporary objects, such as std::string. In order to store
510 // pointers to the internal c_str and pass through to the tracing API, 503 // pointers to the internal c_str and pass through to the tracing API,
511 // the arg_values must live throughout these procedures. 504 // the arg_values must live throughout these procedures.
512 505
513 static inline base::trace_event::TraceEventHandle 506 static inline base::trace_event::TraceEventHandle
514 AddTraceEventWithThreadIdAndTimestamp( 507 AddTraceEventWithThreadIdAndTimestamp(
515 char phase, 508 char phase,
516 const unsigned char* category_group_enabled, 509 const unsigned char* category_group_enabled,
517 const char* name, 510 const char* name,
518 unsigned long long id, 511 unsigned long long id,
519 unsigned long long context_id, 512 unsigned long long context_id,
520 int thread_id, 513 int thread_id,
521 const base::TraceTicks& timestamp, 514 const base::TimeTicks& timestamp,
522 unsigned int flags, 515 unsigned int flags,
523 unsigned long long bind_id, 516 unsigned long long bind_id,
524 const char* arg1_name, 517 const char* arg1_name,
525 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& 518 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>&
526 arg1_val) { 519 arg1_val) {
527 const int num_args = 1; 520 const int num_args = 1;
528 unsigned char arg_types[1] = { TRACE_VALUE_TYPE_CONVERTABLE }; 521 unsigned char arg_types[1] = { TRACE_VALUE_TYPE_CONVERTABLE };
529 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 522 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
530 phase, category_group_enabled, name, id, context_id, bind_id, thread_id, 523 phase, category_group_enabled, name, id, context_id, bind_id, thread_id,
531 timestamp, num_args, &arg1_name, arg_types, NULL, &arg1_val, flags); 524 timestamp, num_args, &arg1_name, arg_types, NULL, &arg1_val, flags);
532 } 525 }
533 526
534 template<class ARG1_TYPE> 527 template<class ARG1_TYPE>
535 static inline base::trace_event::TraceEventHandle 528 static inline base::trace_event::TraceEventHandle
536 AddTraceEventWithThreadIdAndTimestamp( 529 AddTraceEventWithThreadIdAndTimestamp(
537 char phase, 530 char phase,
538 const unsigned char* category_group_enabled, 531 const unsigned char* category_group_enabled,
539 const char* name, 532 const char* name,
540 unsigned long long id, 533 unsigned long long id,
541 unsigned long long context_id, 534 unsigned long long context_id,
542 int thread_id, 535 int thread_id,
543 const base::TraceTicks& timestamp, 536 const base::TimeTicks& timestamp,
544 unsigned int flags, 537 unsigned int flags,
545 unsigned long long bind_id, 538 unsigned long long bind_id,
546 const char* arg1_name, 539 const char* arg1_name,
547 const ARG1_TYPE& arg1_val, 540 const ARG1_TYPE& arg1_val,
548 const char* arg2_name, 541 const char* arg2_name,
549 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& 542 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>&
550 arg2_val) { 543 arg2_val) {
551 const int num_args = 2; 544 const int num_args = 2;
552 const char* arg_names[2] = { arg1_name, arg2_name }; 545 const char* arg_names[2] = { arg1_name, arg2_name };
553 546
(...skipping 14 matching lines...) Expand all
568 561
569 template<class ARG2_TYPE> 562 template<class ARG2_TYPE>
570 static inline base::trace_event::TraceEventHandle 563 static inline base::trace_event::TraceEventHandle
571 AddTraceEventWithThreadIdAndTimestamp( 564 AddTraceEventWithThreadIdAndTimestamp(
572 char phase, 565 char phase,
573 const unsigned char* category_group_enabled, 566 const unsigned char* category_group_enabled,
574 const char* name, 567 const char* name,
575 unsigned long long id, 568 unsigned long long id,
576 unsigned long long context_id, 569 unsigned long long context_id,
577 int thread_id, 570 int thread_id,
578 const base::TraceTicks& timestamp, 571 const base::TimeTicks& timestamp,
579 unsigned int flags, 572 unsigned int flags,
580 unsigned long long bind_id, 573 unsigned long long bind_id,
581 const char* arg1_name, 574 const char* arg1_name,
582 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val, 575 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val,
583 const char* arg2_name, 576 const char* arg2_name,
584 const ARG2_TYPE& arg2_val) { 577 const ARG2_TYPE& arg2_val) {
585 const int num_args = 2; 578 const int num_args = 2;
586 const char* arg_names[2] = { arg1_name, arg2_name }; 579 const char* arg_names[2] = { arg1_name, arg2_name };
587 580
588 unsigned char arg_types[2]; 581 unsigned char arg_types[2];
(...skipping 13 matching lines...) Expand all
602 } 595 }
603 596
604 static inline base::trace_event::TraceEventHandle 597 static inline base::trace_event::TraceEventHandle
605 AddTraceEventWithThreadIdAndTimestamp( 598 AddTraceEventWithThreadIdAndTimestamp(
606 char phase, 599 char phase,
607 const unsigned char* category_group_enabled, 600 const unsigned char* category_group_enabled,
608 const char* name, 601 const char* name,
609 unsigned long long id, 602 unsigned long long id,
610 unsigned long long context_id, 603 unsigned long long context_id,
611 int thread_id, 604 int thread_id,
612 const base::TraceTicks& timestamp, 605 const base::TimeTicks& timestamp,
613 unsigned int flags, 606 unsigned int flags,
614 unsigned long long bind_id, 607 unsigned long long bind_id,
615 const char* arg1_name, 608 const char* arg1_name,
616 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val, 609 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& arg1_val,
617 const char* arg2_name, 610 const char* arg2_name,
618 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>& 611 const scoped_refptr<base::trace_event::ConvertableToTraceFormat>&
619 arg2_val) { 612 arg2_val) {
620 const int num_args = 2; 613 const int num_args = 2;
621 const char* arg_names[2] = { arg1_name, arg2_name }; 614 const char* arg_names[2] = { arg1_name, arg2_name };
622 unsigned char arg_types[2] = 615 unsigned char arg_types[2] =
623 { TRACE_VALUE_TYPE_CONVERTABLE, TRACE_VALUE_TYPE_CONVERTABLE }; 616 { TRACE_VALUE_TYPE_CONVERTABLE, TRACE_VALUE_TYPE_CONVERTABLE };
624 scoped_refptr<base::trace_event::ConvertableToTraceFormat> 617 scoped_refptr<base::trace_event::ConvertableToTraceFormat>
625 convertable_values[2] = {arg1_val, arg2_val}; 618 convertable_values[2] = {arg1_val, arg2_val};
626 619
627 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 620 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
628 phase, category_group_enabled, name, id, context_id, bind_id, thread_id, 621 phase, category_group_enabled, name, id, context_id, bind_id, thread_id,
629 timestamp, num_args, arg_names, arg_types, NULL, convertable_values, 622 timestamp, num_args, arg_names, arg_types, NULL, convertable_values,
630 flags); 623 flags);
631 } 624 }
632 625
633 static inline base::trace_event::TraceEventHandle 626 static inline base::trace_event::TraceEventHandle
634 AddTraceEventWithThreadIdAndTimestamp( 627 AddTraceEventWithThreadIdAndTimestamp(
635 char phase, 628 char phase,
636 const unsigned char* category_group_enabled, 629 const unsigned char* category_group_enabled,
637 const char* name, 630 const char* name,
638 unsigned long long id, 631 unsigned long long id,
639 unsigned long long context_id, 632 unsigned long long context_id,
640 int thread_id, 633 int thread_id,
641 const base::TraceTicks& timestamp, 634 const base::TimeTicks& timestamp,
642 unsigned int flags, 635 unsigned int flags,
643 unsigned long long bind_id) { 636 unsigned long long bind_id) {
644 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 637 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
645 phase, category_group_enabled, name, id, context_id, bind_id, thread_id, 638 phase, category_group_enabled, name, id, context_id, bind_id, thread_id,
646 timestamp, kZeroNumArgs, NULL, NULL, NULL, NULL, flags); 639 timestamp, kZeroNumArgs, NULL, NULL, NULL, NULL, flags);
647 } 640 }
648 641
649 static inline base::trace_event::TraceEventHandle AddTraceEvent( 642 static inline base::trace_event::TraceEventHandle AddTraceEvent(
650 char phase, 643 char phase,
651 const unsigned char* category_group_enabled, 644 const unsigned char* category_group_enabled,
652 const char* name, 645 const char* name,
653 unsigned long long id, 646 unsigned long long id,
654 unsigned int flags, 647 unsigned int flags,
655 unsigned long long bind_id) { 648 unsigned long long bind_id) {
656 const int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 649 const int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
657 const base::TraceTicks now = base::TraceTicks::Now(); 650 const base::TimeTicks now = base::TimeTicks::Now();
658 return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled, 651 return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled,
659 name, id, kNoId, thread_id, now, 652 name, id, kNoId, thread_id, now,
660 flags, bind_id); 653 flags, bind_id);
661 } 654 }
662 655
663 template<class ARG1_TYPE> 656 template<class ARG1_TYPE>
664 static inline base::trace_event::TraceEventHandle 657 static inline base::trace_event::TraceEventHandle
665 AddTraceEventWithThreadIdAndTimestamp( 658 AddTraceEventWithThreadIdAndTimestamp(
666 char phase, 659 char phase,
667 const unsigned char* category_group_enabled, 660 const unsigned char* category_group_enabled,
668 const char* name, 661 const char* name,
669 unsigned long long id, 662 unsigned long long id,
670 unsigned long long context_id, 663 unsigned long long context_id,
671 int thread_id, 664 int thread_id,
672 const base::TraceTicks& timestamp, 665 const base::TimeTicks& timestamp,
673 unsigned int flags, 666 unsigned int flags,
674 unsigned long long bind_id, 667 unsigned long long bind_id,
675 const char* arg1_name, 668 const char* arg1_name,
676 const ARG1_TYPE& arg1_val) { 669 const ARG1_TYPE& arg1_val) {
677 const int num_args = 1; 670 const int num_args = 1;
678 unsigned char arg_types[1]; 671 unsigned char arg_types[1];
679 unsigned long long arg_values[1]; 672 unsigned long long arg_values[1];
680 SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]); 673 SetTraceValue(arg1_val, &arg_types[0], &arg_values[0]);
681 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP( 674 return TRACE_EVENT_API_ADD_TRACE_EVENT_WITH_THREAD_ID_AND_TIMESTAMP(
682 phase, category_group_enabled, name, id, context_id, bind_id, thread_id, 675 phase, category_group_enabled, name, id, context_id, bind_id, thread_id,
683 timestamp, num_args, &arg1_name, arg_types, arg_values, NULL, flags); 676 timestamp, num_args, &arg1_name, arg_types, arg_values, NULL, flags);
684 } 677 }
685 678
686 template<class ARG1_TYPE> 679 template<class ARG1_TYPE>
687 static inline base::trace_event::TraceEventHandle AddTraceEvent( 680 static inline base::trace_event::TraceEventHandle AddTraceEvent(
688 char phase, 681 char phase,
689 const unsigned char* category_group_enabled, 682 const unsigned char* category_group_enabled,
690 const char* name, 683 const char* name,
691 unsigned long long id, 684 unsigned long long id,
692 unsigned int flags, 685 unsigned int flags,
693 unsigned long long bind_id, 686 unsigned long long bind_id,
694 const char* arg1_name, 687 const char* arg1_name,
695 const ARG1_TYPE& arg1_val) { 688 const ARG1_TYPE& arg1_val) {
696 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 689 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
697 base::TraceTicks now = base::TraceTicks::Now(); 690 base::TimeTicks now = base::TimeTicks::Now();
698 return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled, 691 return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled,
699 name, id, kNoId, thread_id, now, 692 name, id, kNoId, thread_id, now,
700 flags, bind_id, 693 flags, bind_id,
701 arg1_name, arg1_val); 694 arg1_name, arg1_val);
702 } 695 }
703 696
704 template<class ARG1_TYPE, class ARG2_TYPE> 697 template<class ARG1_TYPE, class ARG2_TYPE>
705 static inline base::trace_event::TraceEventHandle 698 static inline base::trace_event::TraceEventHandle
706 AddTraceEventWithThreadIdAndTimestamp( 699 AddTraceEventWithThreadIdAndTimestamp(
707 char phase, 700 char phase,
708 const unsigned char* category_group_enabled, 701 const unsigned char* category_group_enabled,
709 const char* name, 702 const char* name,
710 unsigned long long id, 703 unsigned long long id,
711 unsigned long long context_id, 704 unsigned long long context_id,
712 int thread_id, 705 int thread_id,
713 const base::TraceTicks& timestamp, 706 const base::TimeTicks& timestamp,
714 unsigned int flags, 707 unsigned int flags,
715 unsigned long long bind_id, 708 unsigned long long bind_id,
716 const char* arg1_name, 709 const char* arg1_name,
717 const ARG1_TYPE& arg1_val, 710 const ARG1_TYPE& arg1_val,
718 const char* arg2_name, 711 const char* arg2_name,
719 const ARG2_TYPE& arg2_val) { 712 const ARG2_TYPE& arg2_val) {
720 const int num_args = 2; 713 const int num_args = 2;
721 const char* arg_names[2] = { arg1_name, arg2_name }; 714 const char* arg_names[2] = { arg1_name, arg2_name };
722 unsigned char arg_types[2]; 715 unsigned char arg_types[2];
723 unsigned long long arg_values[2]; 716 unsigned long long arg_values[2];
(...skipping 10 matching lines...) Expand all
734 const unsigned char* category_group_enabled, 727 const unsigned char* category_group_enabled,
735 const char* name, 728 const char* name,
736 unsigned long long id, 729 unsigned long long id,
737 unsigned int flags, 730 unsigned int flags,
738 unsigned long long bind_id, 731 unsigned long long bind_id,
739 const char* arg1_name, 732 const char* arg1_name,
740 const ARG1_TYPE& arg1_val, 733 const ARG1_TYPE& arg1_val,
741 const char* arg2_name, 734 const char* arg2_name,
742 const ARG2_TYPE& arg2_val) { 735 const ARG2_TYPE& arg2_val) {
743 int thread_id = static_cast<int>(base::PlatformThread::CurrentId()); 736 int thread_id = static_cast<int>(base::PlatformThread::CurrentId());
744 base::TraceTicks now = base::TraceTicks::Now(); 737 base::TimeTicks now = base::TimeTicks::Now();
745 return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled, 738 return AddTraceEventWithThreadIdAndTimestamp(phase, category_group_enabled,
746 name, id, kNoId, thread_id, now, 739 name, id, kNoId, thread_id, now,
747 flags, bind_id, 740 flags, bind_id,
748 arg1_name, arg1_val, 741 arg1_name, arg1_val,
749 arg2_name, arg2_val); 742 arg2_name, arg2_val);
750 } 743 }
751 744
752 static inline void AddMetadataEvent( 745 static inline void AddMetadataEvent(
753 const char* event_name, 746 const char* event_name,
754 const char* arg_name, 747 const char* arg_name,
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 const char* name_; 889 const char* name_;
897 IDType id_; 890 IDType id_;
898 891
899 DISALLOW_COPY_AND_ASSIGN(TraceScopedTrackableObject); 892 DISALLOW_COPY_AND_ASSIGN(TraceScopedTrackableObject);
900 }; 893 };
901 894
902 } // namespace trace_event 895 } // namespace trace_event
903 } // namespace base 896 } // namespace base
904 897
905 #endif // BASE_TRACE_EVENT_TRACE_EVENT_H_ 898 #endif // BASE_TRACE_EVENT_TRACE_EVENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698