chrome-devtools-frontend 1.0.944427 → 1.0.944903

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/config/gni/devtools_grd_files.gni +3 -0
  2. package/front_end/core/common/ParsedURL.ts +1 -1
  3. package/front_end/core/host/InspectorFrontendHostAPI.ts +5 -5
  4. package/front_end/core/i18n/locales/en-US.json +3 -15
  5. package/front_end/core/i18n/locales/en-XL.json +15 -27
  6. package/front_end/core/protocol_client/NodeURL.ts +1 -0
  7. package/front_end/core/sdk/CSSStyleSheetHeader.ts +2 -3
  8. package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +2 -3
  9. package/front_end/core/sdk/Cookie.ts +17 -0
  10. package/front_end/core/sdk/CookieModel.ts +1 -0
  11. package/front_end/core/sdk/DebuggerModel.ts +5 -4
  12. package/front_end/core/sdk/NetworkManager.ts +4 -1
  13. package/front_end/core/sdk/NetworkRequest.ts +2 -2
  14. package/front_end/core/sdk/Resource.ts +2 -2
  15. package/front_end/core/sdk/Script.ts +2 -3
  16. package/front_end/models/bindings/BreakpointManager.ts +3 -4
  17. package/front_end/models/bindings/ResourceMapping.ts +1 -2
  18. package/front_end/models/bindings/StylesSourceMapping.ts +1 -2
  19. package/front_end/models/persistence/IsolatedFileSystem.ts +7 -6
  20. package/front_end/models/persistence/IsolatedFileSystemManager.ts +10 -6
  21. package/front_end/models/persistence/PersistenceActions.ts +4 -1
  22. package/front_end/models/persistence/PlatformFileSystem.ts +3 -4
  23. package/front_end/models/text_utils/ContentProvider.ts +1 -2
  24. package/front_end/models/text_utils/StaticContentProvider.ts +2 -3
  25. package/front_end/models/workspace/UISourceCode.ts +2 -2
  26. package/front_end/panels/animation/animationTimeline.css +2 -0
  27. package/front_end/panels/application/ReportingApiView.ts +15 -1
  28. package/front_end/panels/application/components/EndpointsGrid.ts +63 -4
  29. package/front_end/panels/application/components/FrameDetailsView.ts +21 -34
  30. package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +1 -1
  31. package/front_end/panels/sources/DebuggerPlugin.ts +1 -1
  32. package/front_end/panels/sources/NavigatorView.ts +1 -1
  33. package/front_end/panels/sources/UISourceCodeFrame.ts +0 -1
  34. package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +3 -34
  35. package/front_end/panels/timeline/TimelineUIUtils.ts +51 -3
  36. package/front_end/services/window_bounds/WindowBoundsService.ts +27 -0
  37. package/front_end/services/window_bounds/window_bounds.ts +9 -0
  38. package/front_end/third_party/codemirror.next/bundle.ts +1 -1
  39. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  40. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +8 -1
  41. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  42. package/front_end/third_party/codemirror.next/package.json +1 -1
  43. package/front_end/third_party/lit-html/README.chromium +2 -2
  44. package/front_end/third_party/lit-html/package/CHANGELOG.md +216 -28
  45. package/front_end/third_party/lit-html/package/LICENSE +9 -9
  46. package/front_end/third_party/lit-html/package/README.md +12 -162
  47. package/front_end/third_party/lit-html/package/async-directive.d.ts +23 -54
  48. package/front_end/third_party/lit-html/package/async-directive.d.ts.map +1 -1
  49. package/front_end/third_party/lit-html/package/async-directive.js +2 -7
  50. package/front_end/third_party/lit-html/package/async-directive.js.map +1 -1
  51. package/front_end/third_party/lit-html/package/development/async-directive.d.ts +23 -54
  52. package/front_end/third_party/lit-html/package/development/async-directive.d.ts.map +1 -1
  53. package/front_end/third_party/lit-html/package/development/async-directive.js +44 -194
  54. package/front_end/third_party/lit-html/package/development/async-directive.js.map +1 -1
  55. package/front_end/third_party/lit-html/package/development/directive-helpers.d.ts +6 -5
  56. package/front_end/third_party/lit-html/package/development/directive-helpers.d.ts.map +1 -1
  57. package/front_end/third_party/lit-html/package/development/directive-helpers.js +25 -9
  58. package/front_end/third_party/lit-html/package/development/directive-helpers.js.map +1 -1
  59. package/front_end/third_party/lit-html/package/development/directive.d.ts +3 -16
  60. package/front_end/third_party/lit-html/package/development/directive.d.ts.map +1 -1
  61. package/front_end/third_party/lit-html/package/development/directive.js +6 -1
  62. package/front_end/third_party/lit-html/package/development/directive.js.map +1 -1
  63. package/front_end/third_party/lit-html/package/development/directives/async-append.d.ts +7 -14
  64. package/front_end/third_party/lit-html/package/development/directives/async-append.d.ts.map +1 -1
  65. package/front_end/third_party/lit-html/package/development/directives/async-append.js +17 -58
  66. package/front_end/third_party/lit-html/package/development/directives/async-append.js.map +1 -1
  67. package/front_end/third_party/lit-html/package/development/directives/async-replace.d.ts +9 -14
  68. package/front_end/third_party/lit-html/package/development/directives/async-replace.d.ts.map +1 -1
  69. package/front_end/third_party/lit-html/package/development/directives/async-replace.js +57 -37
  70. package/front_end/third_party/lit-html/package/development/directives/async-replace.js.map +1 -1
  71. package/front_end/third_party/lit-html/package/development/directives/cache.d.ts +2 -3
  72. package/front_end/third_party/lit-html/package/development/directives/cache.d.ts.map +1 -1
  73. package/front_end/third_party/lit-html/package/development/directives/cache.js +4 -6
  74. package/front_end/third_party/lit-html/package/development/directives/cache.js.map +1 -1
  75. package/front_end/third_party/lit-html/package/development/directives/class-map.d.ts +2 -2
  76. package/front_end/third_party/lit-html/package/development/directives/class-map.d.ts.map +1 -1
  77. package/front_end/third_party/lit-html/package/development/directives/class-map.js +17 -7
  78. package/front_end/third_party/lit-html/package/development/directives/class-map.js.map +1 -1
  79. package/front_end/third_party/lit-html/package/development/directives/guard.d.ts +3 -2
  80. package/front_end/third_party/lit-html/package/development/directives/guard.d.ts.map +1 -1
  81. package/front_end/third_party/lit-html/package/development/directives/guard.js +3 -2
  82. package/front_end/third_party/lit-html/package/development/directives/guard.js.map +1 -1
  83. package/front_end/third_party/lit-html/package/development/directives/live.d.ts +4 -3
  84. package/front_end/third_party/lit-html/package/development/directives/live.d.ts.map +1 -1
  85. package/front_end/third_party/lit-html/package/development/directives/live.js +5 -7
  86. package/front_end/third_party/lit-html/package/development/directives/live.js.map +1 -1
  87. package/front_end/third_party/lit-html/package/development/directives/private-async-helpers.d.ts +58 -0
  88. package/front_end/third_party/lit-html/package/development/directives/private-async-helpers.d.ts.map +1 -0
  89. package/front_end/third_party/lit-html/package/development/directives/private-async-helpers.js +85 -0
  90. package/front_end/third_party/lit-html/package/development/directives/private-async-helpers.js.map +1 -0
  91. package/front_end/third_party/lit-html/package/development/directives/ref.d.ts +14 -11
  92. package/front_end/third_party/lit-html/package/development/directives/ref.d.ts.map +1 -1
  93. package/front_end/third_party/lit-html/package/development/directives/ref.js +13 -11
  94. package/front_end/third_party/lit-html/package/development/directives/ref.js.map +1 -1
  95. package/front_end/third_party/lit-html/package/development/directives/repeat.d.ts +8 -4
  96. package/front_end/third_party/lit-html/package/development/directives/repeat.d.ts.map +1 -1
  97. package/front_end/third_party/lit-html/package/development/directives/repeat.js +23 -9
  98. package/front_end/third_party/lit-html/package/development/directives/repeat.js.map +1 -1
  99. package/front_end/third_party/lit-html/package/development/directives/style-map.d.ts +1 -2
  100. package/front_end/third_party/lit-html/package/development/directives/style-map.d.ts.map +1 -1
  101. package/front_end/third_party/lit-html/package/development/directives/style-map.js +1 -2
  102. package/front_end/third_party/lit-html/package/development/directives/style-map.js.map +1 -1
  103. package/front_end/third_party/lit-html/package/development/directives/template-content.d.ts +1 -2
  104. package/front_end/third_party/lit-html/package/development/directives/template-content.js +1 -2
  105. package/front_end/third_party/lit-html/package/development/directives/unsafe-html.d.ts +6 -4
  106. package/front_end/third_party/lit-html/package/development/directives/unsafe-html.d.ts.map +1 -1
  107. package/front_end/third_party/lit-html/package/development/directives/unsafe-html.js +7 -5
  108. package/front_end/third_party/lit-html/package/development/directives/unsafe-html.js.map +1 -1
  109. package/front_end/third_party/lit-html/package/development/directives/unsafe-svg.d.ts +4 -1
  110. package/front_end/third_party/lit-html/package/development/directives/unsafe-svg.d.ts.map +1 -1
  111. package/front_end/third_party/lit-html/package/development/directives/unsafe-svg.js +3 -0
  112. package/front_end/third_party/lit-html/package/development/directives/unsafe-svg.js.map +1 -1
  113. package/front_end/third_party/lit-html/package/development/directives/until.d.ts +12 -8
  114. package/front_end/third_party/lit-html/package/development/directives/until.d.ts.map +1 -1
  115. package/front_end/third_party/lit-html/package/development/directives/until.js +63 -23
  116. package/front_end/third_party/lit-html/package/development/directives/until.js.map +1 -1
  117. package/front_end/third_party/lit-html/package/development/experimental-hydrate.d.ts.map +1 -1
  118. package/front_end/third_party/lit-html/package/development/experimental-hydrate.js +9 -8
  119. package/front_end/third_party/lit-html/package/development/experimental-hydrate.js.map +1 -1
  120. package/front_end/third_party/lit-html/package/development/lit-html.d.ts +81 -136
  121. package/front_end/third_party/lit-html/package/development/lit-html.d.ts.map +1 -1
  122. package/front_end/third_party/lit-html/package/development/lit-html.js +249 -76
  123. package/front_end/third_party/lit-html/package/development/lit-html.js.map +1 -1
  124. package/front_end/third_party/lit-html/package/development/polyfill-support.d.ts +1 -41
  125. package/front_end/third_party/lit-html/package/development/polyfill-support.d.ts.map +1 -1
  126. package/front_end/third_party/lit-html/package/development/polyfill-support.js +40 -21
  127. package/front_end/third_party/lit-html/package/development/polyfill-support.js.map +1 -1
  128. package/front_end/third_party/lit-html/package/development/private-ssr-support.d.ts +12 -10
  129. package/front_end/third_party/lit-html/package/development/private-ssr-support.d.ts.map +1 -1
  130. package/front_end/third_party/lit-html/package/development/private-ssr-support.js +11 -3
  131. package/front_end/third_party/lit-html/package/development/private-ssr-support.js.map +1 -1
  132. package/front_end/third_party/lit-html/package/development/static.d.ts.map +1 -1
  133. package/front_end/third_party/lit-html/package/development/static.js +6 -5
  134. package/front_end/third_party/lit-html/package/development/static.js.map +1 -1
  135. package/front_end/third_party/lit-html/package/directive-helpers.d.ts +6 -5
  136. package/front_end/third_party/lit-html/package/directive-helpers.d.ts.map +1 -1
  137. package/front_end/third_party/lit-html/package/directive-helpers.js +2 -2
  138. package/front_end/third_party/lit-html/package/directive-helpers.js.map +1 -1
  139. package/front_end/third_party/lit-html/package/directive.d.ts +3 -16
  140. package/front_end/third_party/lit-html/package/directive.d.ts.map +1 -1
  141. package/front_end/third_party/lit-html/package/directive.js +1 -1
  142. package/front_end/third_party/lit-html/package/directive.js.map +1 -1
  143. package/front_end/third_party/lit-html/package/directives/async-append.d.ts +7 -14
  144. package/front_end/third_party/lit-html/package/directives/async-append.d.ts.map +1 -1
  145. package/front_end/third_party/lit-html/package/directives/async-append.js +2 -6
  146. package/front_end/third_party/lit-html/package/directives/async-append.js.map +1 -1
  147. package/front_end/third_party/lit-html/package/directives/async-replace.d.ts +9 -14
  148. package/front_end/third_party/lit-html/package/directives/async-replace.d.ts.map +1 -1
  149. package/front_end/third_party/lit-html/package/directives/async-replace.js +2 -5
  150. package/front_end/third_party/lit-html/package/directives/async-replace.js.map +1 -1
  151. package/front_end/third_party/lit-html/package/directives/cache.d.ts +2 -3
  152. package/front_end/third_party/lit-html/package/directives/cache.d.ts.map +1 -1
  153. package/front_end/third_party/lit-html/package/directives/cache.js +2 -5
  154. package/front_end/third_party/lit-html/package/directives/cache.js.map +1 -1
  155. package/front_end/third_party/lit-html/package/directives/class-map.d.ts +2 -2
  156. package/front_end/third_party/lit-html/package/directives/class-map.d.ts.map +1 -1
  157. package/front_end/third_party/lit-html/package/directives/class-map.js +2 -4
  158. package/front_end/third_party/lit-html/package/directives/class-map.js.map +1 -1
  159. package/front_end/third_party/lit-html/package/directives/guard.d.ts +3 -2
  160. package/front_end/third_party/lit-html/package/directives/guard.d.ts.map +1 -1
  161. package/front_end/third_party/lit-html/package/directives/guard.js +2 -4
  162. package/front_end/third_party/lit-html/package/directives/guard.js.map +1 -1
  163. package/front_end/third_party/lit-html/package/directives/live.d.ts +4 -3
  164. package/front_end/third_party/lit-html/package/directives/live.d.ts.map +1 -1
  165. package/front_end/third_party/lit-html/package/directives/live.js +1 -4
  166. package/front_end/third_party/lit-html/package/directives/live.js.map +1 -1
  167. package/front_end/third_party/lit-html/package/directives/private-async-helpers.d.ts +58 -0
  168. package/front_end/third_party/lit-html/package/directives/private-async-helpers.d.ts.map +1 -0
  169. package/front_end/third_party/lit-html/package/directives/private-async-helpers.js +7 -0
  170. package/front_end/third_party/lit-html/package/directives/private-async-helpers.js.map +1 -0
  171. package/front_end/third_party/lit-html/package/directives/ref.d.ts +14 -11
  172. package/front_end/third_party/lit-html/package/directives/ref.d.ts.map +1 -1
  173. package/front_end/third_party/lit-html/package/directives/ref.js +2 -5
  174. package/front_end/third_party/lit-html/package/directives/ref.js.map +1 -1
  175. package/front_end/third_party/lit-html/package/directives/repeat.d.ts +8 -4
  176. package/front_end/third_party/lit-html/package/directives/repeat.d.ts.map +1 -1
  177. package/front_end/third_party/lit-html/package/directives/repeat.js +2 -5
  178. package/front_end/third_party/lit-html/package/directives/repeat.js.map +1 -1
  179. package/front_end/third_party/lit-html/package/directives/style-map.d.ts +1 -2
  180. package/front_end/third_party/lit-html/package/directives/style-map.d.ts.map +1 -1
  181. package/front_end/third_party/lit-html/package/directives/style-map.js +2 -4
  182. package/front_end/third_party/lit-html/package/directives/style-map.js.map +1 -1
  183. package/front_end/third_party/lit-html/package/directives/template-content.d.ts +1 -2
  184. package/front_end/third_party/lit-html/package/directives/template-content.js +2 -4
  185. package/front_end/third_party/lit-html/package/directives/template-content.js.map +1 -1
  186. package/front_end/third_party/lit-html/package/directives/unsafe-html.d.ts +6 -4
  187. package/front_end/third_party/lit-html/package/directives/unsafe-html.d.ts.map +1 -1
  188. package/front_end/third_party/lit-html/package/directives/unsafe-html.js +2 -4
  189. package/front_end/third_party/lit-html/package/directives/unsafe-html.js.map +1 -1
  190. package/front_end/third_party/lit-html/package/directives/unsafe-svg.d.ts +4 -1
  191. package/front_end/third_party/lit-html/package/directives/unsafe-svg.d.ts.map +1 -1
  192. package/front_end/third_party/lit-html/package/directives/unsafe-svg.js.map +1 -1
  193. package/front_end/third_party/lit-html/package/directives/until.d.ts +12 -8
  194. package/front_end/third_party/lit-html/package/directives/until.d.ts.map +1 -1
  195. package/front_end/third_party/lit-html/package/directives/until.js +2 -6
  196. package/front_end/third_party/lit-html/package/directives/until.js.map +1 -1
  197. package/front_end/third_party/lit-html/package/experimental-hydrate.d.ts.map +1 -1
  198. package/front_end/third_party/lit-html/package/experimental-hydrate.js +2 -5
  199. package/front_end/third_party/lit-html/package/experimental-hydrate.js.map +1 -1
  200. package/front_end/third_party/lit-html/package/lit-html.d.ts +81 -136
  201. package/front_end/third_party/lit-html/package/lit-html.d.ts.map +1 -1
  202. package/front_end/third_party/lit-html/package/lit-html.js +1 -1
  203. package/front_end/third_party/lit-html/package/lit-html.js.map +1 -1
  204. package/front_end/third_party/lit-html/package/package.json +75 -24
  205. package/front_end/third_party/lit-html/package/polyfill-support.d.ts +1 -41
  206. package/front_end/third_party/lit-html/package/polyfill-support.d.ts.map +1 -1
  207. package/front_end/third_party/lit-html/package/polyfill-support.js +1 -1
  208. package/front_end/third_party/lit-html/package/polyfill-support.js.map +1 -1
  209. package/front_end/third_party/lit-html/package/private-ssr-support.d.ts +12 -10
  210. package/front_end/third_party/lit-html/package/private-ssr-support.d.ts.map +1 -1
  211. package/front_end/third_party/lit-html/package/private-ssr-support.js +2 -2
  212. package/front_end/third_party/lit-html/package/private-ssr-support.js.map +1 -1
  213. package/front_end/third_party/lit-html/package/static.d.ts.map +1 -1
  214. package/front_end/third_party/lit-html/package/static.js +1 -1
  215. package/front_end/third_party/lit-html/package/static.js.map +1 -1
  216. package/front_end/third_party/marked/README.chromium +2 -2
  217. package/front_end/third_party/marked/marked.ts +2 -2
  218. package/front_end/third_party/marked/package/README.md +7 -1
  219. package/front_end/third_party/marked/package/bin/marked.js +214 -0
  220. package/front_end/third_party/marked/package/lib/marked.cjs +2907 -0
  221. package/front_end/third_party/marked/package/lib/marked.esm.d.ts +1 -3
  222. package/front_end/third_party/marked/package/lib/marked.esm.js +627 -586
  223. package/front_end/third_party/marked/package/lib/marked.umd.js +2913 -0
  224. package/front_end/third_party/marked/package/man/marked.1 +5 -24
  225. package/front_end/third_party/marked/package/man/marked.1.txt +21 -31
  226. package/front_end/third_party/marked/package/marked.min.js +1 -1
  227. package/front_end/third_party/marked/package/package.json +41 -32
  228. package/front_end/third_party/marked/package/src/Lexer.js +109 -108
  229. package/front_end/third_party/marked/package/src/Parser.js +38 -15
  230. package/front_end/third_party/marked/package/src/Renderer.js +5 -5
  231. package/front_end/third_party/marked/package/src/Slugger.js +2 -2
  232. package/front_end/third_party/marked/package/src/TextRenderer.js +2 -2
  233. package/front_end/third_party/marked/package/src/Tokenizer.js +215 -190
  234. package/front_end/third_party/marked/package/src/defaults.js +6 -9
  235. package/front_end/third_party/marked/package/src/helpers.js +16 -27
  236. package/front_end/third_party/marked/package/src/marked.js +146 -63
  237. package/front_end/third_party/marked/package/src/rules.js +20 -45
  238. package/front_end/third_party/wasmparser/README.chromium +2 -2
  239. package/front_end/third_party/wasmparser/package/.github/workflows/main.yml +47 -0
  240. package/front_end/third_party/wasmparser/package/CHANGELOG.md +12 -0
  241. package/front_end/third_party/wasmparser/package/dist/cjs/WasmParser.js +53 -53
  242. package/front_end/third_party/wasmparser/package/dist/cjs/WasmParser.js.map +1 -1
  243. package/front_end/third_party/wasmparser/package/dist/esm/WasmParser.js +53 -53
  244. package/front_end/third_party/wasmparser/package/dist/esm/WasmParser.js.map +1 -1
  245. package/front_end/third_party/wasmparser/package/package.json +1 -1
  246. package/front_end/third_party/wasmparser/package/src/WasmParser.ts +53 -53
  247. package/front_end/ui/components/text_editor/TextEditor.ts +29 -0
  248. package/front_end/ui/components/text_editor/config.ts +4 -2
  249. package/front_end/ui/legacy/ViewManager.ts +6 -0
  250. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +20 -0
  251. package/package.json +1 -1
@@ -29,10 +29,9 @@
29
29
  */
30
30
 
31
31
  import type * as Common from '../../core/common/common.js';
32
- import type * as Platform from '../../core/platform/platform.js';
33
32
 
34
33
  export abstract class ContentProvider {
35
- abstract contentURL(): Platform.DevToolsPath.RawPathString;
34
+ abstract contentURL(): string;
36
35
  abstract contentType(): Common.ResourceType.ResourceType;
37
36
  abstract contentEncoded(): Promise<boolean>;
38
37
  abstract requestContent(): Promise<DeferredContent>;
@@ -3,7 +3,6 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import type * as Common from '../../core/common/common.js';
6
- import type * as Platform from '../../core/platform/platform.js';
7
6
 
8
7
  import type {ContentProvider, DeferredContent, SearchMatch} from './ContentProvider.js';
9
8
  import {performSearchInContent} from './TextUtils.js';
@@ -30,8 +29,8 @@ export class StaticContentProvider implements ContentProvider {
30
29
  }
31
30
 
32
31
  // TODO(crbug.com/1253323): Cast to PawPathString will be removed when migration to branded types is complete.
33
- contentURL(): Platform.DevToolsPath.RawPathString {
34
- return this.contentURLInternal as Platform.DevToolsPath.RawPathString;
32
+ contentURL(): string {
33
+ return this.contentURLInternal;
35
34
  }
36
35
 
37
36
  contentType(): Common.ResourceType.ResourceType {
@@ -192,8 +192,8 @@ export class UISourceCode extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
192
192
  }
193
193
 
194
194
  // TODO(crbug.com/1253323): Cast to RawPathString will be removed when migration to branded types is complete.
195
- contentURL(): Platform.DevToolsPath.RawPathString {
196
- return this.url() as Platform.DevToolsPath.RawPathString;
195
+ contentURL(): string {
196
+ return this.url();
197
197
  }
198
198
 
199
199
  contentType(): Common.ResourceType.ResourceType {
@@ -24,6 +24,8 @@
24
24
  margin-bottom: -1px;
25
25
  background-color: var(--color-background-elevation-1);
26
26
  display: flex;
27
+ flex-direction: column;
28
+ justify-content: space-around;
27
29
  align-items: center;
28
30
  flex: 0 0 150px;
29
31
  }
@@ -5,22 +5,36 @@
5
5
  import * as SDK from '../../core/sdk/sdk.js';
6
6
  import * as UI from '../../ui/legacy/legacy.js';
7
7
  import * as ApplicationComponents from './components/components.js';
8
+ import type * as Protocol from '../../generated/protocol.js';
8
9
 
9
10
  import {ReportingApiReportsView} from './ReportingApiReportsView.js';
10
11
 
11
12
  export class ReportingApiView extends UI.SplitWidget.SplitWidget {
13
+ private readonly endpointsGrid = new ApplicationComponents.EndpointsGrid.EndpointsGrid();
14
+ private endpoints: Map<string, Protocol.Network.ReportingApiEndpoint[]>;
15
+
12
16
  constructor() {
13
17
  super(/* isVertical: */ false, /* secondIsSidebar: */ true);
18
+ this.endpoints = new Map();
14
19
  const mainTarget = SDK.TargetManager.TargetManager.instance().mainTarget();
15
20
  const networkManager = mainTarget && mainTarget.model(SDK.NetworkManager.NetworkManager);
16
21
  if (networkManager) {
22
+ networkManager.addEventListener(
23
+ SDK.NetworkManager.Events.ReportingApiEndpointsChangedForOrigin,
24
+ event => this.onEndpointsChangedForOrigin(event.data), this);
25
+
17
26
  const reportingApiReportsView = new ReportingApiReportsView(networkManager);
18
27
  const reportingApiEndpointsView = new UI.Widget.VBox();
19
28
  reportingApiEndpointsView.setMinimumSize(0, 40);
20
- reportingApiEndpointsView.contentElement.appendChild(new ApplicationComponents.EndpointsGrid.EndpointsGrid());
29
+ reportingApiEndpointsView.contentElement.appendChild(this.endpointsGrid);
21
30
  this.setMainWidget(reportingApiReportsView);
22
31
  this.setSidebarWidget(reportingApiEndpointsView);
23
32
  networkManager.enableReportingApi();
24
33
  }
25
34
  }
35
+
36
+ private onEndpointsChangedForOrigin(data: Protocol.Network.ReportingApiEndpointsChangedForOriginEvent): void {
37
+ this.endpoints.set(data.origin, data.endpoints);
38
+ this.endpointsGrid.data = {endpoints: this.endpoints};
39
+ }
26
40
  }
@@ -3,9 +3,12 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as i18n from '../../../core/i18n/i18n.js';
6
+ import * as DataGrid from '../../../ui/components/data_grid/data_grid.js';
6
7
  import * as ComponentHelpers from '../../../ui/components/helpers/helpers.js';
7
8
  import * as LitHtml from '../../../ui/lit-html/lit-html.js';
8
9
 
10
+ import type * as Protocol from '../../../generated/protocol.js';
11
+
9
12
  import reportingApiGridStyles from './reportingApiGrid.css.js';
10
13
 
11
14
  const UIStrings = {
@@ -20,30 +23,86 @@ export const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
20
23
 
21
24
  const {render, html} = LitHtml;
22
25
 
26
+ export interface EndpointsGridData {
27
+ endpoints: Map<string, Protocol.Network.ReportingApiEndpoint[]>;
28
+ }
29
+
23
30
  export class EndpointsGrid extends HTMLElement {
24
31
  static readonly litTagName = LitHtml.literal`devtools-resources-endpoints-grid`;
25
32
 
26
33
  private readonly shadow = this.attachShadow({mode: 'open'});
34
+ private endpoints: Map<string, Protocol.Network.ReportingApiEndpoint[]> = new Map();
27
35
 
28
36
  connectedCallback(): void {
29
37
  this.shadow.adoptedStyleSheets = [reportingApiGridStyles];
30
38
  this.render();
31
39
  }
32
40
 
33
- // TODO(crbug.com/1200732): Display info about currently configured endpoints
41
+ set data(data: EndpointsGridData) {
42
+ this.endpoints = data.endpoints;
43
+ this.render();
44
+ }
45
+
34
46
  private render(): void {
47
+ const endpointsGridData: DataGrid.DataGridController.DataGridControllerData = {
48
+ columns: [
49
+ {
50
+ id: 'origin',
51
+ title: i18n.i18n.lockedString('Origin'),
52
+ widthWeighting: 30,
53
+ hideable: false,
54
+ visible: true,
55
+ },
56
+ {
57
+ id: 'name',
58
+ title: i18n.i18n.lockedString('Name'),
59
+ widthWeighting: 20,
60
+ hideable: false,
61
+ visible: true,
62
+ },
63
+ {
64
+ id: 'url',
65
+ title: i18n.i18n.lockedString('URL'),
66
+ widthWeighting: 30,
67
+ hideable: false,
68
+ visible: true,
69
+ },
70
+ ],
71
+ rows: this.buildReportRows(),
72
+ };
73
+
35
74
  // Disabled until https://crbug.com/1079231 is fixed.
36
75
  // clang-format off
37
76
  render(html`
38
77
  <div class="reporting-container">
39
78
  <div class="reporting-header">${i18n.i18n.lockedString('Endpoints')}</div>
40
- <div class="reporting-placeholder">
41
- <div>${i18nString(UIStrings.noEndpointsToDisplay)}</div>
42
- </div>
79
+ ${this.endpoints.size > 0 ? html`
80
+ <${DataGrid.DataGridController.DataGridController.litTagName} .data=${
81
+ endpointsGridData as DataGrid.DataGridController.DataGridControllerData}>
82
+ </${DataGrid.DataGridController.DataGridController.litTagName}>
83
+ ` : html`
84
+ <div class="reporting-placeholder">
85
+ <div>${i18nString(UIStrings.noEndpointsToDisplay)}</div>
86
+ </div>
87
+ `}
43
88
  </div>
44
89
  `, this.shadow);
45
90
  // clang-format on
46
91
  }
92
+
93
+ private buildReportRows(): DataGrid.DataGridUtils.Row[] {
94
+ return Array.from(this.endpoints)
95
+ .map(([origin, endpointArray]) => endpointArray.map(endpoint => {
96
+ return {
97
+ cells: [
98
+ {columnId: 'origin', value: origin},
99
+ {columnId: 'name', value: endpoint.groupName},
100
+ {columnId: 'url', value: endpoint.url},
101
+ ],
102
+ };
103
+ }))
104
+ .flat();
105
+ }
47
106
  }
48
107
 
49
108
  ComponentHelpers.CustomElements.defineComponent('devtools-resources-endpoints-grid', EndpointsGrid);
@@ -47,10 +47,6 @@ const UIStrings = {
47
47
  */
48
48
  document: 'Document',
49
49
  /**
50
- *@description Text for web URLs
51
- */
52
- url: 'URL',
53
- /**
54
50
  *@description Title for a link to the Sources panel
55
51
  */
56
52
  clickToRevealInSourcesPanel: 'Click to reveal in Sources panel',
@@ -67,10 +63,6 @@ const UIStrings = {
67
63
  */
68
64
  clickToRevealInNetworkPanelMight: 'Click to reveal in Network panel (might require page reload)',
69
65
  /**
70
- *@description Text for the origin of something
71
- */
72
- origin: 'Origin',
73
- /**
74
66
  *@description Related node label in Timeline UIUtils of the Performance panel
75
67
  */
76
68
  ownerElement: 'Owner Element',
@@ -117,11 +109,11 @@ const UIStrings = {
117
109
  /**
118
110
  *@description Row title for in the Frame Details view
119
111
  */
120
- crossoriginIsolated: 'Cross-Origin Isolated',
112
+ crossoriginIsolated: '`Cross-Origin` Isolated',
121
113
  /**
122
114
  *@description Explanatory text in the Frame Details view
123
115
  */
124
- localhostIsAlwaysASecureContext: 'Localhost is always a secure context',
116
+ localhostIsAlwaysASecureContext: '`Localhost` is always a secure context',
125
117
  /**
126
118
  *@description Explanatory text in the Frame Details view
127
119
  */
@@ -131,14 +123,6 @@ const UIStrings = {
131
123
  */
132
124
  theFramesSchemeIsInsecure: 'The frame\'s scheme is insecure',
133
125
  /**
134
- *@description Row title in the Frame Details view
135
- */
136
- crossoriginEmbedderPolicy: 'Cross-Origin Embedder Policy',
137
- /**
138
- *@description Row title in the Frame Details view
139
- */
140
- crossoriginOpenerPolicy: 'Cross-Origin Opener Policy',
141
- /**
142
126
  *@description This label specifies the server endpoints to which the server is reporting errors
143
127
  *and warnings through the Report-to API. Following this label will be the URL of the server.
144
128
  */
@@ -150,7 +134,8 @@ const UIStrings = {
150
134
  /**
151
135
  *@description Explanatory text in the Frame Details view for the API availability section
152
136
  */
153
- availabilityOfCertainApisDepends: 'Availability of certain APIs depends on the document being cross-origin isolated.',
137
+ availabilityOfCertainApisDepends:
138
+ 'Availability of certain APIs depends on the document being `cross-origin` isolated.',
154
139
  /**
155
140
  *@description Description of the SharedArrayBuffer status
156
141
  */
@@ -167,20 +152,20 @@ const UIStrings = {
167
152
  *@description Tooltip for the SharedArrayBuffer availability status
168
153
  */
169
154
  sharedarraybufferConstructorIs:
170
- 'SharedArrayBuffer constructor is available and SABs can be transferred via postMessage',
155
+ '`SharedArrayBuffer` constructor is available and `SABs` can be transferred via `postMessage`',
171
156
  /**
172
157
  *@description Tooltip for the SharedArrayBuffer availability status
173
158
  */
174
159
  sharedarraybufferConstructorIsAvailable:
175
- 'SharedArrayBuffer constructor is available but SABs cannot be transferred via postMessage',
160
+ '`SharedArrayBuffer` constructor is available but `SABs` cannot be transferred via `postMessage`',
176
161
  /**
177
162
  *@description Explanation for the SharedArrayBuffer availability status
178
163
  */
179
- willRequireCrossoriginIsolated: '⚠️ will require cross-origin isolated context in the future',
164
+ willRequireCrossoriginIsolated: '⚠️ will require `cross-origin` isolated context in the future',
180
165
  /**
181
166
  *@description Explanation for the SharedArrayBuffer availability status
182
167
  */
183
- requiresCrossoriginIsolated: 'requires cross-origin isolated context',
168
+ requiresCrossoriginIsolated: 'requires `cross-origin` isolated context',
184
169
  /**
185
170
  *@description Explanation for the SharedArrayBuffer availability status in case the transfer of a SAB requires the
186
171
  * permission policy `cross-origin-isolated` to be enabled (e.g. because the message refers to the situation in an iframe).
@@ -194,11 +179,12 @@ const UIStrings = {
194
179
  /**
195
180
  *@description Tooltip for the Measure Memory availability status
196
181
  */
197
- thePerformanceAPI: 'The performance.measureUserAgentSpecificMemory() API is available',
182
+ thePerformanceAPI: 'The `performance.measureUserAgentSpecificMemory()` API is available',
198
183
  /**
199
184
  *@description Tooltip for the Measure Memory availability status
200
185
  */
201
- thePerformancemeasureuseragentspecificmemory: 'The performance.measureUserAgentSpecificMemory() API is not available',
186
+ thePerformancemeasureuseragentspecificmemory:
187
+ 'The `performance.measureUserAgentSpecificMemory()` API is not available',
202
188
  /**
203
189
  *@description Entry in the API availability section of the frame details view
204
190
  */
@@ -211,12 +197,13 @@ const UIStrings = {
211
197
  *@description Label for a stack trace. If a frame is created programmatically (i.e. via JavaScript), there is a
212
198
  * stack trace for the line of code which caused the creation of the iframe. This is the stack trace we are showing here.
213
199
  */
214
- creationStackTrace: 'Frame Creation Stack Trace',
200
+ creationStackTrace: 'Frame Creation `Stack Trace`',
215
201
  /**
216
202
  *@description Tooltip for 'Frame Creation Stack Trace' explaining that the stack
217
203
  *trace shows where in the code the frame has been created programmatically
218
204
  */
219
- creationStackTraceExplanation: 'This frame was created programmatically. The stack trace shows where this happened.',
205
+ creationStackTraceExplanation:
206
+ 'This frame was created programmatically. The `stack trace` shows where this happened.',
220
207
  /**
221
208
  *@description Text descripting why a frame has been indentified as an advertisement.
222
209
  */
@@ -230,11 +217,11 @@ const UIStrings = {
230
217
  *@description Text descripting why a frame has been indentified as an advertisement.
231
218
  */
232
219
  createdByAdScriptExplanation:
233
- 'There was an ad script in the (async) stack when this frame was created. Examining the creation stack trace of this frame might provide more insight.',
220
+ 'There was an ad script in the `(async) stack` when this frame was created. Examining the creation `stack trace` of this frame might provide more insight.',
234
221
  /**
235
222
  *@description Label for a list of origin trials that associated with at least one token.
236
223
  */
237
- originTrials: 'Origin Trials',
224
+ // originTrials: 'Origin Trials',
238
225
  };
239
226
  const str_ = i18n.i18n.registerUIStrings('panels/application/components/FrameDetailsView.ts', UIStrings);
240
227
  const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
@@ -330,7 +317,7 @@ export class FrameDetailsReportView extends HTMLElement {
330
317
 
331
318
  return LitHtml.html`
332
319
  <${ReportView.ReportView.ReportSectionHeader.litTagName}>
333
- ${i18nString(UIStrings.originTrials)}
320
+ ${i18n.i18n.lockedString('Origin Trials')}
334
321
  <${IconButton.IconButton.IconButton.litTagName} class="inline-button" .data="${{
335
322
  clickHandler: refreshOriginTrials,
336
323
  groups: [
@@ -356,7 +343,7 @@ export class FrameDetailsReportView extends HTMLElement {
356
343
  return LitHtml.html`
357
344
  <${ReportView.ReportView.ReportSectionHeader.litTagName}>${i18nString(UIStrings.document)}</${
358
345
  ReportView.ReportView.ReportSectionHeader.litTagName}>
359
- <${ReportView.ReportView.ReportKey.litTagName}>${i18nString(UIStrings.url)}</${
346
+ <${ReportView.ReportView.ReportKey.litTagName}>${i18n.i18n.lockedString('URL')}</${
360
347
  ReportView.ReportView.ReportKey.litTagName}>
361
348
  <${ReportView.ReportView.ReportValue.litTagName}>
362
349
  <div class="inline-items">
@@ -462,7 +449,7 @@ export class FrameDetailsReportView extends HTMLElement {
462
449
  private maybeRenderOrigin(): LitHtml.TemplateResult|{} {
463
450
  if (this.frame && this.frame.securityOrigin && this.frame.securityOrigin !== '://') {
464
451
  return LitHtml.html`
465
- <${ReportView.ReportView.ReportKey.litTagName}>${i18nString(UIStrings.origin)}</${
452
+ <${ReportView.ReportView.ReportKey.litTagName}>${i18n.i18n.lockedString('Origin')}</${
466
453
  ReportView.ReportView.ReportKey.litTagName}>
467
454
  <${ReportView.ReportView.ReportValue.litTagName}>
468
455
  <div class="text-ellipsis" title=${this.frame.securityOrigin}>${this.frame.securityOrigin}</div>
@@ -622,11 +609,11 @@ export class FrameDetailsReportView extends HTMLElement {
622
609
  return LitHtml.html`
623
610
  ${
624
611
  this.maybeRenderCrossOriginStatus(
625
- info.coep, i18nString(UIStrings.crossoriginEmbedderPolicy),
612
+ info.coep, i18n.i18n.lockedString('Cross-Origin Embedder Policy (COEP)'),
626
613
  Protocol.Network.CrossOriginEmbedderPolicyValue.None)}
627
614
  ${
628
615
  this.maybeRenderCrossOriginStatus(
629
- info.coop, i18nString(UIStrings.crossoriginOpenerPolicy),
616
+ info.coop, i18n.i18n.lockedString('Cross-Origin Opener Policy (COOP)'),
630
617
  Protocol.Network.CrossOriginOpenerPolicyValue.UnsafeNone)}
631
618
  `;
632
619
  }
@@ -41,7 +41,7 @@ export class SnippetFileSystem extends Persistence.PlatformFileSystem.PlatformFi
41
41
  private readonly snippetsSetting: Common.Settings.Setting<Snippet[]>;
42
42
  constructor() {
43
43
  // TODO(crbug.com/1253323): Cast to UrlString will be removed when migration to branded types is complete.
44
- super('snippet://' as Platform.DevToolsPath.UrlString, 'snippets');
44
+ super('snippet://', 'snippets');
45
45
  this.lastSnippetIdentifierSetting =
46
46
  Common.Settings.Settings.instance().createSetting('scriptSnippets_lastIdentifier', 0);
47
47
  this.snippetsSetting = Common.Settings.Settings.instance().createSetting('scriptSnippets', []);
@@ -702,8 +702,8 @@ export class DebuggerPlugin extends Plugin {
702
702
  if (this.popoverHelper.isPopoverVisible()) {
703
703
  this.popoverHelper.hidePopover();
704
704
  event.consume();
705
+ return true;
705
706
  }
706
- return true;
707
707
  }
708
708
  if (ctrlDown && this.executionLocation) {
709
709
  this.setControlDown(true);
@@ -851,7 +851,7 @@ export class NavigatorView extends UI.Widget.VBox implements SDK.TargetManager.O
851
851
  // TODO(crbug.com/1253323): Cast to RawPathString will be removed when migration to branded types is complete.
852
852
  const folderPath = Common.ParsedURL.ParsedURL.capFilePrefix(
853
853
  Persistence.FileSystemWorkspaceBinding.FileSystemWorkspaceBinding.completeURL(project, path) as
854
- Platform.DevToolsPath.RawPathString,
854
+ Platform.DevToolsPath.UrlString,
855
855
  Host.Platform.isWin());
856
856
  contextMenu.revealSection().appendItem(
857
857
  i18nString(UIStrings.openFolder),
@@ -380,7 +380,6 @@ export class UISourceCodeFrame extends
380
380
  const location = this.editorLocationToUILocation(lineNumber, columnNumber);
381
381
  contextMenu.appendApplicableItems(
382
382
  new Workspace.UISourceCode.UILocation(this.uiSourceCodeInternal, location.lineNumber, location.columnNumber));
383
- contextMenu.appendApplicableItems(this);
384
383
  for (const plugin of this.plugins) {
385
384
  plugin.populateTextAreaContextMenu(contextMenu, lineNumber, columnNumber);
386
385
  }
@@ -46,7 +46,7 @@ import type {PerformanceModel} from './PerformanceModel.js';
46
46
  import {FlameChartStyle, Selection, TimelineFlameChartMarker} from './TimelineFlameChartView.js';
47
47
  import {TimelineSelection} from './TimelinePanel.js';
48
48
  import type {TimelineCategory} from './TimelineUIUtils.js';
49
- import {TimelineUIUtils} from './TimelineUIUtils.js';
49
+ import {TimelineUIUtils, assignLayoutShiftsToClusters} from './TimelineUIUtils.js';
50
50
 
51
51
  const UIStrings = {
52
52
  /**
@@ -768,7 +768,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
768
768
 
769
769
  const metricEvents: SDK.TracingModel.Event[] = [];
770
770
  const lcpEvents = [];
771
- const layoutShifts = [];
771
+ const layoutShifts: SDK.TracingModel.Event[] = [];
772
772
  const timelineModel = this.performanceModel.timelineModel();
773
773
  for (const track of this.model.tracks()) {
774
774
  for (const event of track.events) {
@@ -807,38 +807,7 @@ export class TimelineFlameChartDataProvider extends Common.ObjectWrapper.ObjectW
807
807
  }
808
808
 
809
809
  if (layoutShifts.length) {
810
- const gapTimeInMs = 1000;
811
- const limitTimeInMs = 5000;
812
- let firstTimestamp = Number.NEGATIVE_INFINITY;
813
- let previousTimestamp = Number.NEGATIVE_INFINITY;
814
- let maxScore = 0;
815
- let currentClusterId = 1;
816
- let currentClusterScore = 0;
817
- let currentCluster = new Set<SDK.TracingModel.Event>();
818
-
819
- for (const e of layoutShifts) {
820
- if (e.args['data']['had_recent_input'] || e.args['data']['weighted_score_delta'] === undefined) {
821
- continue;
822
- }
823
-
824
- if (e.startTime - firstTimestamp > limitTimeInMs || e.startTime - previousTimestamp > gapTimeInMs) {
825
- firstTimestamp = e.startTime;
826
-
827
- for (const layoutShift of currentCluster) {
828
- layoutShift.args['data']['_current_cluster_score'] = currentClusterScore;
829
- layoutShift.args['data']['_current_cluster_id'] = currentClusterId;
830
- }
831
-
832
- currentClusterId += 1;
833
- currentClusterScore = 0;
834
- currentCluster = new Set();
835
- }
836
-
837
- previousTimestamp = e.startTime;
838
- currentClusterScore += e.args['data']['weighted_score_delta'];
839
- currentCluster.add(e);
840
- maxScore = Math.max(maxScore, currentClusterScore);
841
- }
810
+ assignLayoutShiftsToClusters(layoutShifts);
842
811
  }
843
812
 
844
813
  metricEvents.sort(SDK.TracingModel.Event.compareStartTime);
@@ -2421,9 +2421,13 @@ export class TimelineUIUtils {
2421
2421
  contentHelper.appendTextRow(i18nString(UIStrings.score), eventData['score'].toPrecision(4));
2422
2422
  contentHelper.appendTextRow(
2423
2423
  i18nString(UIStrings.cumulativeScore), eventData['cumulative_score'].toPrecision(4));
2424
- contentHelper.appendTextRow(i18nString(UIStrings.currentClusterId), eventData['_current_cluster_id']);
2425
- contentHelper.appendTextRow(
2426
- i18nString(UIStrings.currentClusterScore), eventData['_current_cluster_score'].toPrecision(4));
2424
+ if ('_current_cluster_id' in eventData) {
2425
+ contentHelper.appendTextRow(i18nString(UIStrings.currentClusterId), eventData['_current_cluster_id']);
2426
+ }
2427
+ if ('_current_cluster_score' in eventData) {
2428
+ contentHelper.appendTextRow(
2429
+ i18nString(UIStrings.currentClusterScore), eventData['_current_cluster_score'].toPrecision(4));
2430
+ }
2427
2431
  contentHelper.appendTextRow(
2428
2432
  i18nString(UIStrings.hadRecentInput),
2429
2433
  eventData['had_recent_input'] ? i18nString(UIStrings.yes) : i18nString(UIStrings.no));
@@ -3783,3 +3787,47 @@ export interface TimelineMarkerStyle {
3783
3787
  tall: boolean;
3784
3788
  lowPriority: boolean;
3785
3789
  }
3790
+
3791
+ export function assignLayoutShiftsToClusters(layoutShifts: readonly SDK.TracingModel.Event[]): void {
3792
+ const gapTimeInMs = 1000;
3793
+ const limitTimeInMs = 5000;
3794
+ let firstTimestamp = Number.NEGATIVE_INFINITY;
3795
+ let previousTimestamp = Number.NEGATIVE_INFINITY;
3796
+ let currentClusterId = 0;
3797
+ let currentClusterScore = 0;
3798
+ let currentCluster = new Set<SDK.TracingModel.Event>();
3799
+
3800
+ for (const event of layoutShifts) {
3801
+ if (event.args['data']['had_recent_input'] || event.args['data']['weighted_score_delta'] === undefined) {
3802
+ continue;
3803
+ }
3804
+
3805
+ if (event.startTime - firstTimestamp > limitTimeInMs || event.startTime - previousTimestamp > gapTimeInMs) {
3806
+ // This means the event does not fit into the current session/cluster, so we need to start a new cluster.
3807
+ firstTimestamp = event.startTime;
3808
+
3809
+ // Update all the layout shifts we found in this cluster to associate them with the cluster.
3810
+ for (const layoutShift of currentCluster) {
3811
+ layoutShift.args['data']['_current_cluster_score'] = currentClusterScore;
3812
+ layoutShift.args['data']['_current_cluster_id'] = currentClusterId;
3813
+ }
3814
+
3815
+ // Increment the cluster ID and reset the data.
3816
+ currentClusterId += 1;
3817
+ currentClusterScore = 0;
3818
+ currentCluster = new Set();
3819
+ }
3820
+
3821
+ // Store the timestamp of the previous layout shift.
3822
+ previousTimestamp = event.startTime;
3823
+ // Update the score of the current cluster and store this event in that cluster
3824
+ currentClusterScore += event.args['data']['weighted_score_delta'];
3825
+ currentCluster.add(event);
3826
+ }
3827
+
3828
+ // The last cluster we find may not get closed out - so if not, update all the shifts that we associate with it.
3829
+ for (const layoutShift of currentCluster) {
3830
+ layoutShift.args['data']['_current_cluster_score'] = currentClusterScore;
3831
+ layoutShift.args['data']['_current_cluster_id'] = currentClusterId;
3832
+ }
3833
+ }
@@ -0,0 +1,27 @@
1
+ // Copyright 2021 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
+ import * as Legacy from '../../ui/legacy/legacy.js';
6
+
7
+ export interface WindowBoundsService {
8
+ getDevToolsBoundingElement(): HTMLElement;
9
+ }
10
+
11
+ let windowBoundsServiceImplInstance: WindowBoundsServiceImpl;
12
+ export class WindowBoundsServiceImpl implements WindowBoundsService {
13
+ static instance(opts: {
14
+ forceNew: boolean|null,
15
+ } = {forceNew: null}): WindowBoundsServiceImpl {
16
+ const {forceNew} = opts;
17
+ if (!windowBoundsServiceImplInstance || forceNew) {
18
+ windowBoundsServiceImplInstance = new WindowBoundsServiceImpl();
19
+ }
20
+
21
+ return windowBoundsServiceImplInstance;
22
+ }
23
+
24
+ getDevToolsBoundingElement(): HTMLElement {
25
+ return Legacy.InspectorView.InspectorView.maybeGetInspectorViewInstance()?.element || document.body;
26
+ }
27
+ }
@@ -0,0 +1,9 @@
1
+ // Copyright 2021 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
+ import * as WindowBoundsService from './WindowBoundsService.js';
6
+
7
+ export {
8
+ WindowBoundsService,
9
+ };
@@ -39,7 +39,7 @@ export {
39
39
  } from '@codemirror/state';
40
40
  export {StreamLanguage, StreamParser, StringStream} from '@codemirror/stream-parser';
41
41
  export {Line, Text, TextIterator} from '@codemirror/text';
42
- export {showTooltip, Tooltip, tooltips, TooltipView} from '@codemirror/tooltip';
42
+ export { repositionTooltips,showTooltip, Tooltip, tooltips, TooltipView} from '@codemirror/tooltip';
43
43
  export {
44
44
  Command, Decoration, DecorationSet, drawSelection, EditorView,
45
45
  highlightSpecialChars, KeyBinding, keymap, MatchDecorator, placeholder,