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

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

Issue 1889963003: Revert of DevTools: extract CPU profile independent part of CPUProfileNode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months 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
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 /**
6 * @constructor
7 */
8 WebInspector.ProfileNode = function(functionName, scriptId, url, lineNumber, col umnNumber)
9 {
10 /** @type {!RuntimeAgent.CallFrame} */
11 this.frame = {
12 functionName: functionName,
13 scriptId: scriptId,
14 url: url,
15 lineNumber: lineNumber,
16 columnNumber: columnNumber
17 };
18 /** @type {number} */
19 this.callUID;
20 /** @type {number} */
21 this.self = 0;
22 /** @type {number} */
23 this.total = 0;
24 /** @type {number} */
25 this.id = 0;
26 /** @type {?WebInspector.ProfileNode} */
27 this.parent = null;
28 /** @type {!Array<!WebInspector.ProfileNode>} */
29 this.children = [];
30 }
31
32 WebInspector.ProfileNode.prototype = {
33 /**
34 * @return {string}
35 */
36 get functionName()
37 {
38 return this.frame.functionName;
39 },
40
41 /**
42 * @return {string}
43 */
44 get scriptId()
45 {
46 return this.frame.scriptId;
47 },
48
49 /**
50 * @return {string}
51 */
52 get url()
53 {
54 return this.frame.url;
55 },
56
57 /**
58 * @return {number}
59 */
60 get lineNumber()
61 {
62 return this.frame.lineNumber;
63 },
64
65 /**
66 * @return {number}
67 */
68 get columnNumber()
69 {
70 return this.frame.columnNumber;
71 }
72 }
73
74 /**
75 * @constructor
76 * @param {!WebInspector.ProfileNode} root
77 * @param {number} begin
78 * @param {number} end
79 */
80 WebInspector.ProfileTreeModel = function(root, begin, end)
81 {
82 this.root = root;
83 this.begin = begin;
84 this.end = end;
85 this._assignDepthsAndParents();
86 this._calculateTotals(this.root);
87 }
88
89 WebInspector.ProfileTreeModel.prototype = {
90 _assignDepthsAndParents: function()
91 {
92 var root = this.root;
93 root.depth = -1;
94 root.parent = null;
95 this.maxDepth = 0;
96 var nodesToTraverse = [root];
97 while (nodesToTraverse.length) {
98 var parent = nodesToTraverse.pop();
99 var depth = parent.depth + 1;
100 if (depth > this.maxDepth)
101 this.maxDepth = depth;
102 var children = parent.children;
103 var length = children.length;
104 for (var i = 0; i < length; ++i) {
105 var child = children[i];
106 child.depth = depth;
107 child.parent = parent;
108 if (child.children.length)
109 nodesToTraverse.push(child);
110 }
111 }
112 },
113
114 /**
115 * @param {!WebInspector.ProfileNode} node
116 * @return {number}
117 */
118 _calculateTotals: function(node)
119 {
120 node.total = node.children.reduce((acc, child) => acc + this._calculateT otals(child), node.self);
121 return node.total;
122 }
123 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698