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