@mcp-b/chrome-devtools-mcp 1.1.0 → 1.1.1

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 (656) hide show
  1. package/build/node_modules/chrome-devtools-frontend/LICENSE +27 -0
  2. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/App.js +4 -0
  3. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/AppProvider.js +17 -0
  4. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Base64.js +43 -0
  5. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/CharacterIdMap.js +27 -0
  6. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Color.js +2033 -0
  7. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorConverter.js +332 -0
  8. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ColorUtils.js +221 -0
  9. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Console.js +79 -0
  10. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Debouncer.js +14 -0
  11. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/EventTarget.js +14 -0
  12. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Gzip.js +66 -0
  13. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/JavaScriptMetaData.js +4 -0
  14. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Lazy.js +29 -0
  15. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/MapWithDefault.js +22 -0
  16. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Mutex.js +49 -0
  17. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Object.js +86 -0
  18. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ParsedURL.js +449 -0
  19. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Progress.js +144 -0
  20. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResolverBase.js +69 -0
  21. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ResourceType.js +495 -0
  22. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/ReturnToPanel.js +15 -0
  23. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Revealer.js +164 -0
  24. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Runnable.js +24 -0
  25. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SegmentedRange.js +78 -0
  26. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SettingRegistration.js +164 -0
  27. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Settings.js +1263 -0
  28. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/SimpleHistoryManager.js +97 -0
  29. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/StringOutputStream.js +14 -0
  30. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/TextDictionary.js +40 -0
  31. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Throttler.js +71 -0
  32. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/Trie.js +127 -0
  33. package/build/node_modules/chrome-devtools-frontend/front_end/core/common/common.js +41 -0
  34. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/AidaClient.js +434 -0
  35. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/DispatchHttpRequestClient.js +66 -0
  36. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/GdpClient.js +202 -0
  37. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHost.js +92 -0
  38. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostAPI.js +69 -0
  39. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/InspectorFrontendHostStub.js +430 -0
  40. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/Platform.js +61 -0
  41. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/ResourceLoader.js +220 -0
  42. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/UserMetrics.js +968 -0
  43. package/build/node_modules/chrome-devtools-frontend/front_end/core/host/host.js +13 -0
  44. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/ByteUtilities.js +72 -0
  45. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/DevToolsLocale.js +64 -0
  46. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/NumberFormatter.js +67 -0
  47. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/collect-ui-strings.js +73 -0
  48. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/generate-locales-js.js +51 -0
  49. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18n.js +9 -0
  50. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18nImpl.js +135 -0
  51. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/i18nTypes.js +4 -0
  52. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/locales.js +14 -0
  53. package/build/node_modules/chrome-devtools-frontend/front_end/core/i18n/time-utilities.js +148 -0
  54. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/ArrayUtilities.js +199 -0
  55. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Brand.js +4 -0
  56. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Constructor.js +4 -0
  57. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DateUtilities.js +13 -0
  58. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/DevToolsPath.js +27 -0
  59. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/HostRuntime.js +19 -0
  60. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/KeyboardUtilities.js +21 -0
  61. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MapUtilities.js +79 -0
  62. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/MimeType.js +143 -0
  63. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/NumberUtilities.js +72 -0
  64. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/StringUtilities.js +538 -0
  65. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/Timing.js +9 -0
  66. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypedArrayUtilities.js +157 -0
  67. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/TypescriptUtilities.js +24 -0
  68. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UIString.js +4 -0
  69. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/UserVisibleError.js +22 -0
  70. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/HostRuntime.js +4 -0
  71. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/api/api.js +5 -0
  72. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/HostRuntime.js +63 -0
  73. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/browser/browser.js +5 -0
  74. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/HostRuntime.js +72 -0
  75. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/node/node.js +5 -0
  76. package/build/node_modules/chrome-devtools-frontend/front_end/core/platform/platform.js +26 -0
  77. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/CDPConnection.js +17 -0
  78. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/ConnectionTransport.js +12 -0
  79. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.js +138 -0
  80. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/InspectorBackend.js +539 -0
  81. package/build/node_modules/chrome-devtools-frontend/front_end/core/protocol_client/protocol_client.js +8 -0
  82. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/DevToolsContext.js +54 -0
  83. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/Runtime.js +11 -0
  84. package/build/node_modules/chrome-devtools-frontend/front_end/core/root/root.js +6 -0
  85. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AccessibilityModel.js +281 -0
  86. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AnimationModel.js +845 -0
  87. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/AutofillModel.js +155 -0
  88. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUProfilerModel.js +99 -0
  89. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CPUThrottlingManager.js +217 -0
  90. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSContainerQuery.js +98 -0
  91. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSFontFace.js +31 -0
  92. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSLayer.js +22 -0
  93. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMatchedStyles.js +1318 -0
  94. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMedia.js +100 -0
  95. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSMetadata.js +1532 -0
  96. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSModel.js +908 -0
  97. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSProperty.js +312 -0
  98. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParser.js +574 -0
  99. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSPropertyParserMatchers.js +1346 -0
  100. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSQuery.js +53 -0
  101. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSRule.js +403 -0
  102. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSScope.js +22 -0
  103. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStartingStyle.js +21 -0
  104. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleDeclaration.js +275 -0
  105. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSStyleSheetHeader.js +166 -0
  106. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CSSSupports.js +24 -0
  107. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CategorizedBreakpoint.js +29 -0
  108. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ChildTargetManager.js +236 -0
  109. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CompilerSourceMappingContentProvider.js +47 -0
  110. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Connections.js +205 -0
  111. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModel.js +629 -0
  112. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ConsoleModelTypes.js +14 -0
  113. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Cookie.js +241 -0
  114. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieModel.js +198 -0
  115. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/CookieParser.js +163 -0
  116. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMDebuggerModel.js +597 -0
  117. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DOMModel.js +1635 -0
  118. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/DebuggerModel.js +1216 -0
  119. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EmulationModel.js +527 -0
  120. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EnhancedTracesParser.js +364 -0
  121. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/EventBreakpointsModel.js +127 -0
  122. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameAssociated.js +4 -0
  123. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/FrameManager.js +199 -0
  124. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HeapProfilerModel.js +130 -0
  125. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/HttpReasonPhraseStrings.js +75 -0
  126. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IOModel.js +80 -0
  127. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IsolateManager.js +208 -0
  128. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/IssuesModel.js +41 -0
  129. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LayerTreeBase.js +95 -0
  130. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/LogModel.js +34 -0
  131. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkManager.js +2223 -0
  132. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/NetworkRequest.js +1654 -0
  133. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayColorGenerator.js +48 -0
  134. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayModel.js +765 -0
  135. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/OverlayPersistentHighlighter.js +384 -0
  136. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageLoad.js +25 -0
  137. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PageResourceLoader.js +310 -0
  138. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PaintProfiler.js +67 -0
  139. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PerformanceMetricsModel.js +62 -0
  140. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/PreloadingModel.js +608 -0
  141. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingConnection.js +413 -0
  142. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RehydratingObject.js +4 -0
  143. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RemoteObject.js +908 -0
  144. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Resource.js +163 -0
  145. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ResourceTreeModel.js +923 -0
  146. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/RuntimeModel.js +535 -0
  147. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SDKModel.js +45 -0
  148. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScopeTreeCache.js +36 -0
  149. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ScreenCaptureModel.js +176 -0
  150. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Script.js +420 -0
  151. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SecurityOriginManager.js +54 -0
  152. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEvents.js +67 -0
  153. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerSentEventsProtocol.js +113 -0
  154. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServerTiming.js +216 -0
  155. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerCacheModel.js +271 -0
  156. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/ServiceWorkerManager.js +511 -0
  157. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMap.js +691 -0
  158. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapCache.js +57 -0
  159. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapFunctionRanges.js +132 -0
  160. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapManager.js +201 -0
  161. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopeChainEntry.js +156 -0
  162. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/SourceMapScopesInfo.js +508 -0
  163. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageBucketsModel.js +143 -0
  164. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/StorageKeyManager.js +53 -0
  165. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/Target.js +257 -0
  166. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TargetManager.js +395 -0
  167. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/TraceObject.js +55 -0
  168. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/WebAuthnModel.js +66 -0
  169. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk-meta.js +1166 -0
  170. package/build/node_modules/chrome-devtools-frontend/front_end/core/sdk/sdk.js +91 -0
  171. package/build/node_modules/chrome-devtools-frontend/front_end/foundation/Universe.js +34 -0
  172. package/build/node_modules/chrome-devtools-frontend/front_end/foundation/foundation.js +5 -0
  173. package/build/node_modules/chrome-devtools-frontend/front_end/generated/ARIAProperties.js +2640 -0
  174. package/build/node_modules/chrome-devtools-frontend/front_end/generated/Deprecation.js +384 -0
  175. package/build/node_modules/chrome-devtools-frontend/front_end/generated/InspectorBackendCommands.js +1532 -0
  176. package/build/node_modules/chrome-devtools-frontend/front_end/generated/SupportedCSSProperties.js +7602 -0
  177. package/build/node_modules/chrome-devtools-frontend/front_end/generated/protocol.js +4 -0
  178. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.js +289 -0
  179. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.js +995 -0
  180. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.js +664 -0
  181. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/data_formatters/UnitFormatters.js +139 -0
  182. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AICallTree.js +377 -0
  183. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIContext.js +131 -0
  184. package/build/node_modules/chrome-devtools-frontend/front_end/models/ai_assistance/performance/AIQueries.js +149 -0
  185. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CSSWorkspaceBinding.js +245 -0
  186. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/CompilerScriptMapping.js +486 -0
  187. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ContentProviderBasedProject.js +130 -0
  188. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerLanguagePlugins.js +992 -0
  189. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DebuggerWorkspaceBinding.js +592 -0
  190. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/DefaultScriptMapping.js +112 -0
  191. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/FileUtils.js +186 -0
  192. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/LiveLocation.js +60 -0
  193. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/NetworkProject.js +107 -0
  194. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/PresentationConsoleMessageHelper.js +244 -0
  195. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceMapping.js +564 -0
  196. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceScriptMapping.js +437 -0
  197. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/ResourceUtils.js +87 -0
  198. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/SASSSourceMapping.js +182 -0
  199. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/StylesSourceMapping.js +268 -0
  200. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/TempFile.js +55 -0
  201. package/build/node_modules/chrome-devtools-frontend/front_end/models/bindings/bindings.js +20 -0
  202. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/CPUProfileDataModel.js +516 -0
  203. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/ProfileTreeModel.js +89 -0
  204. package/build/node_modules/chrome-devtools-frontend/front_end/models/cpu_profile/cpu_profile.js +6 -0
  205. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/CrUXManager.js +285 -0
  206. package/build/node_modules/chrome-devtools-frontend/front_end/models/crux-manager/crux-manager.js +4 -0
  207. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/DeviceModeModel.js +775 -0
  208. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/EmulatedDevices.js +1706 -0
  209. package/build/node_modules/chrome-devtools-frontend/front_end/models/emulation/emulation.js +6 -0
  210. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/FormatterWorkerPool.js +145 -0
  211. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/ScriptFormatter.js +77 -0
  212. package/build/node_modules/chrome-devtools-frontend/front_end/models/formatter/formatter.js +6 -0
  213. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/GeometryImpl.js +347 -0
  214. package/build/node_modules/chrome-devtools-frontend/front_end/models/geometry/geometry.js +4 -0
  215. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/AttributionReportingIssue.js +201 -0
  216. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/BounceTrackingIssue.js +49 -0
  217. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CheckFormsIssuesTrigger.js +31 -0
  218. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ClientHintIssue.js +71 -0
  219. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ContentSecurityPolicyIssue.js +135 -0
  220. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ContrastCheckTrigger.js +59 -0
  221. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CookieDeprecationMetadataIssue.js +58 -0
  222. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CookieIssue.js +514 -0
  223. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CorsIssue.js +244 -0
  224. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.js +110 -0
  225. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/DeprecationIssue.js +90 -0
  226. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/ElementAccessibilityIssue.js +95 -0
  227. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/FederatedAuthRequestIssue.js +231 -0
  228. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.js +141 -0
  229. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/GenericIssue.js +212 -0
  230. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/HeavyAdIssue.js +52 -0
  231. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/Issue.js +152 -0
  232. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssueAggregator.js +314 -0
  233. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssueResolver.js +40 -0
  234. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssuesManager.js +416 -0
  235. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/IssuesManagerEvents.js +4 -0
  236. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/LowTextContrastIssue.js +48 -0
  237. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/MarkdownIssueDescription.js +104 -0
  238. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/MixedContentIssue.js +55 -0
  239. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/PartitioningBlobURLIssue.js +58 -0
  240. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/PropertyRuleIssue.js +58 -0
  241. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/QuirksModeIssue.js +48 -0
  242. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/RelatedIssue.js +70 -0
  243. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SRIMessageSignatureIssue.js +87 -0
  244. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SharedArrayBufferIssue.js +49 -0
  245. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SharedDictionaryIssue.js +292 -0
  246. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/SourceFrameIssuesManager.js +81 -0
  247. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/StylesheetLoadingIssue.js +59 -0
  248. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/UnencodedDigestIssue.js +62 -0
  249. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/CoepCoopSandboxedIframeCannotNavigateToCoopPage.md +4 -0
  250. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/CoepCorpNotSameOrigin.md +8 -0
  251. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/CoepCorpNotSameOriginAfterDefaultedToSameOriginByCoep.md +18 -0
  252. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/CoepCorpNotSameSite.md +7 -0
  253. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/CoepFrameResourceNeedsCoepHeader.md +10 -0
  254. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/CompatibilityModeQuirks.md +5 -0
  255. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/CookieAttributeValueExceedsMaxSize.md +5 -0
  256. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/LowTextContrast.md +5 -0
  257. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeRead.md +8 -0
  258. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteExcludeContextDowngradeSet.md +8 -0
  259. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteExcludeNavigationContextDowngrade.md +8 -0
  260. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteInvalidSameParty.md +8 -0
  261. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorRead.md +8 -0
  262. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureErrorSet.md +8 -0
  263. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnRead.md +8 -0
  264. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteNoneInsecureWarnSet.md +8 -0
  265. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteSamePartyCrossPartyContextSet.md +10 -0
  266. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeRead.md +9 -0
  267. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteUnspecifiedLaxAllowUnsafeSet.md +9 -0
  268. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeRead.md +8 -0
  269. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteWarnCrossDowngradeSet.md +8 -0
  270. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/SameSiteWarnStrictLaxDowngradeStrict.md +8 -0
  271. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arInsecureContext.md +7 -0
  272. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arInvalidInfoHeader.md +5 -0
  273. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arInvalidRegisterOsSourceHeader.md +5 -0
  274. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arInvalidRegisterOsTriggerHeader.md +5 -0
  275. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md +5 -0
  276. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md +5 -0
  277. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arNavigationRegistrationUniqueScopeAlreadySet.md +5 -0
  278. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arNavigationRegistrationWithoutTransientUserActivation.md +6 -0
  279. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arNoRegisterOsSourceHeader.md +5 -0
  280. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arNoRegisterOsTriggerHeader.md +5 -0
  281. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arNoRegisterSourceHeader.md +5 -0
  282. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arNoRegisterTriggerHeader.md +5 -0
  283. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arNoWebOrOsSupport.md +4 -0
  284. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arOsSourceIgnored.md +18 -0
  285. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arOsTriggerIgnored.md +19 -0
  286. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md +8 -0
  287. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +9 -0
  288. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arSourceIgnored.md +13 -0
  289. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arTriggerIgnored.md +12 -0
  290. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md +10 -0
  291. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/arWebAndOsHeaders.md +11 -0
  292. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/bounceTrackingMitigations.md +3 -0
  293. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md +4 -0
  294. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md +4 -0
  295. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieCrossSiteRedirectDowngrade.md +12 -0
  296. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieExcludeBlockedWithinRelatedWebsiteSet.md +4 -0
  297. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieExcludeDomainNonAscii.md +11 -0
  298. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieExcludePortMismatch.md +8 -0
  299. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieExcludeSchemeMismatch.md +7 -0
  300. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutRead.md +6 -0
  301. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieExcludeThirdPartyPhaseoutSet.md +6 -0
  302. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieWarnDomainNonAscii.md +11 -0
  303. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieWarnMetadataGrantRead.md +4 -0
  304. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieWarnMetadataGrantSet.md +4 -0
  305. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutRead.md +6 -0
  306. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cookieWarnThirdPartyPhaseoutSet.md +6 -0
  307. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsAllowCredentialsRequired.md +6 -0
  308. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsDisabledScheme.md +7 -0
  309. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsDisallowedByMode.md +7 -0
  310. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsHeaderDisallowedByPreflightResponse.md +5 -0
  311. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsInsecurePrivateNetwork.md +10 -0
  312. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsInvalidHeaderValues.md +7 -0
  313. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsLocalNetworkAccessPermissionDenied.md +19 -0
  314. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsMethodDisallowedByPreflightResponse.md +5 -0
  315. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsNoCorsRedirectModeNotFollow.md +5 -0
  316. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsOriginMismatch.md +6 -0
  317. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsPreflightAllowPrivateNetworkError.md +10 -0
  318. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsPreflightResponseInvalid.md +5 -0
  319. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsPrivateNetworkPermissionDenied.md +10 -0
  320. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsRedirectContainsCredentials.md +5 -0
  321. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/corsWildcardOriginNotAllowed.md +8 -0
  322. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cspEvalViolation.md +9 -0
  323. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cspInlineViolation.md +10 -0
  324. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cspTrustedTypesPolicyViolation.md +5 -0
  325. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cspTrustedTypesSinkViolation.md +8 -0
  326. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/cspURLViolation.md +10 -0
  327. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/deprecation.md +3 -0
  328. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsHttpNotFound.md +1 -0
  329. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsInvalidResponse.md +1 -0
  330. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestAccountsNoResponse.md +1 -0
  331. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestApprovalDeclined.md +1 -0
  332. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestCanceled.md +1 -0
  333. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataHttpNotFound.md +1 -0
  334. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataInvalidResponse.md +1 -0
  335. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestClientMetadataNoResponse.md +1 -0
  336. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorFetchingSignin.md +1 -0
  337. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestErrorIdToken.md +1 -0
  338. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenHttpNotFound.md +1 -0
  339. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidRequest.md +1 -0
  340. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenInvalidResponse.md +1 -0
  341. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestIdTokenNoResponse.md +1 -0
  342. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestInvalidSigninResponse.md +1 -0
  343. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestHttpNotFound.md +1 -0
  344. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestInvalidResponse.md +1 -0
  345. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestManifestNoResponse.md +1 -0
  346. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthRequestTooManyRequests.md +1 -0
  347. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidAccountsResponse.md +1 -0
  348. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestInvalidConfigOrWellKnown.md +1 -0
  349. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoAccountSharingPermission.md +1 -0
  350. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoApiPermission.md +1 -0
  351. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNoReturningUserFromFetchedAccounts.md +1 -0
  352. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotIframe.md +1 -0
  353. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotPotentiallyTrustworthy.md +1 -0
  354. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSameOrigin.md +1 -0
  355. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/federatedAuthUserInfoRequestNotSignedInWithIdp.md +1 -0
  356. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/fetchingPartitionedBlobURL.md +7 -0
  357. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormAriaLabelledByToNonExistingIdError.md +8 -0
  358. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormAutocompleteAttributeEmptyError.md +5 -0
  359. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormDuplicateIdForInputError.md +5 -0
  360. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormEmptyIdAndNameAttributesForInputError.md +5 -0
  361. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormInputAssignedAutocompleteValueToIdOrNameAttributeError.md +5 -0
  362. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormInputHasWrongButWellIntendedAutocompleteValueError.md +5 -0
  363. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormInputWithNoLabelError.md +5 -0
  364. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormLabelForMatchesNonExistingIdError.md +5 -0
  365. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormLabelForNameError.md +5 -0
  366. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericFormLabelHasNeitherForNorNestedInputError.md +5 -0
  367. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericNavigationEntryMarkedSkippable.md +7 -0
  368. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/genericResponseWasBlockedByORB.md +4 -0
  369. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/heavyAd.md +10 -0
  370. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/mixedContent.md +5 -0
  371. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/navigatingPartitionedBlobURL.md +5 -0
  372. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/placeholderDescriptionForInvisibleIssues.md +3 -0
  373. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/propertyRuleInvalidNameIssue.md +3 -0
  374. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/propertyRuleIssue.md +7 -0
  375. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedOptGroupChild.md +7 -0
  376. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/selectElementAccessibilityDisallowedSelectChild.md +7 -0
  377. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentAttributesSelectDescendant.md +3 -0
  378. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentLegendChild.md +3 -0
  379. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/selectElementAccessibilityInteractiveContentOptionChild.md +3 -0
  380. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/selectElementAccessibilityNonPhrasingContentOptionChild.md +3 -0
  381. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedArrayBuffer.md +7 -0
  382. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorCrossOriginNoCorsRequest.md +1 -0
  383. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorDictionaryLoadFailure.md +3 -0
  384. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorMatchingDictionaryNotUsed.md +3 -0
  385. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryUseErrorUnexpectedContentDictionaryHeader.md +1 -0
  386. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorCossOriginNoCorsRequest.md +1 -0
  387. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorDisallowedBySettings.md +1 -0
  388. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorExpiredResponse.md +3 -0
  389. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorFeatureDisabled.md +3 -0
  390. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInsufficientResources.md +1 -0
  391. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidMatchField.md +1 -0
  392. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidStructuredHeader.md +1 -0
  393. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorInvalidTTLField.md +1 -0
  394. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNavigationRequest.md +3 -0
  395. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNoMatchField.md +1 -0
  396. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonIntegerTTLField.md +1 -0
  397. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonListMatchDestField.md +1 -0
  398. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonSecureContext.md +3 -0
  399. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringIdField.md +1 -0
  400. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringInMatchDestList.md +1 -0
  401. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonStringMatchField.md +1 -0
  402. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorNonTokenTypeField.md +1 -0
  403. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorRequestAborted.md +1 -0
  404. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorShuttingDown.md +1 -0
  405. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorTooLongIdField.md +3 -0
  406. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sharedDictionaryWriteErrorUnsupportedType.md +3 -0
  407. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriInvalidSignatureHeader.md +14 -0
  408. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriInvalidSignatureInputHeader.md +15 -0
  409. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriMissingSignatureHeader.md +8 -0
  410. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriMissingSignatureInputHeader.md +7 -0
  411. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsIncorrectLength.md +11 -0
  412. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsNotByteSequence.md +14 -0
  413. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureHeaderValueIsParameterized.md +15 -0
  414. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentName.md +8 -0
  415. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidComponentType.md +13 -0
  416. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidDerivedComponentParameter.md +4 -0
  417. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidHeaderComponentParameter.md +5 -0
  418. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderInvalidParameter.md +11 -0
  419. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderKeyIdLength.md +12 -0
  420. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderMissingLabel.md +6 -0
  421. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderMissingRequiredParameters.md +8 -0
  422. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueMissingComponents.md +11 -0
  423. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +11 -0
  424. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +10 -0
  425. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriValidationFailedInvalidLength.md +5 -0
  426. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureExpired.md +6 -0
  427. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md +11 -0
  428. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/stylesheetLateImport.md +4 -0
  429. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/stylesheetRequestFailed.md +3 -0
  430. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +3 -0
  431. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestLength.md +12 -0
  432. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestType.md +17 -0
  433. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/unencodedDigestMalformedDictionary.md +14 -0
  434. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/descriptions/unencodedDigestUnknownAlgorithm.md +15 -0
  435. package/build/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/issues_manager.js +35 -0
  436. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/LogManager.js +67 -0
  437. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/NetworkLog.js +494 -0
  438. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/RequestResolver.js +49 -0
  439. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs-meta.js +73 -0
  440. package/build/node_modules/chrome-devtools-frontend/front_end/models/logs/logs.js +7 -0
  441. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/Calculator.js +4 -0
  442. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/NetworkTimeCalculator.js +256 -0
  443. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/RequestTimeRanges.js +122 -0
  444. package/build/node_modules/chrome-devtools-frontend/front_end/models/network_time_calculator/network_time_calculator.js +6 -0
  445. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/FunctionCodeResolver.js +192 -0
  446. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/NamesResolver.js +622 -0
  447. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/ScopeChainModel.js +59 -0
  448. package/build/node_modules/chrome-devtools-frontend/front_end/models/source_map_scopes/source_map_scopes.js +7 -0
  449. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTrace.js +4 -0
  450. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceImpl.js +67 -0
  451. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/StackTraceModel.js +97 -0
  452. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/Trie.js +121 -0
  453. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace.js +5 -0
  454. package/build/node_modules/chrome-devtools-frontend/front_end/models/stack_trace/stack_trace_impl.js +7 -0
  455. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/CodeMirrorUtils.js +32 -0
  456. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentData.js +173 -0
  457. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/ContentProvider.js +30 -0
  458. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StaticContentProvider.js +32 -0
  459. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/StreamingContentData.js +79 -0
  460. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/Text.js +69 -0
  461. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextCursor.js +35 -0
  462. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextRange.js +231 -0
  463. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/TextUtils.js +355 -0
  464. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/WasmDisassembly.js +68 -0
  465. package/build/node_modules/chrome-devtools-frontend/front_end/models/text_utils/text_utils.js +14 -0
  466. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EntityMapper.js +122 -0
  467. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/EventsSerializer.js +81 -0
  468. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/LanternComputationData.js +371 -0
  469. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/ModelImpl.js +169 -0
  470. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Name.js +114 -0
  471. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Processor.js +555 -0
  472. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/Styles.js +815 -0
  473. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/FilmStrip.js +44 -0
  474. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/MainThreadActivity.js +76 -0
  475. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ScriptDuplication.js +162 -0
  476. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/StackTraceForEvent.js +191 -0
  477. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/ThirdParties.js +118 -0
  478. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceFilter.js +50 -0
  479. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/TraceTree.js +599 -0
  480. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/extras/extras.js +10 -0
  481. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationFramesHandler.js +109 -0
  482. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AnimationHandler.js +26 -0
  483. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AsyncJSCallsHandler.js +187 -0
  484. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/AuctionWorkletsHandler.js +162 -0
  485. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/DOMStatsHandler.js +21 -0
  486. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ExtensionTraceDataHandler.js +263 -0
  487. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FlowsHandler.js +148 -0
  488. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/FramesHandler.js +485 -0
  489. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/GPUHandler.js +35 -0
  490. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ImagePaintingHandler.js +147 -0
  491. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InitiatorsHandler.js +180 -0
  492. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/InvalidationsHandler.js +126 -0
  493. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestImagePaintHandler.js +85 -0
  494. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LargestTextPaintHandler.js +27 -0
  495. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayerTreeHandler.js +103 -0
  496. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/LayoutShiftsHandler.js +449 -0
  497. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MemoryHandler.js +21 -0
  498. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/MetaHandler.js +404 -0
  499. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ModelHandlers.js +33 -0
  500. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/NetworkRequestsHandler.js +566 -0
  501. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageFramesHandler.js +42 -0
  502. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/PageLoadMetricsHandler.js +349 -0
  503. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/RendererHandler.js +346 -0
  504. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SamplesHandler.js +260 -0
  505. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScreenshotsHandler.js +97 -0
  506. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/ScriptsHandler.js +276 -0
  507. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/SelectorStatsHandler.js +71 -0
  508. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/Threads.js +101 -0
  509. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserInteractionsHandler.js +317 -0
  510. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/UserTimingsHandler.js +183 -0
  511. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WarningsHandler.js +134 -0
  512. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/WorkersHandler.js +33 -0
  513. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/handlers.js +7 -0
  514. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/helpers.js +163 -0
  515. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/handlers/types.js +1 -0
  516. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Extensions.js +41 -0
  517. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Network.js +102 -0
  518. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SamplesIntegrator.js +495 -0
  519. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/SyntheticEvents.js +74 -0
  520. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Timing.js +186 -0
  521. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/Trace.js +820 -0
  522. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/TreeHelpers.js +254 -0
  523. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/helpers/helpers.js +10 -0
  524. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/CLSCulprits.js +489 -0
  525. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Cache.js +209 -0
  526. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Common.js +340 -0
  527. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DOMSize.js +181 -0
  528. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DocumentLatency.js +258 -0
  529. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/DuplicatedJavaScript.js +90 -0
  530. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/FontDisplay.js +82 -0
  531. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ForcedReflow.js +161 -0
  532. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/INPBreakdown.js +129 -0
  533. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ImageDelivery.js +263 -0
  534. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPBreakdown.js +199 -0
  535. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LCPDiscovery.js +183 -0
  536. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/LegacyJavaScript.js +90 -0
  537. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Models.js +21 -0
  538. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ModernHTTP.js +200 -0
  539. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/NetworkDependencyTree.js +545 -0
  540. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/RenderBlocking.js +192 -0
  541. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/SlowCSSSelector.js +136 -0
  542. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Statistics.js +92 -0
  543. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/ThirdParties.js +98 -0
  544. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/Viewport.js +102 -0
  545. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/insights.js +9 -0
  546. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/insights/types.js +18 -0
  547. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/LanternError.js +6 -0
  548. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/NetworkAnalyzer.js +488 -0
  549. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/core/core.js +5 -0
  550. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/BaseNode.js +276 -0
  551. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/CPUNode.js +63 -0
  552. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/NetworkNode.js +82 -0
  553. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/PageDependencyGraph.js +551 -0
  554. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/graph/graph.js +7 -0
  555. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/lantern.js +9 -0
  556. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/FirstContentfulPaint.js +136 -0
  557. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Interactive.js +67 -0
  558. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/LargestContentfulPaint.js +68 -0
  559. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/MaxPotentialFID.js +48 -0
  560. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/Metric.js +68 -0
  561. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/SpeedIndex.js +101 -0
  562. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TBTUtils.js +64 -0
  563. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/TotalBlockingTime.js +78 -0
  564. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/metrics/metrics.js +11 -0
  565. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/ConnectionPool.js +115 -0
  566. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Constants.js +42 -0
  567. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/DNSCache.js +47 -0
  568. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/SimulationTimingMap.js +134 -0
  569. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/Simulator.js +450 -0
  570. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/TCPConnection.js +154 -0
  571. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/simulation/simulation.js +9 -0
  572. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/Lantern.js +24 -0
  573. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/lantern/types/types.js +4 -0
  574. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/trace.js +17 -0
  575. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Configuration.js +18 -0
  576. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Extensions.js +37 -0
  577. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/File.js +57 -0
  578. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Overlays.js +4 -0
  579. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/Timing.js +15 -0
  580. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/TraceEvents.js +580 -0
  581. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace/types/types.js +9 -0
  582. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/SourceMapsResolver.js +224 -0
  583. package/build/node_modules/chrome-devtools-frontend/front_end/models/trace_source_maps_resolver/trace_source_maps_resolver.js +4 -0
  584. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/FileManager.js +64 -0
  585. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/IgnoreListManager.js +504 -0
  586. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/SearchConfig.js +113 -0
  587. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/UISourceCode.js +601 -0
  588. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/WorkspaceImpl.js +201 -0
  589. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace-meta.js +34 -0
  590. package/build/node_modules/chrome-devtools-frontend/front_end/models/workspace/workspace.js +9 -0
  591. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/codemirror.next/codemirror.next.js +1 -0
  592. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/i18n/LICENSE +202 -0
  593. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/i18n/i18n-impl.js +46 -0
  594. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/i18n/i18n.js +6 -0
  595. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/i18n/localized-string-set.js +122 -0
  596. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/LICENSE +33 -0
  597. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/intl-messageformat.js +5 -0
  598. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/index.js +13 -0
  599. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/intl-messageformat.esm.js +1725 -0
  600. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/intl-messageformat.iife.js +1840 -0
  601. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/index.js +10 -0
  602. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/core.js +233 -0
  603. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/error.js +48 -0
  604. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/lib/src/formatters.js +177 -0
  605. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/core.js +236 -0
  606. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/error.js +51 -0
  607. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/intl-messageformat/package/src/formatters.js +182 -0
  608. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/LICENSE +202 -0
  609. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/legacy-javascript.js +2 -0
  610. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/legacy-javascript/lib/legacy-javascript.js +940 -0
  611. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/LICENSE +39 -0
  612. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/marked.js +2 -0
  613. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/bin/main.js +255 -0
  614. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/bin/marked.js +11 -0
  615. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.esm.js +2695 -0
  616. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.js +2233 -0
  617. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/lib/marked.umd.js +2719 -0
  618. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Lexer.js +453 -0
  619. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Parser.js +233 -0
  620. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Renderer.js +137 -0
  621. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Slugger.js +46 -0
  622. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/TextRenderer.js +34 -0
  623. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/Tokenizer.js +683 -0
  624. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/defaults.js +27 -0
  625. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/helpers.js +240 -0
  626. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/marked.js +318 -0
  627. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/marked/package/src/rules.js +243 -0
  628. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/LICENSE +26 -0
  629. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/builder.js +196 -0
  630. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/builder/safe_builder.js +226 -0
  631. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/codec.js +4 -0
  632. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/decode/decode.js +394 -0
  633. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encode.js +24 -0
  634. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/encode/encoder.js +283 -0
  635. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/mod.js +7 -0
  636. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/util.js +9 -0
  637. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/package/src/vlq.js +84 -0
  638. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/source-map-scopes-codec/source-map-scopes-codec.js +4 -0
  639. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/LICENSE +20 -0
  640. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/lib/nostats-subset.js +146 -0
  641. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-nostats-subset.js +2 -0
  642. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/httparchive-subset.js +2 -0
  643. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.js +118 -0
  644. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/create-entity-finder-api.test.js +40 -0
  645. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/entities.test.js +26 -0
  646. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.js +4 -0
  647. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/index.test.js +215 -0
  648. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive-nostats.js +4 -0
  649. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/httparchive.js +4 -0
  650. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/lib/subsets/nostats.js +4 -0
  651. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/package/nostats-subset.js +2 -0
  652. package/build/node_modules/chrome-devtools-frontend/front_end/third_party/third-party-web/third-party-web.js +2 -0
  653. package/build/node_modules/chrome-devtools-frontend/mcp/HostBindings.js +222 -0
  654. package/build/node_modules/chrome-devtools-frontend/mcp/mcp.js +35 -0
  655. package/build/src/index.js +0 -0
  656. package/package.json +21 -20
@@ -0,0 +1,1706 @@
1
+ // Copyright 2014 The Chromium Authors
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
4
+ // TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ import * as Common from '../../core/common/common.js';
7
+ import * as i18n from '../../core/i18n/i18n.js';
8
+ import * as SDK from '../../core/sdk/sdk.js';
9
+ import { Insets, MaxDeviceSize, MinDeviceSize } from './DeviceModeModel.js';
10
+ const UIStrings = {
11
+ /**
12
+ * @description Title of the Laptop with touch device
13
+ */
14
+ laptopWithTouch: 'Laptop with touch',
15
+ /**
16
+ * @description Title of the Laptop with HiDPI screen device
17
+ */
18
+ laptopWithHiDPIScreen: 'Laptop with HiDPI screen',
19
+ /**
20
+ * @description Title of the Laptop with MDPI screen device
21
+ */
22
+ laptopWithMDPIScreen: 'Laptop with MDPI screen',
23
+ };
24
+ const str_ = i18n.i18n.registerUIStrings('models/emulation/EmulatedDevices.ts', UIStrings);
25
+ const i18nLazyString = i18n.i18n.getLazilyComputedLocalizedString.bind(undefined, str_);
26
+ export function computeRelativeImageURL(cssURLValue) {
27
+ return cssURLValue.replace(/@url\(([^\)]*?)\)/g, (_match, url) => {
28
+ return new URL(`../../emulated_devices/${url}`, import.meta.url).toString();
29
+ });
30
+ }
31
+ export class EmulatedDevice {
32
+ title;
33
+ type;
34
+ order;
35
+ vertical;
36
+ horizontal;
37
+ deviceScaleFactor;
38
+ capabilities;
39
+ userAgent;
40
+ userAgentMetadata;
41
+ modes;
42
+ isDualScreen;
43
+ isFoldableScreen;
44
+ verticalSpanned;
45
+ horizontalSpanned;
46
+ #show;
47
+ #showByDefault;
48
+ constructor() {
49
+ this.title = '';
50
+ this.type = Type.Unknown;
51
+ this.vertical = { width: 0, height: 0, outlineInsets: null, outlineImage: null, hinge: null };
52
+ this.horizontal = { width: 0, height: 0, outlineInsets: null, outlineImage: null, hinge: null };
53
+ this.deviceScaleFactor = 1;
54
+ this.capabilities = ["touch" /* Capability.TOUCH */, "mobile" /* Capability.MOBILE */];
55
+ this.userAgent = '';
56
+ this.userAgentMetadata = null;
57
+ this.modes = [];
58
+ this.isDualScreen = false;
59
+ this.isFoldableScreen = false;
60
+ this.verticalSpanned = { width: 0, height: 0, outlineInsets: null, outlineImage: null, hinge: null };
61
+ this.horizontalSpanned = { width: 0, height: 0, outlineInsets: null, outlineImage: null, hinge: null };
62
+ this.#show = Show.Default;
63
+ this.#showByDefault = true;
64
+ }
65
+ static fromJSONV1(json) {
66
+ try {
67
+ function parseValue(object, key, type, defaultValue) {
68
+ if (typeof object !== 'object' || object === null || !object.hasOwnProperty(key)) {
69
+ if (typeof defaultValue !== 'undefined') {
70
+ return defaultValue;
71
+ }
72
+ throw new Error('Emulated device is missing required property \'' + key + '\'');
73
+ }
74
+ const value = object[key];
75
+ if (typeof value !== type || value === null) {
76
+ throw new Error('Emulated device property \'' + key + '\' has wrong type \'' + typeof value + '\'');
77
+ }
78
+ return value;
79
+ }
80
+ function parseIntValue(object, key) {
81
+ const value = parseValue(object, key, 'number');
82
+ if (value !== Math.abs(value)) {
83
+ throw new Error('Emulated device value \'' + key + '\' must be integer');
84
+ }
85
+ return value;
86
+ }
87
+ function parseInsets(json) {
88
+ return new Insets(parseIntValue(json, 'left'), parseIntValue(json, 'top'), parseIntValue(json, 'right'), parseIntValue(json, 'bottom'));
89
+ }
90
+ function parseRGBA(json) {
91
+ const result = {};
92
+ result.r = parseIntValue(json, 'r');
93
+ if (result.r < 0 || result.r > 255) {
94
+ throw new Error('color has wrong r value: ' + result.r);
95
+ }
96
+ result.g = parseIntValue(json, 'g');
97
+ if (result.g < 0 || result.g > 255) {
98
+ throw new Error('color has wrong g value: ' + result.g);
99
+ }
100
+ result.b = parseIntValue(json, 'b');
101
+ if (result.b < 0 || result.b > 255) {
102
+ throw new Error('color has wrong b value: ' + result.b);
103
+ }
104
+ result.a = parseValue(json, 'a', 'number');
105
+ if (result.a < 0 || result.a > 1) {
106
+ throw new Error('color has wrong a value: ' + result.a);
107
+ }
108
+ return result;
109
+ }
110
+ function parseHinge(json) {
111
+ const result = {};
112
+ result.width = parseIntValue(json, 'width');
113
+ if (result.width < 0 || result.width > MaxDeviceSize) {
114
+ throw new Error('Emulated device has wrong hinge width: ' + result.width);
115
+ }
116
+ result.height = parseIntValue(json, 'height');
117
+ if (result.height < 0 || result.height > MaxDeviceSize) {
118
+ throw new Error('Emulated device has wrong hinge height: ' + result.height);
119
+ }
120
+ result.x = parseIntValue(json, 'x');
121
+ if (result.x < 0 || result.x > MaxDeviceSize) {
122
+ throw new Error('Emulated device has wrong x offset: ' + result.height);
123
+ }
124
+ result.y = parseIntValue(json, 'y');
125
+ if (result.x < 0 || result.x > MaxDeviceSize) {
126
+ throw new Error('Emulated device has wrong y offset: ' + result.height);
127
+ }
128
+ if (json['contentColor']) {
129
+ result.contentColor = parseRGBA(json['contentColor']);
130
+ }
131
+ if (json['outlineColor']) {
132
+ result.outlineColor = parseRGBA(json['outlineColor']);
133
+ }
134
+ return result;
135
+ }
136
+ function parseOrientation(json) {
137
+ const result = {};
138
+ result.width = parseIntValue(json, 'width');
139
+ if (result.width < 0 || result.width > MaxDeviceSize || result.width < MinDeviceSize) {
140
+ throw new Error('Emulated device has wrong width: ' + result.width);
141
+ }
142
+ result.height = parseIntValue(json, 'height');
143
+ if (result.height < 0 || result.height > MaxDeviceSize || result.height < MinDeviceSize) {
144
+ throw new Error('Emulated device has wrong height: ' + result.height);
145
+ }
146
+ const outlineInsets = parseValue(json['outline'], 'insets', 'object', null);
147
+ if (outlineInsets) {
148
+ result.outlineInsets = parseInsets(outlineInsets);
149
+ if (result.outlineInsets.left < 0 || result.outlineInsets.top < 0) {
150
+ throw new Error('Emulated device has wrong outline insets');
151
+ }
152
+ result.outlineImage = parseValue(json['outline'], 'image', 'string');
153
+ }
154
+ if (json['hinge']) {
155
+ result.hinge = parseHinge(parseValue(json, 'hinge', 'object', undefined));
156
+ }
157
+ return result;
158
+ }
159
+ const result = new EmulatedDevice();
160
+ result.title = parseValue(json, 'title', 'string');
161
+ const type = parseValue(json, 'type', 'string');
162
+ if (!Object.values(Type).includes(type)) {
163
+ throw new Error('Emulated device has wrong type: ' + type);
164
+ }
165
+ result.type = type;
166
+ result.order = parseValue(json, 'order', 'number', 0);
167
+ const rawUserAgent = parseValue(json, 'user-agent', 'string');
168
+ result.userAgent = SDK.NetworkManager.MultitargetNetworkManager.patchUserAgentWithChromeVersion(rawUserAgent);
169
+ result.userAgentMetadata = parseValue(json, 'user-agent-metadata', 'object', null);
170
+ const capabilities = parseValue(json, 'capabilities', 'object', []);
171
+ if (!Array.isArray(capabilities)) {
172
+ throw new Error('Emulated device capabilities must be an array');
173
+ }
174
+ result.capabilities = [];
175
+ for (let i = 0; i < capabilities.length; ++i) {
176
+ if (typeof capabilities[i] !== 'string') {
177
+ throw new Error('Emulated device capability must be a string');
178
+ }
179
+ result.capabilities.push(capabilities[i]);
180
+ }
181
+ result.deviceScaleFactor = parseValue(json['screen'], 'device-pixel-ratio', 'number');
182
+ if (result.deviceScaleFactor < 0 || result.deviceScaleFactor > 100) {
183
+ throw new Error('Emulated device has wrong deviceScaleFactor: ' + result.deviceScaleFactor);
184
+ }
185
+ result.vertical = parseOrientation(parseValue(json['screen'], 'vertical', 'object'));
186
+ result.horizontal = parseOrientation(parseValue(json['screen'], 'horizontal', 'object'));
187
+ result.isDualScreen = parseValue(json, 'dual-screen', 'boolean', false);
188
+ result.isFoldableScreen = parseValue(json, 'foldable-screen', 'boolean', false);
189
+ if (result.isDualScreen || result.isFoldableScreen) {
190
+ result.verticalSpanned = parseOrientation(parseValue(json['screen'], 'vertical-spanned', 'object', null));
191
+ result.horizontalSpanned = parseOrientation(parseValue(json['screen'], 'horizontal-spanned', 'object', null));
192
+ }
193
+ if ((result.isDualScreen || result.isFoldableScreen) && (!result.verticalSpanned || !result.horizontalSpanned)) {
194
+ throw new Error('Emulated device \'' + result.title + '\'has dual screen without spanned orientations');
195
+ }
196
+ const modes = parseValue(json, 'modes', 'object', [
197
+ { title: 'default', orientation: 'vertical' },
198
+ { title: 'default', orientation: 'horizontal' },
199
+ ]);
200
+ if (!Array.isArray(modes)) {
201
+ throw new Error('Emulated device modes must be an array');
202
+ }
203
+ result.modes = [];
204
+ for (let i = 0; i < modes.length; ++i) {
205
+ const mode = {};
206
+ mode.title = parseValue(modes[i], 'title', 'string');
207
+ mode.orientation = parseValue(modes[i], 'orientation', 'string');
208
+ if (mode.orientation !== Vertical && mode.orientation !== Horizontal && mode.orientation !== VerticalSpanned &&
209
+ mode.orientation !== HorizontalSpanned) {
210
+ throw new Error('Emulated device mode has wrong orientation \'' + mode.orientation + '\'');
211
+ }
212
+ const orientation = result.orientationByName(mode.orientation);
213
+ mode.insets = parseInsets(parseValue(modes[i], 'insets', 'object', { left: 0, top: 0, right: 0, bottom: 0 }));
214
+ if (mode.insets.top < 0 || mode.insets.left < 0 || mode.insets.right < 0 || mode.insets.bottom < 0 ||
215
+ mode.insets.top + mode.insets.bottom > orientation.height ||
216
+ mode.insets.left + mode.insets.right > orientation.width) {
217
+ throw new Error('Emulated device mode \'' + mode.title + '\'has wrong mode insets');
218
+ }
219
+ mode.image = parseValue(modes[i], 'image', 'string', null);
220
+ result.modes.push(mode);
221
+ }
222
+ result.#showByDefault = parseValue(json, 'show-by-default', 'boolean', undefined);
223
+ const show = parseValue(json, 'show', 'string', Show.Default);
224
+ if (!Object.values(Show).includes(show)) {
225
+ throw new Error('Emulated device has wrong show mode: ' + show);
226
+ }
227
+ result.#show = show;
228
+ return result;
229
+ }
230
+ catch {
231
+ return null;
232
+ }
233
+ }
234
+ static deviceComparator(device1, device2) {
235
+ const order1 = device1.order || 0;
236
+ const order2 = device2.order || 0;
237
+ if (order1 > order2) {
238
+ return 1;
239
+ }
240
+ if (order2 > order1) {
241
+ return -1;
242
+ }
243
+ return device1.title < device2.title ? -1 : (device1.title > device2.title ? 1 : 0);
244
+ }
245
+ modesForOrientation(orientation) {
246
+ const result = [];
247
+ for (let index = 0; index < this.modes.length; index++) {
248
+ if (this.modes[index].orientation === orientation) {
249
+ result.push(this.modes[index]);
250
+ }
251
+ }
252
+ return result;
253
+ }
254
+ getSpanPartner(mode) {
255
+ switch (mode.orientation) {
256
+ case Vertical:
257
+ return this.modesForOrientation(VerticalSpanned)[0];
258
+ case Horizontal:
259
+ return this.modesForOrientation(HorizontalSpanned)[0];
260
+ case VerticalSpanned:
261
+ return this.modesForOrientation(Vertical)[0];
262
+ default:
263
+ return this.modesForOrientation(Horizontal)[0];
264
+ }
265
+ }
266
+ getRotationPartner(mode) {
267
+ switch (mode.orientation) {
268
+ case HorizontalSpanned:
269
+ return this.modesForOrientation(VerticalSpanned)[0];
270
+ case VerticalSpanned:
271
+ return this.modesForOrientation(HorizontalSpanned)[0];
272
+ case Horizontal:
273
+ return this.modesForOrientation(Vertical)[0];
274
+ default:
275
+ return this.modesForOrientation(Horizontal)[0];
276
+ }
277
+ }
278
+ toJSON() {
279
+ const json = {};
280
+ json['title'] = this.title;
281
+ json['type'] = this.type;
282
+ json['user-agent'] = this.userAgent;
283
+ json['capabilities'] = this.capabilities;
284
+ json['screen'] = {
285
+ 'device-pixel-ratio': this.deviceScaleFactor,
286
+ vertical: this.orientationToJSON(this.vertical),
287
+ horizontal: this.orientationToJSON(this.horizontal),
288
+ 'vertical-spanned': undefined,
289
+ 'horizontal-spanned': undefined,
290
+ };
291
+ if (this.isDualScreen || this.isFoldableScreen) {
292
+ json['screen']['vertical-spanned'] = this.orientationToJSON(this.verticalSpanned);
293
+ json['screen']['horizontal-spanned'] = this.orientationToJSON(this.horizontalSpanned);
294
+ }
295
+ json['modes'] = [];
296
+ for (let i = 0; i < this.modes.length; ++i) {
297
+ const mode = {
298
+ title: this.modes[i].title,
299
+ orientation: this.modes[i].orientation,
300
+ insets: {
301
+ left: this.modes[i].insets.left,
302
+ top: this.modes[i].insets.top,
303
+ right: this.modes[i].insets.right,
304
+ bottom: this.modes[i].insets.bottom,
305
+ },
306
+ image: this.modes[i].image || undefined,
307
+ };
308
+ json['modes'].push(mode);
309
+ }
310
+ json['show-by-default'] = this.#showByDefault;
311
+ json['dual-screen'] = this.isDualScreen;
312
+ json['foldable-screen'] = this.isFoldableScreen;
313
+ json['show'] = this.#show;
314
+ if (this.userAgentMetadata) {
315
+ json['user-agent-metadata'] = this.userAgentMetadata;
316
+ }
317
+ return json;
318
+ }
319
+ orientationToJSON(orientation) {
320
+ const json = {};
321
+ json['width'] = orientation.width;
322
+ json['height'] = orientation.height;
323
+ if (orientation.outlineInsets) {
324
+ json.outline = {
325
+ insets: {
326
+ left: orientation.outlineInsets.left,
327
+ top: orientation.outlineInsets.top,
328
+ right: orientation.outlineInsets.right,
329
+ bottom: orientation.outlineInsets.bottom,
330
+ },
331
+ image: orientation.outlineImage,
332
+ };
333
+ }
334
+ if (orientation.hinge) {
335
+ json.hinge = {
336
+ width: orientation.hinge.width,
337
+ height: orientation.hinge.height,
338
+ x: orientation.hinge.x,
339
+ y: orientation.hinge.y,
340
+ contentColor: undefined,
341
+ outlineColor: undefined,
342
+ };
343
+ if (orientation.hinge.contentColor) {
344
+ json.hinge.contentColor = {
345
+ r: orientation.hinge.contentColor.r,
346
+ g: orientation.hinge.contentColor.g,
347
+ b: orientation.hinge.contentColor.b,
348
+ a: orientation.hinge.contentColor.a,
349
+ };
350
+ }
351
+ if (orientation.hinge.outlineColor) {
352
+ json.hinge.outlineColor = {
353
+ r: orientation.hinge.outlineColor.r,
354
+ g: orientation.hinge.outlineColor.g,
355
+ b: orientation.hinge.outlineColor.b,
356
+ a: orientation.hinge.outlineColor.a,
357
+ };
358
+ }
359
+ }
360
+ return json;
361
+ }
362
+ modeImage(mode) {
363
+ if (!mode.image) {
364
+ return '';
365
+ }
366
+ return computeRelativeImageURL(mode.image);
367
+ }
368
+ outlineImage(mode) {
369
+ const orientation = this.orientationByName(mode.orientation);
370
+ if (!orientation.outlineImage) {
371
+ return '';
372
+ }
373
+ return computeRelativeImageURL(orientation.outlineImage);
374
+ }
375
+ orientationByName(name) {
376
+ switch (name) {
377
+ case VerticalSpanned:
378
+ return this.verticalSpanned;
379
+ case HorizontalSpanned:
380
+ return this.horizontalSpanned;
381
+ case Vertical:
382
+ return this.vertical;
383
+ default:
384
+ return this.horizontal;
385
+ }
386
+ }
387
+ show() {
388
+ if (this.#show === Show.Default) {
389
+ return this.#showByDefault;
390
+ }
391
+ return this.#show === Show.Always;
392
+ }
393
+ setShow(show) {
394
+ this.#show = show ? Show.Always : Show.Never;
395
+ }
396
+ copyShowFrom(other) {
397
+ this.#show = other.#show;
398
+ }
399
+ touch() {
400
+ return this.capabilities.indexOf("touch" /* Capability.TOUCH */) !== -1;
401
+ }
402
+ mobile() {
403
+ return this.capabilities.indexOf("mobile" /* Capability.MOBILE */) !== -1;
404
+ }
405
+ }
406
+ export const Horizontal = 'horizontal';
407
+ export const Vertical = 'vertical';
408
+ export const HorizontalSpanned = 'horizontal-spanned';
409
+ export const VerticalSpanned = 'vertical-spanned';
410
+ var Type;
411
+ (function (Type) {
412
+ /* eslint-disable @typescript-eslint/naming-convention -- Indexed access. */
413
+ Type["Phone"] = "phone";
414
+ Type["Tablet"] = "tablet";
415
+ Type["Notebook"] = "notebook";
416
+ Type["Desktop"] = "desktop";
417
+ Type["Unknown"] = "unknown";
418
+ /* eslint-enable @typescript-eslint/naming-convention */
419
+ })(Type || (Type = {}));
420
+ var Show;
421
+ (function (Show) {
422
+ /* eslint-disable @typescript-eslint/naming-convention -- Indexed access. */
423
+ Show["Always"] = "Always";
424
+ Show["Default"] = "Default";
425
+ Show["Never"] = "Never";
426
+ /* eslint-enable @typescript-eslint/naming-convention */
427
+ })(Show || (Show = {}));
428
+ let emulatedDevicesListInstance;
429
+ export class EmulatedDevicesList extends Common.ObjectWrapper.ObjectWrapper {
430
+ #standardSetting;
431
+ #standard;
432
+ #customSetting;
433
+ #custom;
434
+ constructor() {
435
+ super();
436
+ this.#standardSetting = Common.Settings.Settings.instance().createSetting('standard-emulated-device-list', []);
437
+ this.#standard = new Set();
438
+ this.listFromJSONV1(this.#standardSetting.get(), this.#standard);
439
+ this.updateStandardDevices();
440
+ this.#customSetting = Common.Settings.Settings.instance().createSetting('custom-emulated-device-list', []);
441
+ this.#custom = new Set();
442
+ if (!this.listFromJSONV1(this.#customSetting.get(), this.#custom)) {
443
+ this.saveCustomDevices();
444
+ }
445
+ }
446
+ static instance() {
447
+ if (!emulatedDevicesListInstance) {
448
+ emulatedDevicesListInstance = new EmulatedDevicesList();
449
+ }
450
+ return emulatedDevicesListInstance;
451
+ }
452
+ updateStandardDevices() {
453
+ const devices = new Set();
454
+ for (const emulatedDevice of emulatedDevices) {
455
+ const device = EmulatedDevice.fromJSONV1(emulatedDevice);
456
+ if (device) {
457
+ devices.add(device);
458
+ }
459
+ }
460
+ this.copyShowValues(this.#standard, devices);
461
+ this.#standard = devices;
462
+ this.saveStandardDevices();
463
+ }
464
+ listFromJSONV1(jsonArray, result) {
465
+ if (!Array.isArray(jsonArray)) {
466
+ return false;
467
+ }
468
+ let success = true;
469
+ for (let i = 0; i < jsonArray.length; ++i) {
470
+ const device = EmulatedDevice.fromJSONV1(jsonArray[i]);
471
+ if (device) {
472
+ result.add(device);
473
+ if (!device.modes.length) {
474
+ device.modes.push({ title: '', orientation: Horizontal, insets: new Insets(0, 0, 0, 0), image: null });
475
+ device.modes.push({ title: '', orientation: Vertical, insets: new Insets(0, 0, 0, 0), image: null });
476
+ }
477
+ }
478
+ else {
479
+ success = false;
480
+ }
481
+ }
482
+ return success;
483
+ }
484
+ static rawEmulatedDevicesForTest() {
485
+ return emulatedDevices;
486
+ }
487
+ standard() {
488
+ return [...this.#standard];
489
+ }
490
+ custom() {
491
+ return [...this.#custom];
492
+ }
493
+ revealCustomSetting() {
494
+ void Common.Revealer.reveal(this.#customSetting);
495
+ }
496
+ addCustomDevice(device) {
497
+ this.#custom.add(device);
498
+ this.saveCustomDevices();
499
+ }
500
+ removeCustomDevice(device) {
501
+ this.#custom.delete(device);
502
+ this.saveCustomDevices();
503
+ }
504
+ saveCustomDevices() {
505
+ const json = [];
506
+ this.#custom.forEach(device => json.push(device.toJSON()));
507
+ this.#customSetting.set(json);
508
+ this.dispatchEventToListeners("CustomDevicesUpdated" /* Events.CUSTOM_DEVICES_UPDATED */);
509
+ }
510
+ saveStandardDevices() {
511
+ const json = [];
512
+ this.#standard.forEach(device => json.push(device.toJSON()));
513
+ this.#standardSetting.set(json);
514
+ this.dispatchEventToListeners("StandardDevicesUpdated" /* Events.STANDARD_DEVICES_UPDATED */);
515
+ }
516
+ copyShowValues(from, to) {
517
+ const fromDeviceById = new Map();
518
+ for (const device of from) {
519
+ fromDeviceById.set(device.title, device);
520
+ }
521
+ for (const toDevice of to) {
522
+ const fromDevice = fromDeviceById.get(toDevice.title);
523
+ if (fromDevice) {
524
+ toDevice.copyShowFrom(fromDevice);
525
+ }
526
+ }
527
+ }
528
+ }
529
+ // These props should quoted for the script to work properly
530
+ /* eslint-disable @stylistic/quote-props */
531
+ const emulatedDevices = [
532
+ // This is used by a python script to keep this list up-to-date with
533
+ // chromedriver native code.
534
+ // See //chrome/test/chromedriver/embed_mobile_devices_in_cpp.py in Chromium.
535
+ // DEVICE-LIST-BEGIN
536
+ {
537
+ 'order': 10,
538
+ 'show-by-default': true,
539
+ 'title': 'iPhone SE',
540
+ 'screen': {
541
+ 'horizontal': {
542
+ 'width': 667,
543
+ 'height': 375,
544
+ },
545
+ 'device-pixel-ratio': 2,
546
+ 'vertical': {
547
+ 'width': 375,
548
+ 'height': 667,
549
+ },
550
+ },
551
+ 'capabilities': ['touch', 'mobile'],
552
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1',
553
+ 'type': 'phone',
554
+ },
555
+ {
556
+ 'order': 12,
557
+ 'show-by-default': true,
558
+ 'title': 'iPhone XR',
559
+ 'screen': {
560
+ 'horizontal': {
561
+ 'width': 896,
562
+ 'height': 414,
563
+ },
564
+ 'device-pixel-ratio': 2,
565
+ 'vertical': {
566
+ 'width': 414,
567
+ 'height': 896,
568
+ },
569
+ },
570
+ 'capabilities': ['touch', 'mobile'],
571
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1',
572
+ 'type': 'phone',
573
+ },
574
+ {
575
+ 'order': 14,
576
+ 'show-by-default': true,
577
+ 'title': 'iPhone 12 Pro',
578
+ 'screen': {
579
+ 'horizontal': {
580
+ 'width': 844,
581
+ 'height': 390,
582
+ },
583
+ 'device-pixel-ratio': 3,
584
+ 'vertical': {
585
+ 'width': 390,
586
+ 'height': 844,
587
+ },
588
+ },
589
+ 'capabilities': ['touch', 'mobile'],
590
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1',
591
+ 'type': 'phone',
592
+ },
593
+ {
594
+ 'order': 15,
595
+ 'show-by-default': true,
596
+ 'title': 'iPhone 14 Pro Max',
597
+ 'screen': {
598
+ 'horizontal': {
599
+ 'width': 932,
600
+ 'height': 430,
601
+ },
602
+ 'device-pixel-ratio': 3,
603
+ 'vertical': {
604
+ 'width': 430,
605
+ 'height': 932,
606
+ },
607
+ },
608
+ 'capabilities': ['touch', 'mobile'],
609
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1',
610
+ 'type': 'phone',
611
+ },
612
+ {
613
+ 'order': 16,
614
+ 'show-by-default': false,
615
+ 'title': 'Pixel 3 XL',
616
+ 'screen': {
617
+ 'horizontal': {
618
+ 'width': 786,
619
+ 'height': 393,
620
+ },
621
+ 'device-pixel-ratio': 2.75,
622
+ 'vertical': {
623
+ 'width': 393,
624
+ 'height': 786,
625
+ },
626
+ },
627
+ 'capabilities': ['touch', 'mobile'],
628
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 11; Pixel 3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
629
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '11', 'architecture': '', 'model': 'Pixel 3', 'mobile': true },
630
+ 'type': 'phone',
631
+ },
632
+ {
633
+ 'order': 18,
634
+ 'show-by-default': true,
635
+ 'title': 'Pixel 7',
636
+ 'screen': {
637
+ 'horizontal': {
638
+ 'width': 915,
639
+ 'height': 412,
640
+ },
641
+ 'device-pixel-ratio': 2.625,
642
+ 'vertical': {
643
+ 'width': 412,
644
+ 'height': 915,
645
+ },
646
+ },
647
+ 'capabilities': ['touch', 'mobile'],
648
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 13; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
649
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '13', 'architecture': '', 'model': 'Pixel 5', 'mobile': true },
650
+ 'type': 'phone',
651
+ },
652
+ {
653
+ 'order': 20,
654
+ 'show-by-default': true,
655
+ 'title': 'Samsung Galaxy S8+',
656
+ 'screen': {
657
+ 'horizontal': {
658
+ 'width': 740,
659
+ 'height': 360,
660
+ },
661
+ 'device-pixel-ratio': 4,
662
+ 'vertical': {
663
+ 'width': 360,
664
+ 'height': 740,
665
+ },
666
+ },
667
+ 'capabilities': ['touch', 'mobile'],
668
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
669
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '8.0.0', 'architecture': '', 'model': 'SM-G955U', 'mobile': true },
670
+ 'type': 'phone',
671
+ },
672
+ {
673
+ 'order': 24,
674
+ 'show-by-default': true,
675
+ 'title': 'Samsung Galaxy S20 Ultra',
676
+ 'screen': {
677
+ 'horizontal': {
678
+ 'width': 915,
679
+ 'height': 412,
680
+ },
681
+ 'device-pixel-ratio': 3.5,
682
+ 'vertical': {
683
+ 'width': 412,
684
+ 'height': 915,
685
+ },
686
+ },
687
+ 'capabilities': ['touch', 'mobile'],
688
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 13; SM-G981B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
689
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '13', 'architecture': '', 'model': 'SM-G981B', 'mobile': true },
690
+ 'type': 'phone',
691
+ },
692
+ {
693
+ 'order': 26,
694
+ 'show-by-default': true,
695
+ 'title': 'iPad Mini',
696
+ 'screen': {
697
+ 'horizontal': {
698
+ 'width': 1024,
699
+ 'height': 768,
700
+ },
701
+ 'device-pixel-ratio': 2,
702
+ 'vertical': {
703
+ 'width': 768,
704
+ 'height': 1024,
705
+ },
706
+ },
707
+ 'capabilities': ['touch', 'mobile'],
708
+ 'user-agent': 'Mozilla/5.0 (iPad; CPU OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1',
709
+ 'type': 'tablet',
710
+ },
711
+ {
712
+ 'order': 28,
713
+ 'show-by-default': true,
714
+ 'title': 'iPad Air',
715
+ 'screen': {
716
+ 'horizontal': {
717
+ 'width': 1180,
718
+ 'height': 820,
719
+ },
720
+ 'device-pixel-ratio': 2,
721
+ 'vertical': {
722
+ 'width': 820,
723
+ 'height': 1180,
724
+ },
725
+ },
726
+ 'capabilities': ['touch', 'mobile'],
727
+ 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15',
728
+ 'type': 'tablet',
729
+ },
730
+ {
731
+ 'order': 29,
732
+ 'show-by-default': true,
733
+ 'title': 'iPad Pro',
734
+ 'screen': {
735
+ 'horizontal': {
736
+ 'width': 1366,
737
+ 'height': 1024,
738
+ },
739
+ 'device-pixel-ratio': 2,
740
+ 'vertical': {
741
+ 'width': 1024,
742
+ 'height': 1366,
743
+ },
744
+ },
745
+ 'capabilities': ['touch', 'mobile'],
746
+ 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15',
747
+ 'type': 'tablet',
748
+ },
749
+ {
750
+ 'order': 30,
751
+ 'show-by-default': true,
752
+ 'title': 'Surface Pro 7',
753
+ 'screen': {
754
+ 'horizontal': {
755
+ 'width': 1368,
756
+ 'height': 912,
757
+ },
758
+ 'device-pixel-ratio': 2,
759
+ 'vertical': {
760
+ 'width': 912,
761
+ 'height': 1368,
762
+ },
763
+ },
764
+ 'capabilities': ['touch', 'mobile'],
765
+ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36',
766
+ 'type': 'tablet',
767
+ },
768
+ {
769
+ 'order': 32,
770
+ 'show-by-default': true,
771
+ 'dual-screen': true,
772
+ 'title': 'Surface Duo',
773
+ 'screen': {
774
+ 'horizontal': { 'width': 720, 'height': 540 },
775
+ 'device-pixel-ratio': 2.5,
776
+ 'vertical': { 'width': 540, 'height': 720 },
777
+ 'vertical-spanned': {
778
+ 'width': 1114,
779
+ 'height': 720,
780
+ 'hinge': { 'width': 34, 'height': 720, 'x': 540, 'y': 0, 'contentColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 1 } },
781
+ },
782
+ 'horizontal-spanned': {
783
+ 'width': 720,
784
+ 'height': 1114,
785
+ 'hinge': { 'width': 720, 'height': 34, 'x': 0, 'y': 540, 'contentColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 1 } },
786
+ },
787
+ },
788
+ 'capabilities': ['touch', 'mobile'],
789
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 11.0; Surface Duo) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
790
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '11.0', 'architecture': '', 'model': 'Surface Duo', 'mobile': true },
791
+ 'type': 'phone',
792
+ 'modes': [
793
+ { 'title': 'default', 'orientation': 'vertical', 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 } },
794
+ { 'title': 'default', 'orientation': 'horizontal', 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 } },
795
+ { 'title': 'spanned', 'orientation': 'vertical-spanned', 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 } },
796
+ {
797
+ 'title': 'spanned',
798
+ 'orientation': 'horizontal-spanned',
799
+ 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 },
800
+ },
801
+ ],
802
+ },
803
+ {
804
+ 'order': 34,
805
+ 'show-by-default': true,
806
+ 'foldable-screen': true,
807
+ 'title': 'Galaxy Z Fold 5',
808
+ 'screen': {
809
+ 'horizontal': { 'width': 882, 'height': 344 },
810
+ 'device-pixel-ratio': 2.625,
811
+ 'vertical': { 'width': 344, 'height': 882 },
812
+ 'vertical-spanned': {
813
+ 'width': 690,
814
+ 'height': 829,
815
+ 'hinge': {
816
+ 'width': 0,
817
+ 'height': 829,
818
+ 'x': 345,
819
+ 'y': 0,
820
+ 'contentColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 0.2 },
821
+ 'outlineColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 0.7 },
822
+ },
823
+ },
824
+ 'horizontal-spanned': {
825
+ 'width': 829,
826
+ 'height': 690,
827
+ 'hinge': {
828
+ 'width': 829,
829
+ 'height': 0,
830
+ 'x': 0,
831
+ 'y': 345,
832
+ 'contentColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 0.2 },
833
+ 'outlineColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 0.7 },
834
+ },
835
+ },
836
+ },
837
+ 'capabilities': ['touch', 'mobile'],
838
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
839
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '10.0', 'architecture': '', 'model': 'SM-F946U', 'mobile': true },
840
+ 'type': 'phone',
841
+ 'modes': [
842
+ { 'title': 'default', 'orientation': 'vertical', 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 } },
843
+ { 'title': 'default', 'orientation': 'horizontal', 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 } },
844
+ { 'title': 'spanned', 'orientation': 'vertical-spanned', 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 } },
845
+ {
846
+ 'title': 'spanned',
847
+ 'orientation': 'horizontal-spanned',
848
+ 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 },
849
+ },
850
+ ],
851
+ },
852
+ {
853
+ 'order': 35,
854
+ 'show-by-default': true,
855
+ 'foldable-screen': true,
856
+ 'title': 'Asus Zenbook Fold',
857
+ 'screen': {
858
+ 'horizontal': { 'width': 1280, 'height': 853 },
859
+ 'device-pixel-ratio': 1.5,
860
+ 'vertical': { 'width': 853, 'height': 1280 },
861
+ 'vertical-spanned': {
862
+ 'width': 1706,
863
+ 'height': 1280,
864
+ 'hinge': {
865
+ 'width': 107,
866
+ 'height': 1280,
867
+ 'x': 800,
868
+ 'y': 0,
869
+ 'contentColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 0.2 },
870
+ 'outlineColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 0.7 },
871
+ },
872
+ },
873
+ 'horizontal-spanned': {
874
+ 'width': 1280,
875
+ 'height': 1706,
876
+ 'hinge': {
877
+ 'width': 1706,
878
+ 'height': 107,
879
+ 'x': 0,
880
+ 'y': 800,
881
+ 'contentColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 0.2 },
882
+ 'outlineColor': { 'r': 38, 'g': 38, 'b': 38, 'a': 0.7 },
883
+ },
884
+ },
885
+ },
886
+ 'capabilities': ['touch'],
887
+ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36',
888
+ 'user-agent-metadata': { 'platform': 'Windows', 'platformVersion': '11.0', 'architecture': '', 'model': 'UX9702AA', 'mobile': false },
889
+ 'type': 'tablet',
890
+ 'modes': [
891
+ { 'title': 'default', 'orientation': 'vertical', 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 } },
892
+ { 'title': 'default', 'orientation': 'horizontal', 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 } },
893
+ {
894
+ 'title': 'spanned',
895
+ 'orientation': 'vertical-spanned',
896
+ 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 },
897
+ },
898
+ {
899
+ 'title': 'spanned',
900
+ 'orientation': 'horizontal-spanned',
901
+ 'insets': { 'left': 0, 'top': 0, 'right': 0, 'bottom': 0 },
902
+ },
903
+ ],
904
+ },
905
+ {
906
+ 'order': 36,
907
+ 'show-by-default': true,
908
+ 'title': 'Samsung Galaxy A51/71',
909
+ 'screen': {
910
+ 'horizontal': {
911
+ 'width': 914,
912
+ 'height': 412,
913
+ },
914
+ 'device-pixel-ratio': 2.625,
915
+ 'vertical': {
916
+ 'width': 412,
917
+ 'height': 914,
918
+ },
919
+ },
920
+ 'capabilities': ['touch', 'mobile'],
921
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
922
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '8.0.0', 'architecture': '', 'model': 'SM-G955U', 'mobile': true },
923
+ 'type': 'phone',
924
+ },
925
+ {
926
+ 'order': 52,
927
+ 'show-by-default': true,
928
+ 'title': 'Nest Hub Max',
929
+ 'screen': {
930
+ 'horizontal': {
931
+ 'outline': {
932
+ 'image': '@url(optimized/google-nest-hub-max-horizontal.avif)',
933
+ 'insets': { 'left': 92, 'top': 96, 'right': 91, 'bottom': 248 },
934
+ },
935
+ 'width': 1280,
936
+ 'height': 800,
937
+ },
938
+ 'device-pixel-ratio': 2,
939
+ 'vertical': {
940
+ 'width': 1280,
941
+ 'height': 800,
942
+ },
943
+ },
944
+ 'capabilities': ['touch', 'mobile'],
945
+ 'user-agent': 'Mozilla/5.0 (X11; Linux aarch64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36 CrKey/1.54.250320',
946
+ 'type': 'tablet',
947
+ 'modes': [{ 'title': 'default', 'orientation': 'horizontal' }],
948
+ },
949
+ {
950
+ 'order': 50,
951
+ 'show-by-default': true,
952
+ 'title': 'Nest Hub',
953
+ 'screen': {
954
+ 'horizontal': {
955
+ 'outline': {
956
+ 'image': '@url(optimized/google-nest-hub-horizontal.avif)',
957
+ 'insets': { 'left': 82, 'top': 74, 'right': 83, 'bottom': 222 },
958
+ },
959
+ 'width': 1024,
960
+ 'height': 600,
961
+ },
962
+ 'device-pixel-ratio': 2,
963
+ 'vertical': {
964
+ 'width': 1024,
965
+ 'height': 600,
966
+ },
967
+ },
968
+ 'capabilities': ['touch', 'mobile'],
969
+ 'user-agent': 'Mozilla/5.0 (Linux; Android) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36 CrKey/1.54.248666',
970
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '', 'architecture': '', 'model': '', 'mobile': false },
971
+ 'type': 'tablet',
972
+ 'modes': [{ 'title': 'default', 'orientation': 'horizontal' }],
973
+ },
974
+ {
975
+ 'order': 129,
976
+ 'show-by-default': false,
977
+ 'title': 'iPhone 4',
978
+ 'screen': {
979
+ 'horizontal': { 'width': 480, 'height': 320 },
980
+ 'device-pixel-ratio': 2,
981
+ 'vertical': { 'width': 320, 'height': 480 },
982
+ },
983
+ 'capabilities': ['touch', 'mobile'],
984
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53',
985
+ 'type': 'phone',
986
+ },
987
+ {
988
+ 'order': 130,
989
+ 'show-by-default': false,
990
+ 'title': 'iPhone 5/SE',
991
+ 'screen': {
992
+ 'horizontal': {
993
+ 'outline': {
994
+ 'image': '@url(optimized/iPhone5-landscape.avif)',
995
+ 'insets': { 'left': 115, 'top': 25, 'right': 115, 'bottom': 28 },
996
+ },
997
+ 'width': 568,
998
+ 'height': 320,
999
+ },
1000
+ 'device-pixel-ratio': 2,
1001
+ 'vertical': {
1002
+ 'outline': {
1003
+ 'image': '@url(optimized/iPhone5-portrait.avif)',
1004
+ 'insets': { 'left': 29, 'top': 105, 'right': 25, 'bottom': 111 },
1005
+ },
1006
+ 'width': 320,
1007
+ 'height': 568,
1008
+ },
1009
+ },
1010
+ 'capabilities': ['touch', 'mobile'],
1011
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1',
1012
+ 'type': 'phone',
1013
+ },
1014
+ {
1015
+ 'order': 131,
1016
+ 'show-by-default': false,
1017
+ 'title': 'iPhone 6/7/8',
1018
+ 'screen': {
1019
+ 'horizontal': {
1020
+ 'outline': {
1021
+ 'image': '@url(optimized/iPhone6-landscape.avif)',
1022
+ 'insets': { 'left': 106, 'top': 28, 'right': 106, 'bottom': 28 },
1023
+ },
1024
+ 'width': 667,
1025
+ 'height': 375,
1026
+ },
1027
+ 'device-pixel-ratio': 2,
1028
+ 'vertical': {
1029
+ 'outline': {
1030
+ 'image': '@url(optimized/iPhone6-portrait.avif)',
1031
+ 'insets': { 'left': 28, 'top': 105, 'right': 28, 'bottom': 105 },
1032
+ },
1033
+ 'width': 375,
1034
+ 'height': 667,
1035
+ },
1036
+ },
1037
+ 'capabilities': ['touch', 'mobile'],
1038
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
1039
+ 'type': 'phone',
1040
+ },
1041
+ {
1042
+ 'order': 132,
1043
+ 'show-by-default': false,
1044
+ 'title': 'iPhone 6/7/8 Plus',
1045
+ 'screen': {
1046
+ 'horizontal': {
1047
+ 'outline': {
1048
+ 'image': '@url(optimized/iPhone6Plus-landscape.avif)',
1049
+ 'insets': { 'left': 109, 'top': 29, 'right': 109, 'bottom': 27 },
1050
+ },
1051
+ 'width': 736,
1052
+ 'height': 414,
1053
+ },
1054
+ 'device-pixel-ratio': 3,
1055
+ 'vertical': {
1056
+ 'outline': {
1057
+ 'image': '@url(optimized/iPhone6Plus-portrait.avif)',
1058
+ 'insets': { 'left': 26, 'top': 107, 'right': 30, 'bottom': 111 },
1059
+ },
1060
+ 'width': 414,
1061
+ 'height': 736,
1062
+ },
1063
+ },
1064
+ 'capabilities': ['touch', 'mobile'],
1065
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
1066
+ 'type': 'phone',
1067
+ },
1068
+ {
1069
+ 'order': 133,
1070
+ 'show-by-default': false,
1071
+ 'title': 'iPhone X',
1072
+ 'screen': {
1073
+ 'horizontal': { 'width': 812, 'height': 375 },
1074
+ 'device-pixel-ratio': 3,
1075
+ 'vertical': { 'width': 375, 'height': 812 },
1076
+ },
1077
+ 'capabilities': ['touch', 'mobile'],
1078
+ 'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
1079
+ 'type': 'phone',
1080
+ },
1081
+ {
1082
+ 'show-by-default': false,
1083
+ 'title': 'BlackBerry Z30',
1084
+ 'screen': {
1085
+ 'horizontal': { 'width': 640, 'height': 360 },
1086
+ 'device-pixel-ratio': 2,
1087
+ 'vertical': { 'width': 360, 'height': 640 },
1088
+ },
1089
+ 'capabilities': ['touch', 'mobile'],
1090
+ 'user-agent': 'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.2372 Mobile Safari/537.10+',
1091
+ 'type': 'phone',
1092
+ },
1093
+ {
1094
+ 'show-by-default': false,
1095
+ 'title': 'Nexus 4',
1096
+ 'screen': {
1097
+ 'horizontal': { 'width': 640, 'height': 384 },
1098
+ 'device-pixel-ratio': 2,
1099
+ 'vertical': { 'width': 384, 'height': 640 },
1100
+ },
1101
+ 'capabilities': ['touch', 'mobile'],
1102
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 4.4.2; Nexus 4 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1103
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '4.4.2', 'architecture': '', 'model': 'Nexus 4', 'mobile': true },
1104
+ 'type': 'phone',
1105
+ },
1106
+ {
1107
+ 'title': 'Nexus 5',
1108
+ 'type': 'phone',
1109
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1110
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '6.0', 'architecture': '', 'model': 'Nexus 5', 'mobile': true },
1111
+ 'capabilities': ['touch', 'mobile'],
1112
+ 'show-by-default': false,
1113
+ 'screen': {
1114
+ 'device-pixel-ratio': 3,
1115
+ 'vertical': { 'width': 360, 'height': 640 },
1116
+ 'horizontal': { 'width': 640, 'height': 360 },
1117
+ },
1118
+ 'modes': [
1119
+ {
1120
+ 'title': 'default',
1121
+ 'orientation': 'vertical',
1122
+ 'insets': { 'left': 0, 'top': 25, 'right': 0, 'bottom': 48 },
1123
+ 'image': '@url(optimized/google-nexus-5-vertical-default-1x.avif) 1x, @url(optimized/google-nexus-5-vertical-default-2x.avif) 2x',
1124
+ },
1125
+ {
1126
+ 'title': 'navigation bar',
1127
+ 'orientation': 'vertical',
1128
+ 'insets': { 'left': 0, 'top': 80, 'right': 0, 'bottom': 48 },
1129
+ 'image': '@url(optimized/google-nexus-5-vertical-navigation-1x.avif) 1x, @url(optimized/google-nexus-5-vertical-navigation-2x.avif) 2x',
1130
+ },
1131
+ {
1132
+ 'title': 'keyboard',
1133
+ 'orientation': 'vertical',
1134
+ 'insets': { 'left': 0, 'top': 80, 'right': 0, 'bottom': 312 },
1135
+ 'image': '@url(optimized/google-nexus-5-vertical-keyboard-1x.avif) 1x, @url(optimized/google-nexus-5-vertical-keyboard-2x.avif) 2x',
1136
+ },
1137
+ {
1138
+ 'title': 'default',
1139
+ 'orientation': 'horizontal',
1140
+ 'insets': { 'left': 0, 'top': 25, 'right': 42, 'bottom': 0 },
1141
+ 'image': '@url(optimized/google-nexus-5-horizontal-default-1x.avif) 1x, @url(optimized/google-nexus-5-horizontal-default-2x.avif) 2x',
1142
+ },
1143
+ {
1144
+ 'title': 'navigation bar',
1145
+ 'orientation': 'horizontal',
1146
+ 'insets': { 'left': 0, 'top': 80, 'right': 42, 'bottom': 0 },
1147
+ 'image': '@url(optimized/google-nexus-5-horizontal-navigation-1x.avif) 1x, @url(optimized/google-nexus-5-horizontal-navigation-2x.avif) 2x',
1148
+ },
1149
+ {
1150
+ 'title': 'keyboard',
1151
+ 'orientation': 'horizontal',
1152
+ 'insets': { 'left': 0, 'top': 80, 'right': 42, 'bottom': 202 },
1153
+ 'image': '@url(optimized/google-nexus-5-horizontal-keyboard-1x.avif) 1x, @url(optimized/google-nexus-5-horizontal-keyboard-2x.avif) 2x',
1154
+ },
1155
+ ],
1156
+ },
1157
+ {
1158
+ 'title': 'Nexus 5X',
1159
+ 'type': 'phone',
1160
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1161
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '8.0.0', 'architecture': '', 'model': 'Nexus 5X', 'mobile': true },
1162
+ 'capabilities': ['touch', 'mobile'],
1163
+ 'show-by-default': false,
1164
+ 'screen': {
1165
+ 'device-pixel-ratio': 2.625,
1166
+ 'vertical': {
1167
+ 'outline': {
1168
+ 'image': '@url(optimized/Nexus5X-portrait.avif)',
1169
+ 'insets': { 'left': 18, 'top': 88, 'right': 22, 'bottom': 98 },
1170
+ },
1171
+ 'width': 412,
1172
+ 'height': 732,
1173
+ },
1174
+ 'horizontal': {
1175
+ 'outline': {
1176
+ 'image': '@url(optimized/Nexus5X-landscape.avif)',
1177
+ 'insets': { 'left': 88, 'top': 21, 'right': 98, 'bottom': 19 },
1178
+ },
1179
+ 'width': 732,
1180
+ 'height': 412,
1181
+ },
1182
+ },
1183
+ 'modes': [
1184
+ {
1185
+ 'title': 'default',
1186
+ 'orientation': 'vertical',
1187
+ 'insets': { 'left': 0, 'top': 24, 'right': 0, 'bottom': 48 },
1188
+ 'image': '@url(optimized/google-nexus-5x-vertical-default-1x.avif) 1x, @url(optimized/google-nexus-5x-vertical-default-2x.avif) 2x',
1189
+ },
1190
+ {
1191
+ 'title': 'navigation bar',
1192
+ 'orientation': 'vertical',
1193
+ 'insets': { 'left': 0, 'top': 80, 'right': 0, 'bottom': 48 },
1194
+ 'image': '@url(optimized/google-nexus-5x-vertical-navigation-1x.avif) 1x, @url(optimized/google-nexus-5x-vertical-navigation-2x.avif) 2x',
1195
+ },
1196
+ {
1197
+ 'title': 'keyboard',
1198
+ 'orientation': 'vertical',
1199
+ 'insets': { 'left': 0, 'top': 80, 'right': 0, 'bottom': 342 },
1200
+ 'image': '@url(optimized/google-nexus-5x-vertical-keyboard-1x.avif) 1x, @url(optimized/google-nexus-5x-vertical-keyboard-2x.avif) 2x',
1201
+ },
1202
+ {
1203
+ 'title': 'default',
1204
+ 'orientation': 'horizontal',
1205
+ 'insets': { 'left': 0, 'top': 24, 'right': 48, 'bottom': 0 },
1206
+ 'image': '@url(optimized/google-nexus-5x-horizontal-default-1x.avif) 1x, @url(optimized/google-nexus-5x-horizontal-default-2x.avif) 2x',
1207
+ },
1208
+ {
1209
+ 'title': 'navigation bar',
1210
+ 'orientation': 'horizontal',
1211
+ 'insets': { 'left': 0, 'top': 80, 'right': 48, 'bottom': 0 },
1212
+ 'image': '@url(optimized/google-nexus-5x-horizontal-navigation-1x.avif) 1x, @url(optimized/google-nexus-5x-horizontal-navigation-2x.avif) 2x',
1213
+ },
1214
+ {
1215
+ 'title': 'keyboard',
1216
+ 'orientation': 'horizontal',
1217
+ 'insets': { 'left': 0, 'top': 80, 'right': 48, 'bottom': 222 },
1218
+ 'image': '@url(optimized/google-nexus-5x-horizontal-keyboard-1x.avif) 1x, @url(optimized/google-nexus-5x-horizontal-keyboard-2x.avif) 2x',
1219
+ },
1220
+ ],
1221
+ },
1222
+ {
1223
+ 'show-by-default': false,
1224
+ 'title': 'Nexus 6',
1225
+ 'screen': {
1226
+ 'horizontal': { 'width': 732, 'height': 412 },
1227
+ 'device-pixel-ratio': 3.5,
1228
+ 'vertical': { 'width': 412, 'height': 732 },
1229
+ },
1230
+ 'capabilities': ['touch', 'mobile'],
1231
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 7.1.1; Nexus 6 Build/N6F26U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1232
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '7.1.1', 'architecture': '', 'model': 'Nexus 6', 'mobile': true },
1233
+ 'type': 'phone',
1234
+ },
1235
+ {
1236
+ 'show-by-default': false,
1237
+ 'title': 'Nexus 6P',
1238
+ 'screen': {
1239
+ 'horizontal': {
1240
+ 'outline': {
1241
+ 'image': '@url(optimized/Nexus6P-landscape.avif)',
1242
+ 'insets': { 'left': 94, 'top': 17, 'right': 88, 'bottom': 17 },
1243
+ },
1244
+ 'width': 732,
1245
+ 'height': 412,
1246
+ },
1247
+ 'device-pixel-ratio': 3.5,
1248
+ 'vertical': {
1249
+ 'outline': {
1250
+ 'image': '@url(optimized/Nexus6P-portrait.avif)',
1251
+ 'insets': { 'left': 16, 'top': 94, 'right': 16, 'bottom': 88 },
1252
+ },
1253
+ 'width': 412,
1254
+ 'height': 732,
1255
+ },
1256
+ },
1257
+ 'capabilities': ['touch', 'mobile'],
1258
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1259
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '8.0.0', 'architecture': '', 'model': 'Nexus 6P', 'mobile': true },
1260
+ 'type': 'phone',
1261
+ },
1262
+ {
1263
+ 'order': 120,
1264
+ 'show-by-default': false,
1265
+ 'title': 'Pixel 2',
1266
+ 'screen': {
1267
+ 'horizontal': { 'width': 731, 'height': 411 },
1268
+ 'device-pixel-ratio': 2.625,
1269
+ 'vertical': { 'width': 411, 'height': 731 },
1270
+ },
1271
+ 'capabilities': ['touch', 'mobile'],
1272
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1273
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '8.0', 'architecture': '', 'model': 'Pixel 2', 'mobile': true },
1274
+ 'type': 'phone',
1275
+ },
1276
+ {
1277
+ 'order': 121,
1278
+ 'show-by-default': false,
1279
+ 'title': 'Pixel 2 XL',
1280
+ 'screen': {
1281
+ 'horizontal': { 'width': 823, 'height': 411 },
1282
+ 'device-pixel-ratio': 3.5,
1283
+ 'vertical': { 'width': 411, 'height': 823 },
1284
+ },
1285
+ 'capabilities': ['touch', 'mobile'],
1286
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; Pixel 2 XL Build/OPD1.170816.004) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1287
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '8.0.0', 'architecture': '', 'model': 'Pixel 2 XL', 'mobile': true },
1288
+ 'type': 'phone',
1289
+ },
1290
+ {
1291
+ 'show-by-default': false,
1292
+ 'title': 'Pixel 3',
1293
+ 'screen': {
1294
+ 'horizontal': { 'width': 786, 'height': 393 },
1295
+ 'device-pixel-ratio': 2.75,
1296
+ 'vertical': { 'width': 393, 'height': 786 },
1297
+ },
1298
+ 'capabilities': ['touch', 'mobile'],
1299
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 9; Pixel 3 Build/PQ1A.181105.017.A1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1300
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '9', 'architecture': '', 'model': 'Pixel 3', 'mobile': true },
1301
+ 'type': 'phone',
1302
+ },
1303
+ {
1304
+ 'show-by-default': false,
1305
+ 'title': 'Pixel 4',
1306
+ 'screen': {
1307
+ 'horizontal': { 'width': 745, 'height': 353 },
1308
+ 'device-pixel-ratio': 3,
1309
+ 'vertical': { 'width': 353, 'height': 745 },
1310
+ },
1311
+ 'capabilities': ['touch', 'mobile'],
1312
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 10; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1313
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '10', 'architecture': '', 'model': 'Pixel 4', 'mobile': true },
1314
+ 'type': 'phone',
1315
+ },
1316
+ {
1317
+ 'show-by-default': false,
1318
+ 'title': 'LG Optimus L70',
1319
+ 'screen': {
1320
+ 'horizontal': { 'width': 640, 'height': 384 },
1321
+ 'device-pixel-ratio': 1.25,
1322
+ 'vertical': { 'width': 384, 'height': 640 },
1323
+ },
1324
+ 'capabilities': ['touch', 'mobile'],
1325
+ 'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.4.2; en-us; LGMS323 Build/KOT49I.MS32310c) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/%s Mobile Safari/537.36',
1326
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '4.4.2', 'architecture': '', 'model': 'LGMS323', 'mobile': true },
1327
+ 'type': 'phone',
1328
+ },
1329
+ {
1330
+ 'show-by-default': false,
1331
+ 'title': 'Nokia N9',
1332
+ 'screen': {
1333
+ 'horizontal': { 'width': 854, 'height': 480 },
1334
+ 'device-pixel-ratio': 1,
1335
+ 'vertical': { 'width': 480, 'height': 854 },
1336
+ },
1337
+ 'capabilities': ['touch', 'mobile'],
1338
+ 'user-agent': 'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13',
1339
+ 'type': 'phone',
1340
+ },
1341
+ {
1342
+ 'show-by-default': false,
1343
+ 'title': 'Nokia Lumia 520',
1344
+ 'screen': {
1345
+ 'horizontal': { 'width': 533, 'height': 320 },
1346
+ 'device-pixel-ratio': 1.5,
1347
+ 'vertical': { 'width': 320, 'height': 533 },
1348
+ },
1349
+ 'capabilities': ['touch', 'mobile'],
1350
+ 'user-agent': 'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 520)',
1351
+ 'type': 'phone',
1352
+ },
1353
+ {
1354
+ 'show-by-default': false,
1355
+ 'title': 'Microsoft Lumia 550',
1356
+ 'screen': {
1357
+ 'horizontal': { 'width': 640, 'height': 360 },
1358
+ 'device-pixel-ratio': 2,
1359
+ 'vertical': { 'width': 640, 'height': 360 },
1360
+ },
1361
+ 'capabilities': ['touch', 'mobile'],
1362
+ 'user-agent': 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 550) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36 Edge/14.14263',
1363
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '4.2.1', 'architecture': '', 'model': 'Lumia 550', 'mobile': true },
1364
+ 'type': 'phone',
1365
+ },
1366
+ {
1367
+ 'show-by-default': false,
1368
+ 'title': 'Microsoft Lumia 950',
1369
+ 'screen': {
1370
+ 'horizontal': { 'width': 640, 'height': 360 },
1371
+ 'device-pixel-ratio': 4,
1372
+ 'vertical': { 'width': 360, 'height': 640 },
1373
+ },
1374
+ 'capabilities': ['touch', 'mobile'],
1375
+ 'user-agent': 'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36 Edge/14.14263',
1376
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '4.2.1', 'architecture': '', 'model': 'Lumia 950', 'mobile': true },
1377
+ 'type': 'phone',
1378
+ },
1379
+ {
1380
+ 'show-by-default': false,
1381
+ 'title': 'Galaxy S III',
1382
+ 'screen': {
1383
+ 'horizontal': { 'width': 640, 'height': 360 },
1384
+ 'device-pixel-ratio': 2,
1385
+ 'vertical': { 'width': 360, 'height': 640 },
1386
+ },
1387
+ 'capabilities': ['touch', 'mobile'],
1388
+ 'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.0; en-us; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
1389
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '4.0', 'architecture': '', 'model': 'GT-I9300', 'mobile': true },
1390
+ 'type': 'phone',
1391
+ },
1392
+ {
1393
+ 'order': 110,
1394
+ 'show-by-default': false,
1395
+ 'title': 'Galaxy S5',
1396
+ 'screen': {
1397
+ 'horizontal': { 'width': 640, 'height': 360 },
1398
+ 'device-pixel-ratio': 3,
1399
+ 'vertical': { 'width': 360, 'height': 640 },
1400
+ },
1401
+ 'capabilities': ['touch', 'mobile'],
1402
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1403
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '5.0', 'architecture': '', 'model': 'SM-G900P', 'mobile': true },
1404
+ 'type': 'phone',
1405
+ },
1406
+ {
1407
+ 'show-by-default': false,
1408
+ 'title': 'Galaxy S8',
1409
+ 'screen': {
1410
+ 'horizontal': { 'width': 740, 'height': 360 },
1411
+ 'device-pixel-ratio': 3,
1412
+ 'vertical': { 'width': 360, 'height': 740 },
1413
+ },
1414
+ 'capabilities': ['touch', 'mobile'],
1415
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 7.0; SM-G950U Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1416
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '7.0', 'architecture': '', 'model': 'SM-G950U', 'mobile': true },
1417
+ 'type': 'phone',
1418
+ },
1419
+ {
1420
+ 'show-by-default': false,
1421
+ 'title': 'Galaxy S9+',
1422
+ 'screen': {
1423
+ 'horizontal': { 'width': 658, 'height': 320 },
1424
+ 'device-pixel-ratio': 4.5,
1425
+ 'vertical': { 'width': 320, 'height': 658 },
1426
+ },
1427
+ 'capabilities': ['touch', 'mobile'],
1428
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 8.0.0; SM-G965U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1429
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '8.0.0', 'architecture': '', 'model': 'SM-G965U', 'mobile': true },
1430
+ 'type': 'phone',
1431
+ },
1432
+ {
1433
+ 'show-by-default': false,
1434
+ 'title': 'Galaxy Tab S4',
1435
+ 'screen': {
1436
+ 'horizontal': { 'width': 1138, 'height': 712 },
1437
+ 'device-pixel-ratio': 2.25,
1438
+ 'vertical': { 'width': 712, 'height': 1138 },
1439
+ },
1440
+ 'capabilities': ['touch', 'mobile'],
1441
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 8.1.0; SM-T837A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36',
1442
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '8.1.0', 'architecture': '', 'model': 'SM-T837A', 'mobile': false },
1443
+ 'type': 'phone',
1444
+ },
1445
+ {
1446
+ 'order': 1,
1447
+ 'show-by-default': false,
1448
+ 'title': 'JioPhone 2',
1449
+ 'screen': {
1450
+ 'horizontal': { 'width': 320, 'height': 240 },
1451
+ 'device-pixel-ratio': 1,
1452
+ 'vertical': { 'width': 240, 'height': 320 },
1453
+ },
1454
+ 'capabilities': ['touch', 'mobile'],
1455
+ 'user-agent': 'Mozilla/5.0 (Mobile; LYF/F300B/LYF-F300B-001-01-15-130718-i;Android; rv:48.0) Gecko/48.0 Firefox/48.0 KAIOS/2.5',
1456
+ 'user-agent-metadata': {
1457
+ 'platform': 'Android',
1458
+ 'platformVersion': '',
1459
+ 'architecture': '',
1460
+ 'model': 'LYF/F300B/LYF-F300B-001-01-15-130718-i',
1461
+ 'mobile': true,
1462
+ },
1463
+ 'type': 'phone',
1464
+ },
1465
+ {
1466
+ 'show-by-default': false,
1467
+ 'title': 'Kindle Fire HDX',
1468
+ 'screen': {
1469
+ 'horizontal': { 'width': 1280, 'height': 800 },
1470
+ 'device-pixel-ratio': 2,
1471
+ 'vertical': { 'width': 800, 'height': 1280 },
1472
+ },
1473
+ 'capabilities': ['touch', 'mobile'],
1474
+ 'user-agent': 'Mozilla/5.0 (Linux; U; en-us; KFAPWI Build/JDQ39) AppleWebKit/535.19 (KHTML, like Gecko) Silk/3.13 Safari/535.19 Silk-Accelerated=true',
1475
+ 'type': 'tablet',
1476
+ },
1477
+ {
1478
+ 'order': 140,
1479
+ 'show-by-default': false,
1480
+ 'title': 'iPad',
1481
+ 'screen': {
1482
+ 'horizontal': {
1483
+ 'outline': {
1484
+ 'image': '@url(optimized/iPad-landscape.avif)',
1485
+ 'insets': { 'left': 112, 'top': 56, 'right': 116, 'bottom': 52 },
1486
+ },
1487
+ 'width': 1024,
1488
+ 'height': 768,
1489
+ },
1490
+ 'device-pixel-ratio': 2,
1491
+ 'vertical': {
1492
+ 'outline': {
1493
+ 'image': '@url(optimized/iPad-portrait.avif)',
1494
+ 'insets': { 'left': 52, 'top': 114, 'right': 55, 'bottom': 114 },
1495
+ },
1496
+ 'width': 768,
1497
+ 'height': 1024,
1498
+ },
1499
+ },
1500
+ 'capabilities': ['touch', 'mobile'],
1501
+ 'user-agent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',
1502
+ 'type': 'tablet',
1503
+ },
1504
+ {
1505
+ 'order': 141,
1506
+ 'show-by-default': false,
1507
+ 'title': 'iPad Pro',
1508
+ 'screen': {
1509
+ 'horizontal': { 'width': 1366, 'height': 1024 },
1510
+ 'device-pixel-ratio': 2,
1511
+ 'vertical': { 'width': 1024, 'height': 1366 },
1512
+ },
1513
+ 'capabilities': ['touch', 'mobile'],
1514
+ 'user-agent': 'Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1',
1515
+ 'type': 'tablet',
1516
+ },
1517
+ {
1518
+ 'show-by-default': false,
1519
+ 'title': 'Blackberry PlayBook',
1520
+ 'screen': {
1521
+ 'horizontal': { 'width': 1024, 'height': 600 },
1522
+ 'device-pixel-ratio': 1,
1523
+ 'vertical': { 'width': 600, 'height': 1024 },
1524
+ },
1525
+ 'capabilities': ['touch', 'mobile'],
1526
+ 'user-agent': 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 2.1.0; en-US) AppleWebKit/536.2+ (KHTML like Gecko) Version/7.2.1.0 Safari/536.2+',
1527
+ 'type': 'tablet',
1528
+ },
1529
+ {
1530
+ 'show-by-default': false,
1531
+ 'title': 'Nexus 10',
1532
+ 'screen': {
1533
+ 'horizontal': { 'width': 1280, 'height': 800 },
1534
+ 'device-pixel-ratio': 2,
1535
+ 'vertical': { 'width': 800, 'height': 1280 },
1536
+ },
1537
+ 'capabilities': ['touch', 'mobile'],
1538
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 10 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36',
1539
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '6.0.1', 'architecture': '', 'model': 'Nexus 10', 'mobile': false },
1540
+ 'type': 'tablet',
1541
+ },
1542
+ {
1543
+ 'show-by-default': false,
1544
+ 'title': 'Nexus 7',
1545
+ 'screen': {
1546
+ 'horizontal': { 'width': 960, 'height': 600 },
1547
+ 'device-pixel-ratio': 2,
1548
+ 'vertical': { 'width': 600, 'height': 960 },
1549
+ },
1550
+ 'capabilities': ['touch', 'mobile'],
1551
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Nexus 7 Build/MOB30X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36',
1552
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '6.0.1', 'architecture': '', 'model': 'Nexus 7', 'mobile': false },
1553
+ 'type': 'tablet',
1554
+ },
1555
+ {
1556
+ 'show-by-default': false,
1557
+ 'title': 'Galaxy Note 3',
1558
+ 'screen': {
1559
+ 'horizontal': { 'width': 640, 'height': 360 },
1560
+ 'device-pixel-ratio': 3,
1561
+ 'vertical': { 'width': 360, 'height': 640 },
1562
+ },
1563
+ 'capabilities': ['touch', 'mobile'],
1564
+ 'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.3; en-us; SM-N900T Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
1565
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '4.3', 'architecture': '', 'model': 'SM-N900T', 'mobile': true },
1566
+ 'type': 'phone',
1567
+ },
1568
+ {
1569
+ 'show-by-default': false,
1570
+ 'title': 'Galaxy Note II',
1571
+ 'screen': {
1572
+ 'horizontal': { 'width': 640, 'height': 360 },
1573
+ 'device-pixel-ratio': 2,
1574
+ 'vertical': { 'width': 360, 'height': 640 },
1575
+ },
1576
+ 'capabilities': ['touch', 'mobile'],
1577
+ 'user-agent': 'Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
1578
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '4.1', 'architecture': '', 'model': 'GT-N7100', 'mobile': true },
1579
+ 'type': 'phone',
1580
+ },
1581
+ {
1582
+ 'show-by-default': false,
1583
+ /* DEVICE-LIST-IF-JS */
1584
+ 'title': i18nLazyString(UIStrings.laptopWithTouch),
1585
+ /* DEVICE-LIST-ELSE
1586
+ 'title': 'Laptop with touch',
1587
+ DEVICE-LIST-END-IF */
1588
+ 'screen': {
1589
+ 'horizontal': { 'width': 1280, 'height': 950 },
1590
+ 'device-pixel-ratio': 1,
1591
+ 'vertical': { 'width': 950, 'height': 1280 },
1592
+ },
1593
+ 'capabilities': ['touch'],
1594
+ 'user-agent': '',
1595
+ 'type': 'notebook',
1596
+ 'modes': [{ 'title': 'default', 'orientation': 'horizontal' }],
1597
+ },
1598
+ {
1599
+ 'show-by-default': false,
1600
+ /* DEVICE-LIST-IF-JS */
1601
+ 'title': i18nLazyString(UIStrings.laptopWithHiDPIScreen),
1602
+ /* DEVICE-LIST-ELSE
1603
+ 'title': 'Laptop with HiDPI screen',
1604
+ DEVICE-LIST-END-IF */
1605
+ 'screen': {
1606
+ 'horizontal': { 'width': 1440, 'height': 900 },
1607
+ 'device-pixel-ratio': 2,
1608
+ 'vertical': { 'width': 900, 'height': 1440 },
1609
+ },
1610
+ 'capabilities': [],
1611
+ 'user-agent': '',
1612
+ 'type': 'notebook',
1613
+ 'modes': [{ 'title': 'default', 'orientation': 'horizontal' }],
1614
+ },
1615
+ {
1616
+ 'show-by-default': false,
1617
+ /* DEVICE-LIST-IF-JS */
1618
+ 'title': i18nLazyString(UIStrings.laptopWithMDPIScreen),
1619
+ /* DEVICE-LIST-ELSE
1620
+ 'title': 'Laptop with MDPI screen',
1621
+ DEVICE-LIST-END-IF */
1622
+ 'screen': {
1623
+ 'horizontal': { 'width': 1280, 'height': 800 },
1624
+ 'device-pixel-ratio': 1,
1625
+ 'vertical': { 'width': 800, 'height': 1280 },
1626
+ },
1627
+ 'capabilities': [],
1628
+ 'user-agent': '',
1629
+ 'type': 'notebook',
1630
+ 'modes': [{ 'title': 'default', 'orientation': 'horizontal' }],
1631
+ },
1632
+ {
1633
+ 'show-by-default': false,
1634
+ 'title': 'Moto G4',
1635
+ 'screen': {
1636
+ 'horizontal': {
1637
+ 'outline': {
1638
+ 'image': '@url(optimized/MotoG4-landscape.avif)',
1639
+ 'insets': { 'left': 91, 'top': 30, 'right': 74, 'bottom': 30 },
1640
+ },
1641
+ 'width': 640,
1642
+ 'height': 360,
1643
+ },
1644
+ 'device-pixel-ratio': 3,
1645
+ 'vertical': {
1646
+ 'outline': {
1647
+ 'image': '@url(optimized/MotoG4-portrait.avif)',
1648
+ 'insets': { 'left': 30, 'top': 91, 'right': 30, 'bottom': 74 },
1649
+ },
1650
+ 'width': 360,
1651
+ 'height': 640,
1652
+ },
1653
+ },
1654
+ 'capabilities': ['touch', 'mobile'],
1655
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 6.0.1; Moto G (4)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1656
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '6.0.1', 'architecture': '', 'model': 'Moto G (4)', 'mobile': true },
1657
+ 'type': 'phone',
1658
+ },
1659
+ {
1660
+ 'show-by-default': false,
1661
+ 'title': 'Moto G Power',
1662
+ 'screen': {
1663
+ 'device-pixel-ratio': 1.75,
1664
+ 'horizontal': {
1665
+ 'width': 823,
1666
+ 'height': 412,
1667
+ },
1668
+ 'vertical': {
1669
+ 'width': 412,
1670
+ 'height': 823,
1671
+ },
1672
+ },
1673
+ 'capabilities': ['touch', 'mobile'],
1674
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 11; moto g power (2022)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Mobile Safari/537.36',
1675
+ 'user-agent-metadata': {
1676
+ 'platform': 'Android',
1677
+ 'platformVersion': '11',
1678
+ 'architecture': '',
1679
+ 'model': 'moto g power (2022)',
1680
+ 'mobile': true,
1681
+ },
1682
+ 'type': 'phone',
1683
+ },
1684
+ {
1685
+ 'order': 200,
1686
+ 'show-by-default': false,
1687
+ 'title': 'Facebook on Android',
1688
+ 'screen': {
1689
+ 'horizontal': {
1690
+ 'width': 892,
1691
+ 'height': 412,
1692
+ },
1693
+ 'device-pixel-ratio': 3.5,
1694
+ 'vertical': {
1695
+ 'width': 412,
1696
+ 'height': 892,
1697
+ },
1698
+ },
1699
+ 'capabilities': ['touch', 'mobile'],
1700
+ 'user-agent': 'Mozilla/5.0 (Linux; Android 12; Pixel 6 Build/SQ3A.220705.004; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/%s Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/407.0.0.0.65;]',
1701
+ 'user-agent-metadata': { 'platform': 'Android', 'platformVersion': '12', 'architecture': '', 'model': 'Pixel 6', 'mobile': true },
1702
+ 'type': 'phone',
1703
+ },
1704
+ // DEVICE-LIST-END
1705
+ ];
1706
+ /* eslint-enable @stylistic/quote-props */