performance.xul 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- This Source Code Form is subject to the terms of the Mozilla Public
  3. - License, v. 2.0. If a copy of the MPL was not distributed with this
  4. - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
  5. <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
  6. <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
  7. <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
  8. <?xml-stylesheet href="chrome://devtools/skin/performance.css" type="text/css"?>
  9. <?xml-stylesheet href="chrome://devtools/skin/jit-optimizations.css" type="text/css"?>
  10. <?xml-stylesheet href="chrome://devtools/skin/components-frame.css" type="text/css"?>
  11. <!DOCTYPE window [
  12. <!ENTITY % performanceDTD SYSTEM "chrome://devtools/locale/performance.dtd">
  13. %performanceDTD;
  14. ]>
  15. <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  16. xmlns:html="http://www.w3.org/1999/xhtml">
  17. <script src="chrome://devtools/content/shared/theme-switching.js"/>
  18. <script type="application/javascript" src="performance-controller.js"/>
  19. <script type="application/javascript" src="performance-view.js"/>
  20. <script type="application/javascript" src="views/overview.js"/>
  21. <script type="application/javascript" src="views/toolbar.js"/>
  22. <script type="application/javascript" src="views/details-abstract-subview.js"/>
  23. <script type="application/javascript" src="views/details-waterfall.js"/>
  24. <script type="application/javascript" src="views/details-js-call-tree.js"/>
  25. <script type="application/javascript" src="views/details-js-flamegraph.js"/>
  26. <script type="application/javascript" src="views/details-memory-call-tree.js"/>
  27. <script type="application/javascript" src="views/details-memory-flamegraph.js"/>
  28. <script type="application/javascript" src="views/details.js"/>
  29. <script type="application/javascript" src="views/recordings.js"/>
  30. <popupset id="performance-options-popupset">
  31. <menupopup id="performance-filter-menupopup" position="before_start"/>
  32. <menupopup id="performance-options-menupopup" position="before_end">
  33. <menuitem id="option-show-platform-data"
  34. type="checkbox"
  35. data-pref="show-platform-data"
  36. label="&performanceUI.showPlatformData;"
  37. tooltiptext="&performanceUI.showPlatformData.tooltiptext;"/>
  38. <menuitem id="option-show-jit-optimizations"
  39. class="experimental-option"
  40. type="checkbox"
  41. data-pref="show-jit-optimizations"
  42. label="&performanceUI.showJITOptimizations;"
  43. tooltiptext="&performanceUI.showJITOptimizations.tooltiptext;"/>
  44. <menuitem id="option-enable-memory"
  45. class="experimental-option"
  46. type="checkbox"
  47. data-pref="enable-memory"
  48. label="&performanceUI.enableMemory;"
  49. tooltiptext="&performanceUI.enableMemory.tooltiptext;"/>
  50. <menuitem id="option-enable-allocations"
  51. type="checkbox"
  52. data-pref="enable-allocations"
  53. label="&performanceUI.enableAllocations;"
  54. tooltiptext="&performanceUI.enableAllocations.tooltiptext;"/>
  55. <menuitem id="option-enable-framerate"
  56. type="checkbox"
  57. data-pref="enable-framerate"
  58. label="&performanceUI.enableFramerate;"
  59. tooltiptext="&performanceUI.enableFramerate.tooltiptext;"/>
  60. <menuitem id="option-invert-call-tree"
  61. type="checkbox"
  62. data-pref="invert-call-tree"
  63. label="&performanceUI.invertTree;"
  64. tooltiptext="&performanceUI.invertTree.tooltiptext;"/>
  65. <menuitem id="option-invert-flame-graph"
  66. type="checkbox"
  67. data-pref="invert-flame-graph"
  68. label="&performanceUI.invertFlameGraph;"
  69. tooltiptext="&performanceUI.invertFlameGraph.tooltiptext;"/>
  70. <menuitem id="option-flatten-tree-recursion"
  71. type="checkbox"
  72. data-pref="flatten-tree-recursion"
  73. label="&performanceUI.flattenTreeRecursion;"
  74. tooltiptext="&performanceUI.flattenTreeRecursion.tooltiptext;"/>
  75. </menupopup>
  76. </popupset>
  77. <hbox id="body" class="theme-body performance-tool" flex="1">
  78. <!-- Sidebar: controls and recording list -->
  79. <vbox id="recordings-pane">
  80. <hbox id="recordings-controls">
  81. <html:div id='recording-controls-mount'/>
  82. </hbox>
  83. <vbox id="recordings-list" class="theme-sidebar" flex="1">
  84. <html:div id="recording-list-mount"/>
  85. </vbox>
  86. </vbox>
  87. <!-- Main panel content -->
  88. <vbox id="performance-pane" flex="1">
  89. <!-- Top toolbar controls -->
  90. <toolbar id="performance-toolbar"
  91. class="devtools-toolbar">
  92. <hbox id="performance-toolbar-controls-other"
  93. class="devtools-toolbarbutton-group">
  94. <toolbarbutton id="filter-button"
  95. class="devtools-toolbarbutton"
  96. popup="performance-filter-menupopup"
  97. tooltiptext="&performanceUI.options.filter.tooltiptext;"/>
  98. </hbox>
  99. <hbox id="performance-toolbar-controls-detail-views"
  100. class="devtools-toolbarbutton-group">
  101. <toolbarbutton id="select-waterfall-view"
  102. class="devtools-toolbarbutton devtools-button"
  103. label="&performanceUI.toolbar.waterfall;"
  104. hidden="true"
  105. data-view="waterfall"
  106. tooltiptext="&performanceUI.toolbar.waterfall.tooltiptext;" />
  107. <toolbarbutton id="select-js-calltree-view"
  108. class="devtools-toolbarbutton devtools-button"
  109. label="&performanceUI.toolbar.js-calltree;"
  110. hidden="true"
  111. data-view="js-calltree"
  112. tooltiptext="&performanceUI.toolbar.js-calltree.tooltiptext;" />
  113. <toolbarbutton id="select-js-flamegraph-view"
  114. class="devtools-toolbarbutton devtools-button"
  115. label="&performanceUI.toolbar.js-flamegraph;"
  116. hidden="true"
  117. data-view="js-flamegraph"
  118. tooltiptext="&performanceUI.toolbar.js-flamegraph.tooltiptext;" />
  119. <toolbarbutton id="select-memory-calltree-view"
  120. class="devtools-toolbarbutton devtools-button"
  121. label="&performanceUI.toolbar.memory-calltree;"
  122. hidden="true"
  123. data-view="memory-calltree"
  124. tooltiptext="&performanceUI.toolbar.allocations.tooltiptext;" />
  125. <toolbarbutton id="select-memory-flamegraph-view"
  126. class="devtools-toolbarbutton devtools-button"
  127. label="&performanceUI.toolbar.memory-flamegraph;"
  128. hidden="true"
  129. data-view="memory-flamegraph" />
  130. </hbox>
  131. <spacer flex="1"></spacer>
  132. <hbox id="performance-toolbar-controls-options"
  133. class="devtools-toolbarbutton-group">
  134. <toolbarbutton id="performance-options-button"
  135. class="devtools-toolbarbutton devtools-option-toolbarbutton"
  136. popup="performance-options-menupopup"
  137. tooltiptext="&performanceUI.options.gear.tooltiptext;"/>
  138. </hbox>
  139. </toolbar>
  140. <!-- Recording contents and general notice messages -->
  141. <deck id="performance-view" flex="1">
  142. <!-- A default notice, shown while initially opening the tool.
  143. Keep this element the first child of #performance-view. -->
  144. <hbox id="tool-loading-notice"
  145. class="notice-container"
  146. flex="1">
  147. </hbox>
  148. <!-- "Unavailable" notice, shown when the entire tool is disabled,
  149. for example, when in private browsing mode. -->
  150. <vbox id="unavailable-notice"
  151. class="notice-container"
  152. align="center"
  153. pack="center"
  154. flex="1">
  155. <hbox pack="center">
  156. <html:div class='recording-button-mount'/>
  157. </hbox>
  158. <description class="tool-disabled-message">
  159. &performanceUI.unavailableNoticePB;
  160. </description>
  161. </vbox>
  162. <!-- "Empty" notice, shown when there's no recordings available -->
  163. <hbox id="empty-notice"
  164. class="notice-container"
  165. align="center"
  166. pack="center"
  167. flex="1">
  168. <hbox pack="center">
  169. <html:div class='recording-button-mount'/>
  170. </hbox>
  171. </hbox>
  172. <!-- Recording contents -->
  173. <vbox id="performance-view-content" flex="1">
  174. <!-- Overview graphs -->
  175. <vbox id="overview-pane">
  176. <hbox id="markers-overview"/>
  177. <hbox id="memory-overview"/>
  178. <hbox id="time-framerate"/>
  179. </vbox>
  180. <!-- Detail views and specific notice messages -->
  181. <deck id="details-pane-container" flex="1">
  182. <!-- "Loading" notice, shown when a recording is being loaded -->
  183. <hbox id="loading-notice"
  184. class="notice-container devtools-throbber"
  185. align="center"
  186. pack="center"
  187. flex="1">
  188. <label value="&performanceUI.loadingNotice;"/>
  189. </hbox>
  190. <!-- "Recording" notice, shown when a recording is in progress -->
  191. <vbox id="recording-notice"
  192. class="notice-container"
  193. align="center"
  194. pack="center"
  195. flex="1">
  196. <hbox pack="center">
  197. <html:div class='recording-button-mount'/>
  198. </hbox>
  199. <label class="realtime-disabled-message"
  200. value="&performanceUI.disabledRealTime.nonE10SBuild;"/>
  201. <label class="realtime-disabled-on-e10s-message"
  202. value="&performanceUI.disabledRealTime.disabledE10S;"/>
  203. <label class="buffer-status-message"
  204. tooltiptext="&performanceUI.bufferStatusTooltip;"/>
  205. <label class="buffer-status-message-full"
  206. value="&performanceUI.bufferStatusFull;"/>
  207. </vbox>
  208. <!-- "Console" notice, shown when a console recording is in progress -->
  209. <vbox id="console-recording-notice"
  210. class="notice-container"
  211. align="center"
  212. pack="center"
  213. flex="1">
  214. <hbox class="console-profile-recording-notice">
  215. <label value="&performanceUI.console.recordingNoticeStart;" />
  216. <label class="console-profile-command" />
  217. <label value="&performanceUI.console.recordingNoticeEnd;" />
  218. </hbox>
  219. <hbox class="console-profile-stop-notice">
  220. <label value="&performanceUI.console.stopCommandStart;" />
  221. <label class="console-profile-command" />
  222. <label value="&performanceUI.console.stopCommandEnd;" />
  223. </hbox>
  224. <label class="realtime-disabled-message"
  225. value="&performanceUI.disabledRealTime.nonE10SBuild;"/>
  226. <label class="realtime-disabled-on-e10s-message"
  227. value="&performanceUI.disabledRealTime.disabledE10S;"/>
  228. <label class="buffer-status-message"
  229. tooltiptext="&performanceUI.bufferStatusTooltip;"/>
  230. <label class="buffer-status-message-full"
  231. value="&performanceUI.bufferStatusFull;"/>
  232. </vbox>
  233. <!-- Detail views -->
  234. <deck id="details-pane" flex="1">
  235. <!-- Waterfall -->
  236. <hbox id="waterfall-view" flex="1">
  237. <html:div xmlns="http://www.w3.org/1999/xhtml" id="waterfall-tree" />
  238. <splitter class="devtools-side-splitter"/>
  239. <vbox id="waterfall-details"
  240. class="theme-sidebar"/>
  241. </hbox>
  242. <!-- JS Tree and JIT view -->
  243. <hbox id="js-profile-view" flex="1">
  244. <vbox id="js-calltree-view" flex="1">
  245. <hbox class="call-tree-headers-container">
  246. <label class="plain call-tree-header"
  247. type="duration"
  248. crop="end"
  249. value="&performanceUI.table.totalDuration;"
  250. tooltiptext="&performanceUI.table.totalDuration.tooltip;"/>
  251. <label class="plain call-tree-header"
  252. type="percentage"
  253. crop="end"
  254. value="&performanceUI.table.totalPercentage;"
  255. tooltiptext="&performanceUI.table.totalPercentage.tooltip;"/>
  256. <label class="plain call-tree-header"
  257. type="self-duration"
  258. crop="end"
  259. value="&performanceUI.table.selfDuration;"
  260. tooltiptext="&performanceUI.table.selfDuration.tooltip;"/>
  261. <label class="plain call-tree-header"
  262. type="self-percentage"
  263. crop="end"
  264. value="&performanceUI.table.selfPercentage;"
  265. tooltiptext="&performanceUI.table.selfPercentage.tooltip;"/>
  266. <label class="plain call-tree-header"
  267. type="samples"
  268. crop="end"
  269. value="&performanceUI.table.samples;"
  270. tooltiptext="&performanceUI.table.samples.tooltip;"/>
  271. <label class="plain call-tree-header"
  272. type="function"
  273. crop="end"
  274. value="&performanceUI.table.function;"
  275. tooltiptext="&performanceUI.table.function.tooltip;"/>
  276. </hbox>
  277. <vbox class="call-tree-cells-container" flex="1"/>
  278. </vbox>
  279. <splitter class="devtools-side-splitter"/>
  280. <!-- Optimizations Panel -->
  281. <vbox id="jit-optimizations-view"
  282. class="hidden">
  283. </vbox>
  284. </hbox>
  285. <!-- JS FlameChart -->
  286. <hbox id="js-flamegraph-view" flex="1">
  287. </hbox>
  288. <!-- Memory Tree -->
  289. <vbox id="memory-calltree-view" flex="1">
  290. <hbox class="call-tree-headers-container">
  291. <label class="plain call-tree-header"
  292. type="self-size"
  293. crop="end"
  294. value="Self Bytes"
  295. tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
  296. <label class="plain call-tree-header"
  297. type="self-size-percentage"
  298. crop="end"
  299. value="Self Bytes %"
  300. tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
  301. <label class="plain call-tree-header"
  302. type="self-count"
  303. crop="end"
  304. value="Self Count"
  305. tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
  306. <label class="plain call-tree-header"
  307. type="self-count-percentage"
  308. crop="end"
  309. value="Self Count %"
  310. tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
  311. <label class="plain call-tree-header"
  312. type="size"
  313. crop="end"
  314. value="Total Size"
  315. tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
  316. <label class="plain call-tree-header"
  317. type="size-percentage"
  318. crop="end"
  319. value="Total Size %"
  320. tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
  321. <label class="plain call-tree-header"
  322. type="count"
  323. crop="end"
  324. value="Total Count"
  325. tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
  326. <label class="plain call-tree-header"
  327. type="count-percentage"
  328. crop="end"
  329. value="Total Count %"
  330. tooltiptext="&performanceUI.table.totalAlloc.tooltip;"/>
  331. <label class="plain call-tree-header"
  332. type="function"
  333. crop="end"
  334. value="&performanceUI.table.function;"/>
  335. </hbox>
  336. <vbox class="call-tree-cells-container" flex="1"/>
  337. </vbox>
  338. <!-- Memory FlameChart -->
  339. <hbox id="memory-flamegraph-view" flex="1"></hbox>
  340. </deck>
  341. </deck>
  342. </vbox>
  343. </deck>
  344. </vbox>
  345. </hbox>
  346. </window>