chrome-devtools-frontend 1.0.973446 → 1.0.974575

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 (263) hide show
  1. package/config/gni/devtools_grd_files.gni +2 -0
  2. package/config/gni/devtools_image_files.gni +2 -0
  3. package/front_end/Images/src/triangle-collapsed.svg +1 -0
  4. package/front_end/Images/src/triangle-expanded.svg +1 -0
  5. package/front_end/core/common/ParsedURL.ts +9 -9
  6. package/front_end/core/i18n/locales/af.json +74 -29
  7. package/front_end/core/i18n/locales/am.json +74 -29
  8. package/front_end/core/i18n/locales/ar.json +74 -29
  9. package/front_end/core/i18n/locales/as.json +74 -29
  10. package/front_end/core/i18n/locales/az.json +74 -29
  11. package/front_end/core/i18n/locales/be.json +74 -29
  12. package/front_end/core/i18n/locales/bg.json +74 -29
  13. package/front_end/core/i18n/locales/bn.json +74 -29
  14. package/front_end/core/i18n/locales/bs.json +75 -30
  15. package/front_end/core/i18n/locales/ca.json +74 -29
  16. package/front_end/core/i18n/locales/cs.json +74 -29
  17. package/front_end/core/i18n/locales/cy.json +74 -29
  18. package/front_end/core/i18n/locales/da.json +74 -29
  19. package/front_end/core/i18n/locales/de.json +76 -31
  20. package/front_end/core/i18n/locales/el.json +76 -31
  21. package/front_end/core/i18n/locales/en-GB.json +74 -29
  22. package/front_end/core/i18n/locales/es-419.json +74 -29
  23. package/front_end/core/i18n/locales/es.json +74 -29
  24. package/front_end/core/i18n/locales/et.json +74 -29
  25. package/front_end/core/i18n/locales/eu.json +76 -31
  26. package/front_end/core/i18n/locales/fa.json +74 -29
  27. package/front_end/core/i18n/locales/fi.json +75 -30
  28. package/front_end/core/i18n/locales/fil.json +74 -29
  29. package/front_end/core/i18n/locales/fr-CA.json +74 -29
  30. package/front_end/core/i18n/locales/fr.json +74 -29
  31. package/front_end/core/i18n/locales/gl.json +81 -36
  32. package/front_end/core/i18n/locales/gu.json +74 -29
  33. package/front_end/core/i18n/locales/he.json +74 -29
  34. package/front_end/core/i18n/locales/hi.json +74 -29
  35. package/front_end/core/i18n/locales/hr.json +74 -29
  36. package/front_end/core/i18n/locales/hu.json +74 -29
  37. package/front_end/core/i18n/locales/hy.json +74 -29
  38. package/front_end/core/i18n/locales/id.json +74 -29
  39. package/front_end/core/i18n/locales/is.json +74 -29
  40. package/front_end/core/i18n/locales/it.json +74 -29
  41. package/front_end/core/i18n/locales/ja.json +74 -29
  42. package/front_end/core/i18n/locales/ka.json +74 -29
  43. package/front_end/core/i18n/locales/kk.json +74 -29
  44. package/front_end/core/i18n/locales/km.json +74 -29
  45. package/front_end/core/i18n/locales/kn.json +74 -29
  46. package/front_end/core/i18n/locales/ko.json +74 -29
  47. package/front_end/core/i18n/locales/ky.json +74 -29
  48. package/front_end/core/i18n/locales/lo.json +74 -29
  49. package/front_end/core/i18n/locales/lt.json +74 -29
  50. package/front_end/core/i18n/locales/lv.json +74 -29
  51. package/front_end/core/i18n/locales/mk.json +75 -30
  52. package/front_end/core/i18n/locales/ml.json +74 -29
  53. package/front_end/core/i18n/locales/mn.json +74 -29
  54. package/front_end/core/i18n/locales/mr.json +74 -29
  55. package/front_end/core/i18n/locales/ms.json +74 -29
  56. package/front_end/core/i18n/locales/my.json +74 -29
  57. package/front_end/core/i18n/locales/ne.json +74 -29
  58. package/front_end/core/i18n/locales/nl.json +74 -29
  59. package/front_end/core/i18n/locales/no.json +74 -29
  60. package/front_end/core/i18n/locales/or.json +75 -30
  61. package/front_end/core/i18n/locales/pa.json +74 -29
  62. package/front_end/core/i18n/locales/pl.json +74 -29
  63. package/front_end/core/i18n/locales/pt-PT.json +74 -29
  64. package/front_end/core/i18n/locales/pt.json +74 -29
  65. package/front_end/core/i18n/locales/ro.json +74 -29
  66. package/front_end/core/i18n/locales/ru.json +78 -33
  67. package/front_end/core/i18n/locales/si.json +74 -29
  68. package/front_end/core/i18n/locales/sk.json +74 -29
  69. package/front_end/core/i18n/locales/sl.json +74 -29
  70. package/front_end/core/i18n/locales/sq.json +74 -29
  71. package/front_end/core/i18n/locales/sr-Latn.json +74 -29
  72. package/front_end/core/i18n/locales/sr.json +74 -29
  73. package/front_end/core/i18n/locales/sv.json +74 -29
  74. package/front_end/core/i18n/locales/sw.json +74 -29
  75. package/front_end/core/i18n/locales/ta.json +74 -29
  76. package/front_end/core/i18n/locales/te.json +75 -30
  77. package/front_end/core/i18n/locales/th.json +74 -29
  78. package/front_end/core/i18n/locales/tr.json +74 -29
  79. package/front_end/core/i18n/locales/uk.json +74 -29
  80. package/front_end/core/i18n/locales/ur.json +74 -29
  81. package/front_end/core/i18n/locales/uz.json +74 -29
  82. package/front_end/core/i18n/locales/vi.json +74 -29
  83. package/front_end/core/i18n/locales/zh-HK.json +74 -29
  84. package/front_end/core/i18n/locales/zh-TW.json +74 -29
  85. package/front_end/core/i18n/locales/zh.json +74 -29
  86. package/front_end/core/i18n/locales/zu.json +74 -29
  87. package/front_end/core/sdk/DOMModel.ts +7 -7
  88. package/front_end/core/sdk/RemoteObject.ts +10 -2
  89. package/front_end/core/sdk/ResourceTreeModel.ts +1 -1
  90. package/front_end/core/sdk/SourceMap.ts +45 -38
  91. package/front_end/core/sdk/SourceMapManager.ts +2 -2
  92. package/front_end/core/sdk/Target.ts +5 -4
  93. package/front_end/entrypoints/node_app/NodeMain.ts +2 -1
  94. package/front_end/generated/InspectorBackendCommands.js +11 -9
  95. package/front_end/generated/protocol-mapping.d.ts +13 -0
  96. package/front_end/generated/protocol-proxy-api.d.ts +15 -0
  97. package/front_end/generated/protocol.ts +65 -9
  98. package/front_end/models/bindings/CompilerScriptMapping.ts +3 -2
  99. package/front_end/models/bindings/SASSSourceMapping.ts +1 -1
  100. package/front_end/models/formatter/SourceFormatter.ts +1 -1
  101. package/front_end/models/javascript_metadata/NativeFunctions.js +87 -19
  102. package/front_end/models/text_utils/StaticContentProvider.ts +4 -4
  103. package/front_end/models/workspace/UISourceCode.ts +8 -1
  104. package/front_end/panels/application/AppManifestView.ts +10 -4
  105. package/front_end/panels/application/DOMStorageItemsView.ts +2 -1
  106. package/front_end/panels/application/InterestGroupTreeElement.ts +3 -0
  107. package/front_end/panels/application/components/InterestGroupAccessGrid.ts +11 -0
  108. package/front_end/panels/console/ConsolePrompt.ts +14 -1
  109. package/front_end/panels/console/ErrorStackParser.ts +5 -1
  110. package/front_end/panels/elements/StylesSidebarPane.ts +2 -1
  111. package/front_end/panels/network/BinaryResourceView.ts +4 -1
  112. package/front_end/panels/network/RequestTimingView.ts +12 -2
  113. package/front_end/panels/network/ResourceWebSocketFrameView.ts +3 -2
  114. package/front_end/panels/sources/SourcesView.ts +51 -0
  115. package/front_end/third_party/puppeteer/package/README.md +15 -22
  116. package/front_end/third_party/puppeteer/package/cjs-entry-core.js +1 -1
  117. package/front_end/third_party/puppeteer/package/cjs-entry.js +1 -1
  118. package/front_end/third_party/puppeteer/package/install.js +2 -2
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.d.ts +2 -2
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.d.ts.map +1 -1
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.js +46 -13
  122. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Browser.js.map +1 -1
  123. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.d.ts.map +1 -1
  124. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +1 -1
  125. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
  126. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.d.ts +3 -3
  127. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.d.ts.map +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.js +11 -7
  129. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Connection.js.map +1 -1
  130. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectionTransport.d.ts +2 -2
  131. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectionTransport.d.ts.map +1 -1
  132. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Coverage.d.ts.map +1 -1
  133. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Coverage.js.map +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.d.ts.map +1 -1
  135. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.js +3 -1
  136. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DOMWorld.js.map +1 -1
  137. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DeviceDescriptors.d.ts.map +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DeviceDescriptors.js +336 -0
  139. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/DeviceDescriptors.js.map +1 -1
  140. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
  141. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +4 -0
  142. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
  143. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.js +2 -1
  144. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/EventEmitter.js.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ExecutionContext.d.ts +1 -1
  146. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ExecutionContext.d.ts.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.d.ts +9 -0
  148. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.d.ts.map +1 -1
  149. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.js +11 -0
  150. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/FrameManager.js.map +1 -1
  151. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.d.ts +5 -0
  152. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  153. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.js +7 -0
  154. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/HTTPResponse.js.map +1 -1
  155. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/JSHandle.js +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Page.js.map +1 -1
  157. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Puppeteer.d.ts +1 -1
  158. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WebWorker.d.ts +1 -1
  159. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WebWorker.d.ts.map +1 -1
  160. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/fetch.js +1 -1
  161. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/fetch.js.map +1 -1
  162. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.d.ts +3 -3
  163. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.d.ts.map +1 -1
  164. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.js +13 -6
  165. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/helper.js.map +1 -1
  166. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-node.d.ts.map +1 -1
  167. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-node.js +16 -5
  168. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/initialize-node.js.map +1 -1
  169. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.js +25 -4
  171. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserRunner.js.map +1 -1
  172. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.d.ts +5 -4
  173. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.d.ts.map +1 -1
  174. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.js +35 -21
  175. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Launcher.js.map +1 -1
  176. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.d.ts +5 -5
  177. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.d.ts.map +1 -1
  178. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.js +3 -0
  179. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/Puppeteer.js.map +1 -1
  180. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.d.ts.map +1 -1
  181. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.js +12 -6
  182. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/install.js.map +1 -1
  183. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +1 -1
  184. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts +2 -2
  185. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.d.ts.map +1 -1
  186. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.js +46 -13
  187. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Browser.js.map +1 -1
  188. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.d.ts.map +1 -1
  189. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +1 -1
  190. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
  191. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts +3 -3
  192. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.d.ts.map +1 -1
  193. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.js +11 -7
  194. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Connection.js.map +1 -1
  195. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectionTransport.d.ts +2 -2
  196. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectionTransport.d.ts.map +1 -1
  197. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.d.ts.map +1 -1
  198. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Coverage.js.map +1 -1
  199. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.d.ts.map +1 -1
  200. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.js +3 -1
  201. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DOMWorld.js.map +1 -1
  202. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.d.ts.map +1 -1
  203. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.js +336 -0
  204. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/DeviceDescriptors.js.map +1 -1
  205. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
  206. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +4 -0
  207. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
  208. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.js +2 -1
  209. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/EventEmitter.js.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.d.ts +1 -1
  211. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ExecutionContext.d.ts.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts +9 -0
  213. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.d.ts.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.js +11 -0
  215. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/FrameManager.js.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts +5 -0
  217. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.d.ts.map +1 -1
  218. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.js +7 -0
  219. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/HTTPResponse.js.map +1 -1
  220. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/JSHandle.js +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Page.js.map +1 -1
  222. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Puppeteer.d.ts +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.d.ts +1 -1
  224. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WebWorker.d.ts.map +1 -1
  225. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.js +1 -1
  226. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/fetch.js.map +1 -1
  227. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.d.ts +3 -3
  228. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.d.ts.map +1 -1
  229. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.js +13 -6
  230. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/helper.js.map +1 -1
  231. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.d.ts.map +1 -1
  232. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.js +16 -2
  233. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/initialize-node.js.map +1 -1
  234. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.d.ts.map +1 -1
  235. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.js +25 -4
  236. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserRunner.js.map +1 -1
  237. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts +5 -4
  238. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.d.ts.map +1 -1
  239. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js +35 -21
  240. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Launcher.js.map +1 -1
  241. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.d.ts +5 -5
  242. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.d.ts.map +1 -1
  243. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.js +3 -0
  244. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/Puppeteer.js.map +1 -1
  245. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/install.d.ts.map +1 -1
  246. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/install.js +12 -6
  247. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/install.js.map +1 -1
  248. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +1 -1
  249. package/front_end/third_party/puppeteer/package/lib/types.d.ts +32 -18
  250. package/front_end/third_party/puppeteer/package/package.json +36 -35
  251. package/front_end/ui/components/text_editor/config.ts +17 -1
  252. package/front_end/ui/components/text_editor/cursor_tooltip.ts +9 -7
  253. package/front_end/ui/components/text_editor/javascript.ts +18 -6
  254. package/front_end/ui/components/text_prompt/TextPrompt.ts +9 -8
  255. package/front_end/ui/components/text_prompt/textPrompt.css +1 -6
  256. package/front_end/ui/legacy/TabbedPane.ts +3 -0
  257. package/front_end/ui/legacy/Toolbar.ts +25 -13
  258. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +17 -3
  259. package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +8 -8
  260. package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +1 -1
  261. package/package.json +1 -1
  262. package/scripts/build/assert_third_party_readmes.py +1 -1
  263. package/scripts/build/ninja/README.md +11 -40
@@ -2634,7 +2634,7 @@ export const NativeFunctions = [
2634
2634
  },
2635
2635
  {
2636
2636
  name: 'transitionWhile',
2637
- signatures: [['newNavigationAction']]
2637
+ signatures: [['newNavigationAction','?options']]
2638
2638
  },
2639
2639
  {
2640
2640
  name: 'updateCurrent',
@@ -2783,6 +2783,10 @@ export const NativeFunctions = [
2783
2783
  name: 'CSSKeywordValue',
2784
2784
  signatures: [['keyword']]
2785
2785
  },
2786
+ {
2787
+ name: 'CSSMathClamp',
2788
+ signatures: [['lower','value','upper']]
2789
+ },
2786
2790
  {
2787
2791
  name: 'CSSMathInvert',
2788
2792
  signatures: [['arg']]
@@ -2907,6 +2911,14 @@ export const NativeFunctions = [
2907
2911
  name: 'vh',
2908
2912
  signatures: [['value']]
2909
2913
  },
2914
+ {
2915
+ name: 'vi',
2916
+ signatures: [['value']]
2917
+ },
2918
+ {
2919
+ name: 'vb',
2920
+ signatures: [['value']]
2921
+ },
2910
2922
  {
2911
2923
  name: 'vmin',
2912
2924
  signatures: [['value']]
@@ -2915,6 +2927,78 @@ export const NativeFunctions = [
2915
2927
  name: 'vmax',
2916
2928
  signatures: [['value']]
2917
2929
  },
2930
+ {
2931
+ name: 'svw',
2932
+ signatures: [['value']]
2933
+ },
2934
+ {
2935
+ name: 'svh',
2936
+ signatures: [['value']]
2937
+ },
2938
+ {
2939
+ name: 'svi',
2940
+ signatures: [['value']]
2941
+ },
2942
+ {
2943
+ name: 'svb',
2944
+ signatures: [['value']]
2945
+ },
2946
+ {
2947
+ name: 'svmin',
2948
+ signatures: [['value']]
2949
+ },
2950
+ {
2951
+ name: 'svmax',
2952
+ signatures: [['value']]
2953
+ },
2954
+ {
2955
+ name: 'lvw',
2956
+ signatures: [['value']]
2957
+ },
2958
+ {
2959
+ name: 'lvh',
2960
+ signatures: [['value']]
2961
+ },
2962
+ {
2963
+ name: 'lvi',
2964
+ signatures: [['value']]
2965
+ },
2966
+ {
2967
+ name: 'lvb',
2968
+ signatures: [['value']]
2969
+ },
2970
+ {
2971
+ name: 'lvmin',
2972
+ signatures: [['value']]
2973
+ },
2974
+ {
2975
+ name: 'lvmax',
2976
+ signatures: [['value']]
2977
+ },
2978
+ {
2979
+ name: 'dvw',
2980
+ signatures: [['value']]
2981
+ },
2982
+ {
2983
+ name: 'dvh',
2984
+ signatures: [['value']]
2985
+ },
2986
+ {
2987
+ name: 'dvi',
2988
+ signatures: [['value']]
2989
+ },
2990
+ {
2991
+ name: 'dvb',
2992
+ signatures: [['value']]
2993
+ },
2994
+ {
2995
+ name: 'dvmin',
2996
+ signatures: [['value']]
2997
+ },
2998
+ {
2999
+ name: 'dvmax',
3000
+ signatures: [['value']]
3001
+ },
2918
3002
  {
2919
3003
  name: 'qw',
2920
3004
  signatures: [['value']]
@@ -3625,14 +3709,6 @@ export const NativeFunctions = [
3625
3709
  name: 'dispatchEvent',
3626
3710
  signatures: [['event']]
3627
3711
  },
3628
- {
3629
- name: 'Event',
3630
- signatures: [['type','?eventInitDict']]
3631
- },
3632
- {
3633
- name: 'initEvent',
3634
- signatures: [['type','?bubbles','?cancelable']]
3635
- },
3636
3712
  {
3637
3713
  name: 'MutationObserver',
3638
3714
  signatures: [['callback']]
@@ -4513,7 +4589,8 @@ export const NativeFunctions = [
4513
4589
  },
4514
4590
  {
4515
4591
  name: 'end',
4516
- signatures: [['index']]
4592
+ signatures: [['index']],
4593
+ receiver: 'TimeRanges'
4517
4594
  },
4518
4595
  {
4519
4596
  name: 'getTrackById',
@@ -6659,11 +6736,6 @@ export const NativeFunctions = [
6659
6736
  name: 'requestAll',
6660
6737
  signatures: [['permissions']]
6661
6738
  },
6662
- {
6663
- name: 'requestPictureInPicture',
6664
- signatures: [['?options']],
6665
- receiver: 'HTMLElement'
6666
- },
6667
6739
  {
6668
6740
  name: 'PictureInPictureEvent',
6669
6741
  signatures: [['type','eventInitDict']]
@@ -8544,10 +8616,6 @@ export const NativeFunctions = [
8544
8616
  name: 'requestAdapter',
8545
8617
  signatures: [['?options']]
8546
8618
  },
8547
- {
8548
- name: 'provide',
8549
- signatures: [['?id_token']]
8550
- },
8551
8619
  {
8552
8620
  name: 'MIDIConnectionEvent',
8553
8621
  signatures: [['type','?eventInitDict']]
@@ -21,14 +21,14 @@ export class StaticContentProvider implements ContentProvider {
21
21
  this.lazyContent = lazyContent;
22
22
  }
23
23
 
24
- static fromString(contentURL: string, contentType: Common.ResourceType.ResourceType, content: string):
25
- StaticContentProvider {
24
+ static fromString(
25
+ contentURL: Platform.DevToolsPath.UrlString, contentType: Common.ResourceType.ResourceType,
26
+ content: string): StaticContentProvider {
26
27
  const lazyContent = (): Promise<{
27
28
  content: string,
28
29
  isEncoded: boolean,
29
30
  }> => Promise.resolve({content, isEncoded: false});
30
- // TODO(crbug.com/1253323): Cast to UrlString will be removed when migration to branded types is complete.
31
- return new StaticContentProvider(contentURL as Platform.DevToolsPath.UrlString, contentType, lazyContent);
31
+ return new StaticContentProvider(contentURL, contentType, lazyContent);
32
32
  }
33
33
 
34
34
  contentURL(): Platform.DevToolsPath.UrlString {
@@ -235,6 +235,13 @@ export class UISourceCode extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
235
235
  return this.contentInternal as TextUtils.ContentProvider.DeferredContent;
236
236
  }
237
237
 
238
+ #decodeContent(content: TextUtils.ContentProvider.DeferredContent|null): string|null {
239
+ if (!content) {
240
+ return null;
241
+ }
242
+ return content.isEncoded && content.content ? window.atob(content.content) : content.content;
243
+ }
244
+
238
245
  async checkContentUpdated(): Promise<void> {
239
246
  if (!this.contentLoadedInternal && !this.forceLoadOnCheckContentInternal) {
240
247
  return;
@@ -260,7 +267,7 @@ export class UISourceCode extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
260
267
  return;
261
268
  }
262
269
 
263
- if (this.contentInternal?.content === updatedContent.content) {
270
+ if (this.#decodeContent(this.contentInternal) === this.#decodeContent(updatedContent)) {
264
271
  this.lastAcceptedContent = null;
265
272
  return;
266
273
  }
@@ -16,6 +16,8 @@ import * as UI from '../../ui/legacy/legacy.js';
16
16
  import type * as Protocol from '../../generated/protocol.js';
17
17
  import * as IconButton from '../../ui/components/icon_button/icon_button.js';
18
18
 
19
+ // TODO(crbug.com/1253323): Casts to UrlString will be removed from this file when migration to branded types is complete.
20
+
19
21
  const UIStrings = {
20
22
  /**
21
23
  *@description Text in App Manifest View of the Application panel
@@ -640,7 +642,8 @@ export class AppManifestView extends UI.Widget.VBox implements SDK.TargetManager
640
642
 
641
643
  this.startURLField.removeChildren();
642
644
  if (startURL) {
643
- const completeURL = (Common.ParsedURL.ParsedURL.completeURL(url, startURL) as string);
645
+ const completeURL =
646
+ (Common.ParsedURL.ParsedURL.completeURL(url as Platform.DevToolsPath.UrlString, startURL) as string);
644
647
  const link = Components.Linkifier.Linkifier.linkifyURL(
645
648
  completeURL, ({text: startURL} as Components.Linkifier.LinkifyURLOptions));
646
649
  link.tabIndex = 0;
@@ -691,7 +694,8 @@ export class AppManifestView extends UI.Widget.VBox implements SDK.TargetManager
691
694
  this.newNoteUrlField.parentElement?.classList.toggle('hidden', !hasNewNoteUrl);
692
695
  this.newNoteUrlField.removeChildren();
693
696
  if (hasNewNoteUrl) {
694
- const completeURL = (Common.ParsedURL.ParsedURL.completeURL(url, newNoteUrl) as string);
697
+ const completeURL =
698
+ (Common.ParsedURL.ParsedURL.completeURL(url as Platform.DevToolsPath.UrlString, newNoteUrl) as string);
695
699
  const link = Components.Linkifier.Linkifier.linkifyURL(
696
700
  completeURL, ({text: newNoteUrl} as Components.Linkifier.LinkifyURLOptions));
697
701
  link.tabIndex = 0;
@@ -761,7 +765,8 @@ export class AppManifestView extends UI.Widget.VBox implements SDK.TargetManager
761
765
  shortcutSection.appendFlexedField('Description', shortcut.description);
762
766
  }
763
767
  const urlField = shortcutSection.appendFlexedField('URL');
764
- const shortcutUrl = (Common.ParsedURL.ParsedURL.completeURL(url, shortcut.url) as string);
768
+ const shortcutUrl =
769
+ (Common.ParsedURL.ParsedURL.completeURL(url as Platform.DevToolsPath.UrlString, shortcut.url) as string);
765
770
  const link = Components.Linkifier.Linkifier.linkifyURL(
766
771
  shortcutUrl, ({text: shortcut.url} as Components.Linkifier.LinkifyURLOptions));
767
772
  link.tabIndex = 0;
@@ -1021,7 +1026,8 @@ export class AppManifestView extends UI.Widget.VBox implements SDK.TargetManager
1021
1026
  imageResourceErrors.push(i18nString(UIStrings.sSrcIsNotSet, {PH1: resourceName}));
1022
1027
  return {imageResourceErrors};
1023
1028
  }
1024
- const imageUrl = Common.ParsedURL.ParsedURL.completeURL(baseUrl, imageResource['src']);
1029
+ const imageUrl =
1030
+ Common.ParsedURL.ParsedURL.completeURL(baseUrl as Platform.DevToolsPath.UrlString, imageResource['src']);
1025
1031
  if (!imageUrl) {
1026
1032
  imageResourceErrors.push(
1027
1033
  i18nString(UIStrings.sUrlSFailedToParse, {PH1: resourceName, PH2: imageResource['src']}));
@@ -32,6 +32,7 @@ import * as Common from '../../core/common/common.js';
32
32
  import * as i18n from '../../core/i18n/i18n.js';
33
33
  import * as TextUtils from '../../models/text_utils/text_utils.js';
34
34
  import * as DataGrid from '../../ui/legacy/components/data_grid/data_grid.js';
35
+ import type * as Platform from '../../core/platform/platform.js';
35
36
  import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
36
37
  import * as UI from '../../ui/legacy/legacy.js';
37
38
 
@@ -319,7 +320,7 @@ export class DOMStorageItemsView extends StorageItemsView {
319
320
  const value = entry && entry.data && entry.data.value;
320
321
  if (entry && entry.data && entry.data.value) {
321
322
  const protocol = this.domStorage.isLocalStorage ? 'localstorage' : 'sessionstorage';
322
- const url = `${protocol}://${entry.key}`;
323
+ const url = `${protocol}://${entry.key}` as Platform.DevToolsPath.UrlString;
323
324
  const provider = TextUtils.StaticContentProvider.StaticContentProvider.fromString(
324
325
  url, Common.ResourceType.resourceTypes.XHR, (value as string));
325
326
  const preview = await SourceFrame.PreviewFactory.PreviewFactory.createPreview(provider, 'text/plain');
@@ -15,6 +15,9 @@ import {InterestGroupStorageView} from './InterestGroupStorageView.js';
15
15
  const UIStrings = {
16
16
  /**
17
17
  *@description Label for an item in the Application Panel Sidebar of the Application panel
18
+ * An interest group is an ad targeting group stored on the browser that can
19
+ * be used to show a certain set of advertisements in the future as the
20
+ * outcome of a FLEDGE auction. (https://developer.chrome.com/blog/fledge-api/)
18
21
  */
19
22
  interestGroups: 'Interest Groups',
20
23
  };
@@ -14,22 +14,33 @@ import interestGroupAccessGridStyles from './interestGroupAccessGrid.css.js';
14
14
  const UIStrings = {
15
15
  /**
16
16
  *@description Hover text for an info icon in the Interest Group Event panel
17
+ * An interest group is an ad targeting group stored on the browser that can
18
+ * be used to show a certain set of advertisements in the future as the
19
+ * outcome of a FLEDGE auction.
17
20
  */
18
21
  allInterestGroupStorageEvents: 'All interest group storage events.',
19
22
  /**
20
23
  *@description Text in InterestGroupStorage Items View of the Application panel
24
+ * Date and time of an Interest Group storage event in a locale-
25
+ * dependent format.
21
26
  */
22
27
  eventTime: 'Event Time',
23
28
  /**
24
29
  *@description Text in InterestGroupStorage Items View of the Application panel
30
+ * Type of interest group event such as 'join', 'bid', 'win', or 'leave'.
25
31
  */
26
32
  eventType: 'Access Type',
27
33
  /**
28
34
  *@description Text in InterestGroupStorage Items View of the Application panel
35
+ * Owner of the interest group. The origin that controls the
36
+ * content of information associated with the interest group such as which
37
+ * ads get displayed.
29
38
  */
30
39
  groupOwner: 'Owner',
31
40
  /**
32
41
  *@description Text in InterestGroupStorage Items View of the Application panel
42
+ * Name of the interest group. The name is unique per-owner and identifies the
43
+ * interest group.
33
44
  */
34
45
  groupName: 'Name',
35
46
  /**
@@ -41,6 +41,10 @@ export class ConsolePrompt extends Common.ObjectWrapper.eventMixin<EventTypes, t
41
41
  private readonly eagerEvalSetting: Common.Settings.Setting<boolean>;
42
42
  private previewRequestForTest: Promise<void>|null;
43
43
  private highlightingNode: boolean;
44
+ // The CodeMirror state field that controls whether the argument hints are showing.
45
+ // If they are, the escape key will clear them. However, if they aren't, then the
46
+ // console drawer should be hidden as a whole.
47
+ #argumentHintsState: CodeMirror.StateField<CodeMirror.Tooltip|null>;
44
48
 
45
49
  constructor() {
46
50
  super();
@@ -70,13 +74,15 @@ export class ConsolePrompt extends Common.ObjectWrapper.eventMixin<EventTypes, t
70
74
  this.element.tabIndex = 0;
71
75
  this.previewRequestForTest = null;
72
76
  this.highlightingNode = false;
77
+ const argumentHints = TextEditor.JavaScript.argumentHints();
78
+ this.#argumentHintsState = argumentHints[0];
73
79
 
74
80
  const editorState = CodeMirror.EditorState.create({
75
81
  doc: this.initialText,
76
82
  extensions: [
77
83
  CodeMirror.keymap.of(this.editorKeymap()),
78
84
  CodeMirror.EditorView.updateListener.of(update => this.editorUpdate(update)),
79
- TextEditor.JavaScript.argumentHints(),
85
+ argumentHints,
80
86
  TextEditor.JavaScript.completion(),
81
87
  TextEditor.Config.showCompletionHint,
82
88
  CodeMirror.javascript.javascript(),
@@ -209,6 +215,12 @@ export class ConsolePrompt extends Common.ObjectWrapper.eventMixin<EventTypes, t
209
215
  {key: 'ArrowDown', run: (): boolean => this.moveHistory(1)},
210
216
  {mac: 'Ctrl-p', run: (): boolean => this.moveHistory(-1, true)},
211
217
  {mac: 'Ctrl-n', run: (): boolean => this.moveHistory(1, true)},
218
+ {
219
+ key: 'Escape',
220
+ run: (): boolean => {
221
+ return TextEditor.JavaScript.closeArgumentsHintsTooltip(this.editor.editor, this.#argumentHintsState);
222
+ },
223
+ },
212
224
  {
213
225
  key: 'Enter',
214
226
  run: (): boolean => {
@@ -259,6 +271,7 @@ export class ConsolePrompt extends Common.ObjectWrapper.eventMixin<EventTypes, t
259
271
  private async handleEnter(): Promise<void> {
260
272
  if (await this.enterWillEvaluate()) {
261
273
  this.appendCommand(this.text(), true);
274
+ TextEditor.JavaScript.closeArgumentsHintsTooltip(this.editor.editor, this.#argumentHintsState);
262
275
  this.editor.dispatch({
263
276
  changes: {from: 0, to: this.editor.state.doc.length},
264
277
  scrollIntoView: true,
@@ -3,6 +3,7 @@
3
3
  // found in the LICENSE file.
4
4
 
5
5
  import * as Common from '../../core/common/common.js';
6
+ import type * as Platform from '../../core/platform/platform.js';
6
7
  import type * as SDK from '../../core/sdk/sdk.js';
7
8
  import type * as Protocol from '../../generated/protocol.js';
8
9
 
@@ -80,7 +81,10 @@ export function parseSourcePositionsFromErrorStack(
80
81
  }
81
82
  let url = parseOrScriptMatch(debuggerModel, splitResult.url);
82
83
  if (!url && Common.ParsedURL.ParsedURL.isRelativeURL(splitResult.url)) {
83
- url = parseOrScriptMatch(debuggerModel, Common.ParsedURL.ParsedURL.completeURL(baseURL, splitResult.url));
84
+ // TODO(crbug.com/1253323): Cast to UrlString will be removed when migration to branded types is complete.
85
+ url = parseOrScriptMatch(
86
+ debuggerModel,
87
+ Common.ParsedURL.ParsedURL.completeURL(baseURL as Platform.DevToolsPath.UrlString, splitResult.url));
84
88
  }
85
89
  if (!url) {
86
90
  return null;
@@ -3391,7 +3391,8 @@ export class StylesSidebarPropertyRenderer {
3391
3391
  UI.UIUtils.createTextChild(container, 'url(');
3392
3392
  let hrefUrl: (string|null)|null = null;
3393
3393
  if (this.rule && this.rule.resourceURL()) {
3394
- hrefUrl = Common.ParsedURL.ParsedURL.completeURL(this.rule.resourceURL(), url);
3394
+ // TODO(crbug.com/1253323): Cast to UrlString will be removed when migration to branded types is complete.
3395
+ hrefUrl = Common.ParsedURL.ParsedURL.completeURL(this.rule.resourceURL() as Platform.DevToolsPath.UrlString, url);
3395
3396
  } else if (this.node) {
3396
3397
  hrefUrl = this.node.resolveURL(url);
3397
3398
  }
@@ -8,6 +8,7 @@ import * as i18n from '../../core/i18n/i18n.js';
8
8
 
9
9
  import binaryResourceViewStyles from './binaryResourceView.css.js';
10
10
 
11
+ import type * as Platform from '../../core/platform/platform.js';
11
12
  import type * as TextUtils from '../../models/text_utils/text_utils.js';
12
13
  import * as SourceFrame from '../../ui/legacy/components/source_frame/source_frame.js';
13
14
  import * as UI from '../../ui/legacy/legacy.js';
@@ -70,7 +71,9 @@ export class BinaryResourceView extends UI.Widget.VBox {
70
71
  private addFadeoutSettimeoutId: number|null;
71
72
  private lastView: UI.Widget.Widget|null;
72
73
 
73
- constructor(base64content: string, contentUrl: string, resourceType: Common.ResourceType.ResourceType) {
74
+ constructor(
75
+ base64content: string, contentUrl: Platform.DevToolsPath.UrlString,
76
+ resourceType: Common.ResourceType.ResourceType) {
74
77
  super();
75
78
 
76
79
  this.binaryResourceViewFactory =
@@ -224,6 +224,7 @@ const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
224
224
  export class RequestTimingView extends UI.Widget.VBox {
225
225
  private request: SDK.NetworkRequest.NetworkRequest;
226
226
  private calculator: NetworkTimeCalculator;
227
+ private lastMinimumBoundary: number;
227
228
  private tableElement?: Element;
228
229
  constructor(request: SDK.NetworkRequest.NetworkRequest, calculator: NetworkTimeCalculator) {
229
230
  super();
@@ -231,6 +232,7 @@ export class RequestTimingView extends UI.Widget.VBox {
231
232
 
232
233
  this.request = request;
233
234
  this.calculator = calculator;
235
+ this.lastMinimumBoundary = -1;
234
236
  }
235
237
 
236
238
  private static timeRangeTitle(name: RequestTimeRangeNames): string {
@@ -647,7 +649,7 @@ export class RequestTimingView extends UI.Widget.VBox {
647
649
  wasShown(): void {
648
650
  this.request.addEventListener(SDK.NetworkRequest.Events.TimingChanged, this.refresh, this);
649
651
  this.request.addEventListener(SDK.NetworkRequest.Events.FinishedLoading, this.refresh, this);
650
- this.calculator.addEventListener(Events.BoundariesChanged, this.refresh, this);
652
+ this.calculator.addEventListener(Events.BoundariesChanged, this.boundaryChanged, this);
651
653
  this.registerCSSFiles([networkingTimingTableStyles]);
652
654
  this.refresh();
653
655
  }
@@ -655,7 +657,7 @@ export class RequestTimingView extends UI.Widget.VBox {
655
657
  willHide(): void {
656
658
  this.request.removeEventListener(SDK.NetworkRequest.Events.TimingChanged, this.refresh, this);
657
659
  this.request.removeEventListener(SDK.NetworkRequest.Events.FinishedLoading, this.refresh, this);
658
- this.calculator.removeEventListener(Events.BoundariesChanged, this.refresh, this);
660
+ this.calculator.removeEventListener(Events.BoundariesChanged, this.boundaryChanged, this);
659
661
  }
660
662
 
661
663
  private refresh(): void {
@@ -671,6 +673,14 @@ export class RequestTimingView extends UI.Widget.VBox {
671
673
  this.constructFetchDetailsView();
672
674
  }
673
675
  }
676
+
677
+ private boundaryChanged(): void {
678
+ const minimumBoundary = this.calculator.minimumBoundary();
679
+ if (minimumBoundary !== this.lastMinimumBoundary) {
680
+ this.lastMinimumBoundary = minimumBoundary;
681
+ this.refresh();
682
+ }
683
+ }
674
684
  }
675
685
 
676
686
  // TODO(crbug.com/1167717): Make this a const enum again
@@ -461,8 +461,9 @@ export class ResourceWebSocketFrameNode extends DataGrid.SortableDataGrid.Sortab
461
461
 
462
462
  if (!this.binaryViewInternal) {
463
463
  if (this.dataTextInternal.length > 0) {
464
- this.binaryViewInternal =
465
- new BinaryResourceView(this.dataTextInternal, /* url */ '', Common.ResourceType.resourceTypes.WebSocket);
464
+ this.binaryViewInternal = new BinaryResourceView(
465
+ this.dataTextInternal, /* url */ '' as Platform.DevToolsPath.UrlString,
466
+ Common.ResourceType.resourceTypes.WebSocket);
466
467
  }
467
468
  }
468
469
  return this.binaryViewInternal;
@@ -385,19 +385,62 @@ export class SourcesView extends Common.ObjectWrapper.eventMixin<EventTypes, typ
385
385
  this.historyManager.trackSourceFrameCursorJumps(sourceFrame);
386
386
  }
387
387
 
388
+ uiSourceCode.addEventListener(Workspace.UISourceCode.Events.TitleChanged, this.#uiSourceCodeTitleChanged, this);
389
+
388
390
  const widget = (sourceFrame || sourceView as UI.Widget.Widget);
389
391
  this.sourceViewByUISourceCode.set(uiSourceCode, widget);
390
392
  return widget;
391
393
  }
392
394
 
395
+ #sourceViewTypeForWidget(widget: UI.Widget.Widget): SourceViewType {
396
+ if (widget instanceof SourceFrame.ImageView.ImageView) {
397
+ return SourceViewType.ImageView;
398
+ }
399
+ if (widget instanceof SourceFrame.FontView.FontView) {
400
+ return SourceViewType.FontView;
401
+ }
402
+ return SourceViewType.SourceView;
403
+ }
404
+
405
+ #sourceViewTypeForContentType(contentType: Common.ResourceType.ResourceType): SourceViewType {
406
+ switch (contentType) {
407
+ case Common.ResourceType.resourceTypes.Image:
408
+ return SourceViewType.ImageView;
409
+ case Common.ResourceType.resourceTypes.Font:
410
+ return SourceViewType.FontView;
411
+ default:
412
+ return SourceViewType.SourceView;
413
+ }
414
+ }
415
+
416
+ #uiSourceCodeTitleChanged(event: Common.EventTarget.EventTargetEvent<Workspace.UISourceCode.UISourceCode>): void {
417
+ const uiSourceCode = event.data;
418
+ const widget = this.sourceViewByUISourceCode.get(uiSourceCode);
419
+ if (widget) {
420
+ const contentType = uiSourceCode.contentType();
421
+ if (this.#sourceViewTypeForWidget(widget) !== this.#sourceViewTypeForContentType(contentType)) {
422
+ // Remove the exisiting editor tab and create a new one of the correct type.
423
+ this.removeUISourceCodes([uiSourceCode]);
424
+ this.showSourceLocation(uiSourceCode);
425
+ }
426
+ }
427
+ }
428
+
429
+ getSourceView(uiSourceCode: Workspace.UISourceCode.UISourceCode): UI.Widget.Widget|undefined {
430
+ return this.sourceViewByUISourceCode.get(uiSourceCode);
431
+ }
432
+
393
433
  private getOrCreateSourceView(uiSourceCode: Workspace.UISourceCode.UISourceCode): UI.Widget.Widget {
394
434
  return this.sourceViewByUISourceCode.get(uiSourceCode) || this.createSourceView(uiSourceCode);
395
435
  }
396
436
 
397
437
  recycleUISourceCodeFrame(sourceFrame: UISourceCodeFrame, uiSourceCode: Workspace.UISourceCode.UISourceCode): void {
438
+ sourceFrame.uiSourceCode().removeEventListener(
439
+ Workspace.UISourceCode.Events.TitleChanged, this.#uiSourceCodeTitleChanged, this);
398
440
  this.sourceViewByUISourceCode.delete(sourceFrame.uiSourceCode());
399
441
  sourceFrame.setUISourceCode(uiSourceCode);
400
442
  this.sourceViewByUISourceCode.set(uiSourceCode, sourceFrame);
443
+ uiSourceCode.addEventListener(Workspace.UISourceCode.Events.TitleChanged, this.#uiSourceCodeTitleChanged, this);
401
444
  }
402
445
 
403
446
  viewForFile(uiSourceCode: Workspace.UISourceCode.UISourceCode): UI.Widget.Widget {
@@ -410,6 +453,7 @@ export class SourcesView extends Common.ObjectWrapper.eventMixin<EventTypes, typ
410
453
  if (sourceView && sourceView instanceof UISourceCodeFrame) {
411
454
  (sourceView as UISourceCodeFrame).dispose();
412
455
  }
456
+ uiSourceCode.removeEventListener(Workspace.UISourceCode.Events.TitleChanged, this.#uiSourceCodeTitleChanged, this);
413
457
  }
414
458
 
415
459
  private editorClosed(event: Common.EventTarget.EventTargetEvent<Workspace.UISourceCode.UISourceCode>): void {
@@ -719,3 +763,10 @@ export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
719
763
  return false;
720
764
  }
721
765
  }
766
+
767
+ // eslint-disable-next-line rulesdir/const_enum
768
+ enum SourceViewType {
769
+ ImageView = 'ImageView',
770
+ FontView = 'FontView',
771
+ SourceView = 'SourceView',
772
+ }