tree: 0360ffac90f5a8bbdc5ec759dfe9f182a0843bb0
  1. AccessibilityModel.snapshot.txt
  2. AccessibilityModel.test.ts
  3. AccessibilityModel.ts
  4. AnimationModel.test.ts
  5. AnimationModel.ts
  6. AutofillModel.test.ts
  7. AutofillModel.ts
  8. BUILD.gn
  9. CategorizedBreakpoint.ts
  10. ChildTargetManager.test.ts
  11. ChildTargetManager.ts
  12. CompilerSourceMappingContentProvider.ts
  13. Connections.ts
  14. ConsoleModel.test.ts
  15. ConsoleModel.ts
  16. ConsoleModelTypes.ts
  17. Cookie.test.ts
  18. Cookie.ts
  19. CookieModel.test.ts
  20. CookieModel.ts
  21. CookieParser.test.ts
  22. CookieParser.ts
  23. CPUProfilerModel.ts
  24. CPUThrottlingManager.test.ts
  25. CPUThrottlingManager.ts
  26. CrashReportContextModel.test.ts
  27. CrashReportContextModel.ts
  28. CSSContainerQuery.test.ts
  29. CSSContainerQuery.ts
  30. CSSFontFace.ts
  31. CSSLayer.ts
  32. CSSLocation.ts
  33. CSSMatchedStyles.test.ts
  34. CSSMatchedStyles.ts
  35. CSSMedia.ts
  36. CSSMetadata.test.ts
  37. CSSMetadata.ts
  38. CSSModel.test.api.ts
  39. CSSModel.test.ts
  40. CSSModel.ts
  41. CSSNavigation.ts
  42. CSSProperty.test.ts
  43. CSSProperty.ts
  44. CSSPropertyParser.test.ts
  45. CSSPropertyParser.ts
  46. CSSPropertyParserMatchers.test.ts
  47. CSSPropertyParserMatchers.ts
  48. CSSQuery.ts
  49. CSSRule.test.ts
  50. CSSRule.ts
  51. CSSScope.ts
  52. CSSStartingStyle.ts
  53. CSSStyleDeclaration.test.ts
  54. CSSStyleDeclaration.ts
  55. CSSStyleSheetHeader.test.ts
  56. CSSStyleSheetHeader.ts
  57. CSSSupports.ts
  58. DebuggerModel.test.api.ts
  59. DebuggerModel.test.ts
  60. DebuggerModel.ts
  61. DOMDebuggerModel.ts
  62. DOMModel.test.api.ts
  63. DOMModel.test.ts
  64. DOMModel.ts
  65. DOMStorageModel.test.ts
  66. DOMStorageModel.ts
  67. EmulationModel.test.ts
  68. EmulationModel.ts
  69. EnhancedTracesParser.test.ts
  70. EnhancedTracesParser.ts
  71. EventBreakpointsModel.ts
  72. FrameAssociated.ts
  73. FrameManager.test.ts
  74. FrameManager.ts
  75. HeapProfilerModel.ts
  76. HttpReasonPhraseStrings.ts
  77. IOModel.ts
  78. IsolateManager.ts
  79. IssuesModel.ts
  80. LayerTreeBase.ts
  81. LogModel.ts
  82. NetworkManager.test.ts
  83. NetworkManager.ts
  84. NetworkRequest.test.ts
  85. NetworkRequest.ts
  86. NetworkRequestAccess.test.ts
  87. NetworkRequestAccess.ts
  88. OverlayColorGenerator.test.ts
  89. OverlayColorGenerator.ts
  90. OverlayModel.test.ts
  91. OverlayModel.ts
  92. OverlayPersistentHighlighter.test.ts
  93. OverlayPersistentHighlighter.ts
  94. OWNERS
  95. PageLoad.ts
  96. PageResourceLoader.test.ts
  97. PageResourceLoader.ts
  98. PaintProfiler.ts
  99. PerformanceMetricsModel.ts
  100. PreloadingModel.test.ts
  101. PreloadingModel.ts
  102. README.md
  103. RehydratingConnection.snapshot.txt
  104. RehydratingConnection.test.ts
  105. RehydratingConnection.ts
  106. RehydratingObject.ts
  107. RemoteObject.test.ts
  108. RemoteObject.ts
  109. Resource.test.ts
  110. Resource.ts
  111. ResourceTreeModel.test.ts
  112. ResourceTreeModel.ts
  113. RuntimeModel.test.ts
  114. RuntimeModel.ts
  115. ScopeTreeCache.test.ts
  116. ScopeTreeCache.ts
  117. ScreenCaptureModel.test.ts
  118. ScreenCaptureModel.ts
  119. Script.test.ts
  120. Script.ts
  121. sdk.ts
  122. SDKModel.ts
  123. SDKSettings.ts
  124. SecurityOrigin.test.ts
  125. SecurityOrigin.ts
  126. SecurityOriginManager.ts
  127. ServerSentEvents.ts
  128. ServerSentEventsProtocol.test.ts
  129. ServerSentEventsProtocol.ts
  130. ServerTiming.test.ts
  131. ServerTiming.ts
  132. ServiceWorkerCacheModel.test.ts
  133. ServiceWorkerCacheModel.ts
  134. ServiceWorkerManager.test.ts
  135. ServiceWorkerManager.ts
  136. SourceMap.test.ts
  137. SourceMap.ts
  138. SourceMapCache.test.ts
  139. SourceMapCache.ts
  140. SourceMapFunctionRanges.test.ts
  141. SourceMapFunctionRanges.ts
  142. SourceMapManager.test.ts
  143. SourceMapManager.ts
  144. SourceMapScopeChainEntry.test.ts
  145. SourceMapScopeChainEntry.ts
  146. SourceMapScopesInfo.test.ts
  147. SourceMapScopesInfo.ts
  148. StorageBucketsModel.test.ts
  149. StorageBucketsModel.ts
  150. StorageKeyManager.test.ts
  151. StorageKeyManager.ts
  152. Target.test.ts
  153. Target.ts
  154. TargetManager.test.api.ts
  155. TargetManager.test.ts
  156. TargetManager.ts
  157. TraceObject.test.ts
  158. TraceObject.ts
  159. WebAuthnModel.ts
front_end/core/sdk/README.md

Core SDK

The Core SDK (front_end/core/sdk/) is DevTools' foundational data access layer wrapping the Chrome DevTools Protocol (CDP). It creates typed data access objects and models for CDP structures, abstracting away low-level JSON-RPC commands and events into developer-friendly APIs.


Architectural Principles

1. Single CDP Domain Responsibility

Each SDK model and data object encapsulates data and operations from a single CDP domain (e.g., DOM, CSS, Network, Debugger, Audits).

2. Cross-Domain Separation (What to Avoid)

Data from multiple CDP domains must be joined outside of core/sdk, typically in front_end/models/ (such as models/bindings/, models/issues_manager/, or models/trace/).

❌ Anti-pattern: Cross-domain getters on SDK objects

Do not add methods or getters to an SDK data object that fetch or resolve data from another CDP domain.

// ❌ BAD: DOMNode (DOM domain) must not reference Network or Audits domains directly.
class DOMNode {
  // Violates single-domain boundary:
  getNetworkRequest(): SDK.NetworkRequest.NetworkRequest|null {
    // ...
  }

  // Violates single-domain boundary:
  getIssues(): IssuesModel.Issue[] {
    // ...
  }
}

✅ Best Practice: Aggregate in models/

Keep DOMNode strictly focused on the DOM domain, and correlate cross-domain data in a higher-level model or service:

// ✅ GOOD: A higher-level model in models/ joins DOM and Audits/Network data.
// In front_end/models/issues_manager/ or similar:
const issues = issuesManager.issuesForNode(domNode);