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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sdk/TracingModel.js

Issue 2563383003: DevTools: add extension API to contribute trace events to timeline (Closed)
Patch Set: Review comments + better test Created 4 years 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 /* 1 /*
2 * Copyright 2014 The Chromium Authors. All rights reserved. 2 * Copyright 2014 The Chromium Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 /** 7 /**
8 * @unrestricted 8 * @unrestricted
9 */ 9 */
10 SDK.TracingModel = class { 10 SDK.TracingModel = class {
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 this._openAsyncEvents = new Map(); 162 this._openAsyncEvents = new Map();
163 /** @type {!Map<string, !Array<!SDK.TracingModel.AsyncEvent>>} */ 163 /** @type {!Map<string, !Array<!SDK.TracingModel.AsyncEvent>>} */
164 this._openNestableAsyncEvents = new Map(); 164 this._openNestableAsyncEvents = new Map();
165 /** @type {!Map<string, !SDK.TracingModel.ProfileEventsGroup>} */ 165 /** @type {!Map<string, !SDK.TracingModel.ProfileEventsGroup>} */
166 this._profileGroups = new Map(); 166 this._profileGroups = new Map();
167 /** @type {!Map<string, !Set<string>>} */ 167 /** @type {!Map<string, !Set<string>>} */
168 this._parsedCategories = new Map(); 168 this._parsedCategories = new Map();
169 } 169 }
170 170
171 /** 171 /**
172 * @param {number} offset
173 */
174 adjustTime(offset) {
175 this._minimumRecordTime += offset;
176 this._maximumRecordTime += offset;
177 for (const process of this._processById.values()) {
178 for (const thread of process._threads.values()) {
179 for (const event of thread.events()) {
180 event.startTime += offset;
181 if (typeof event.endTime === 'number')
182 event.endTime += offset;
183 }
184 for (const event of thread.asyncEvents()) {
185 event.startTime += offset;
186 if (typeof event.endTime === 'number')
187 event.endTime += offset;
188 }
189 }
190 }
191 }
192
193 /**
172 * @param {!SDK.TracingManager.EventPayload} payload 194 * @param {!SDK.TracingManager.EventPayload} payload
173 */ 195 */
174 _addEvent(payload) { 196 _addEvent(payload) {
175 var process = this._processById.get(payload.pid); 197 var process = this._processById.get(payload.pid);
176 if (!process) { 198 if (!process) {
177 process = new SDK.TracingModel.Process(this, payload.pid); 199 process = new SDK.TracingModel.Process(this, payload.pid);
178 this._processById.set(payload.pid, process); 200 this._processById.set(payload.pid, process);
179 } 201 }
180 202
181 const phase = SDK.TracingModel.Phase; 203 const phase = SDK.TracingModel.Phase;
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 appendString(string) {}, 489 appendString(string) {},
468 490
469 /** 491 /**
470 * @param {string} string 492 * @param {string} string
471 * @return {function():!Promise.<?string>} 493 * @return {function():!Promise.<?string>}
472 */ 494 */
473 appendAccessibleString(string) {}, 495 appendAccessibleString(string) {},
474 496
475 finishWriting() {}, 497 finishWriting() {},
476 498
477 reset() {}, 499 reset() {}
478 }; 500 };
479 501
480 /** 502 /**
481 * @unrestricted 503 * @unrestricted
482 */ 504 */
483 SDK.TracingModel.Event = class { 505 SDK.TracingModel.Event = class {
484 /** 506 /**
485 * @param {string} categories 507 * @param {string} categories
486 * @param {string} name 508 * @param {string} name
487 * @param {!SDK.TracingModel.Phase} phase 509 * @param {!SDK.TracingModel.Phase} phase
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 this.setEndTime(endEvent.startTime); 627 this.setEndTime(endEvent.startTime);
606 } 628 }
607 629
608 /** 630 /**
609 * @param {?function():!Promise.<?string>} backingStorage 631 * @param {?function():!Promise.<?string>} backingStorage
610 */ 632 */
611 _setBackingStorage(backingStorage) { 633 _setBackingStorage(backingStorage) {
612 } 634 }
613 }; 635 };
614 636
615
616 /**
617 * @unrestricted
618 */
619 SDK.TracingModel.ObjectSnapshot = class extends SDK.TracingModel.Event { 637 SDK.TracingModel.ObjectSnapshot = class extends SDK.TracingModel.Event {
620 /** 638 /**
621 * @param {string} category 639 * @param {string} category
622 * @param {string} name 640 * @param {string} name
623 * @param {number} startTime 641 * @param {number} startTime
624 * @param {!SDK.TracingModel.Thread} thread 642 * @param {!SDK.TracingModel.Thread} thread
625 */ 643 */
626 constructor(category, name, startTime, thread) { 644 constructor(category, name, startTime, thread) {
627 super(category, name, SDK.TracingModel.Phase.SnapshotObject, startTime, thre ad); 645 super(category, name, SDK.TracingModel.Phase.SnapshotObject, startTime, thre ad);
646 /** @type {?function():!Promise<?string>} */
647 this._backingStorage = null;
648 /** @type {string} */
649 this.id;
650 /** @type {?Promise<?>} */
651 this._objectPromise = null;
628 } 652 }
629 653
630 /** 654 /**
631 * @param {!SDK.TracingManager.EventPayload} payload 655 * @param {!SDK.TracingManager.EventPayload} payload
632 * @param {!SDK.TracingModel.Thread} thread 656 * @param {!SDK.TracingModel.Thread} thread
633 * @return {!SDK.TracingModel.ObjectSnapshot} 657 * @return {!SDK.TracingModel.ObjectSnapshot}
634 */ 658 */
635 static fromPayload(payload, thread) { 659 static fromPayload(payload, thread) {
636 var snapshot = new SDK.TracingModel.ObjectSnapshot(payload.cat, payload.name , payload.ts / 1000, thread); 660 var snapshot = new SDK.TracingModel.ObjectSnapshot(payload.cat, payload.name , payload.ts / 1000, thread);
637 var id = SDK.TracingModel._extractId(payload); 661 var id = SDK.TracingModel._extractId(payload);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 } 760 }
737 761
738 /** 762 /**
739 * @param {!SDK.TracingModel.Event} event 763 * @param {!SDK.TracingModel.Event} event
740 */ 764 */
741 _addChild(event) { 765 _addChild(event) {
742 this.children.push(event); 766 this.children.push(event);
743 } 767 }
744 }; 768 };
745 769
746 /**
747 * @unrestricted
748 */
749 SDK.TracingModel.NamedObject = class { 770 SDK.TracingModel.NamedObject = class {
750 /** 771 /**
772 * @param {!SDK.TracingModel} model
773 * @param {number} id
774 */
775 constructor(model, id) {
776 this._model = model;
777 this._id = id;
778 this._name = '';
779 this._sortIndex = 0;
780 }
781
782 /**
751 * @param {!Array.<!SDK.TracingModel.NamedObject>} array 783 * @param {!Array.<!SDK.TracingModel.NamedObject>} array
752 */ 784 */
753 static _sort(array) { 785 static _sort(array) {
754 /** 786 /**
755 * @param {!SDK.TracingModel.NamedObject} a 787 * @param {!SDK.TracingModel.NamedObject} a
756 * @param {!SDK.TracingModel.NamedObject} b 788 * @param {!SDK.TracingModel.NamedObject} b
757 */ 789 */
758 function comparator(a, b) { 790 function comparator(a, b) {
759 return a._sortIndex !== b._sortIndex ? a._sortIndex - b._sortIndex : a.nam e().localeCompare(b.name()); 791 return a._sortIndex !== b._sortIndex ? a._sortIndex - b._sortIndex : a.nam e().localeCompare(b.name());
760 } 792 }
(...skipping 15 matching lines...) Expand all
776 } 808 }
777 809
778 /** 810 /**
779 * @param {number} sortIndex 811 * @param {number} sortIndex
780 */ 812 */
781 _setSortIndex(sortIndex) { 813 _setSortIndex(sortIndex) {
782 this._sortIndex = sortIndex; 814 this._sortIndex = sortIndex;
783 } 815 }
784 }; 816 };
785 817
786
787 /**
788 * @unrestricted
789 */
790 SDK.TracingModel.Process = class extends SDK.TracingModel.NamedObject { 818 SDK.TracingModel.Process = class extends SDK.TracingModel.NamedObject {
791 /** 819 /**
792 * @param {!SDK.TracingModel} model 820 * @param {!SDK.TracingModel} model
793 * @param {number} id 821 * @param {number} id
794 */ 822 */
795 constructor(model, id) { 823 constructor(model, id) {
796 super(); 824 super(model, id);
797 this._setName('Process ' + id);
798 this._id = id;
799 /** @type {!Map<number, !SDK.TracingModel.Thread>} */ 825 /** @type {!Map<number, !SDK.TracingModel.Thread>} */
800 this._threads = new Map(); 826 this._threads = new Map();
801 this._threadByName = new Map(); 827 this._threadByName = new Map();
802 this._model = model;
803 } 828 }
804 829
805 /** 830 /**
806 * @return {number} 831 * @return {number}
807 */ 832 */
808 id() { 833 id() {
809 return this._id; 834 return this._id;
810 } 835 }
811 836
812 /** 837 /**
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 } 872 }
848 873
849 /** 874 /**
850 * @return {!Array.<!SDK.TracingModel.Thread>} 875 * @return {!Array.<!SDK.TracingModel.Thread>}
851 */ 876 */
852 sortedThreads() { 877 sortedThreads() {
853 return SDK.TracingModel.NamedObject._sort(this._threads.valuesArray()); 878 return SDK.TracingModel.NamedObject._sort(this._threads.valuesArray());
854 } 879 }
855 }; 880 };
856 881
857 /**
858 * @unrestricted
859 */
860 SDK.TracingModel.Thread = class extends SDK.TracingModel.NamedObject { 882 SDK.TracingModel.Thread = class extends SDK.TracingModel.NamedObject {
861 /** 883 /**
862 * @param {!SDK.TracingModel.Process} process 884 * @param {!SDK.TracingModel.Process} process
863 * @param {number} id 885 * @param {number} id
864 */ 886 */
865 constructor(process, id) { 887 constructor(process, id) {
866 super(); 888 super(process._model, id);
867 this._process = process; 889 this._process = process;
868 this._setName('Thread ' + id);
869 this._events = []; 890 this._events = [];
870 this._asyncEvents = []; 891 this._asyncEvents = [];
871 this._id = id; 892 this._lastTopLevelEvent = null;
872 this._model = process._model;
873 } 893 }
874 894
875 tracingComplete() { 895 tracingComplete() {
876 this._asyncEvents.stableSort(SDK.TracingModel.Event.compareStartAndEndTime); 896 this._asyncEvents.stableSort(SDK.TracingModel.Event.compareStartAndEndTime);
877 this._events.stableSort(SDK.TracingModel.Event.compareStartTime); 897 this._events.stableSort(SDK.TracingModel.Event.compareStartTime);
878 var phases = SDK.TracingModel.Phase; 898 var phases = SDK.TracingModel.Phase;
879 var stack = []; 899 var stack = [];
880 for (var i = 0; i < this._events.length; ++i) { 900 for (var i = 0; i < this._events.length; ++i) {
881 var e = this._events[i]; 901 var e = this._events[i];
882 e.ordinal = i; 902 e.ordinal = i;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 return this._events; 980 return this._events;
961 } 981 }
962 982
963 /** 983 /**
964 * @return {!Array.<!SDK.TracingModel.AsyncEvent>} 984 * @return {!Array.<!SDK.TracingModel.AsyncEvent>}
965 */ 985 */
966 asyncEvents() { 986 asyncEvents() {
967 return this._asyncEvents; 987 return this._asyncEvents;
968 } 988 }
969 }; 989 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698