| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 }; |
| OLD | NEW |