chrome-devtools-frontend 1.0.1559913 → 1.0.1561528
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/front_end/core/host/InspectorFrontendHostStub.ts +0 -3
- package/front_end/core/platform/ArrayUtilities.ts +13 -0
- package/front_end/core/root/Runtime.ts +0 -5
- package/front_end/core/sdk/DOMModel.ts +8 -0
- package/front_end/core/sdk/NetworkManager.ts +4 -0
- package/front_end/core/sdk/NetworkRequest.ts +9 -0
- package/front_end/core/sdk/OverlayModel.ts +20 -9
- package/front_end/entrypoints/main/MainImpl.ts +2 -1
- package/front_end/generated/InspectorBackendCommands.ts +4 -2
- package/front_end/generated/protocol-mapping.d.ts +7 -0
- package/front_end/generated/protocol-proxy-api.d.ts +5 -0
- package/front_end/generated/protocol.ts +24 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +23 -22
- package/front_end/models/badges/UserBadges.ts +48 -16
- package/front_end/models/greendev/Prototypes.ts +6 -1
- package/front_end/models/trace/extras/TraceTree.ts +1 -1
- package/front_end/models/trace/handlers/PageLoadMetricsHandler.ts +8 -3
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +11 -142
- package/front_end/panels/ai_assistance/PatchWidget.ts +90 -72
- package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
- package/front_end/panels/ai_assistance/components/ChatInput.ts +701 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +71 -1268
- package/front_end/panels/ai_assistance/components/UserActionRow.ts +514 -31
- package/front_end/panels/ai_assistance/components/chatInput.css +387 -0
- package/front_end/panels/ai_assistance/components/chatView.css +38 -599
- package/front_end/panels/ai_assistance/components/userActionRow.css +230 -0
- package/front_end/panels/autofill/AutofillView.ts +2 -2
- package/front_end/panels/changes/ChangesView.ts +15 -1
- package/front_end/panels/changes/changesView.css +6 -0
- package/front_end/panels/common/BadgeNotification.ts +44 -58
- package/front_end/panels/common/CopyChangesToPrompt.ts +233 -0
- package/front_end/panels/common/common.ts +1 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +183 -359
- package/front_end/panels/elements/ElementsTreeOutline.ts +0 -6
- package/front_end/panels/elements/ShortcutTreeElement.ts +57 -50
- package/front_end/panels/elements/StylePropertiesSection.ts +1 -3
- package/front_end/panels/elements/components/AdornerManager.ts +5 -149
- package/front_end/panels/issues/HiddenIssuesRow.ts +1 -2
- package/front_end/panels/issues/IssueKindView.ts +2 -4
- package/front_end/panels/issues/IssueView.ts +2 -4
- package/front_end/panels/network/NetworkDataGridNode.ts +65 -1
- package/front_end/panels/network/NetworkLogView.ts +2 -4
- package/front_end/panels/network/NetworkLogViewColumns.ts +9 -0
- package/front_end/panels/screencast/ScreencastApp.ts +1 -0
- package/front_end/panels/settings/SettingsScreen.ts +3 -2
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +14 -1
- package/front_end/panels/timeline/ThirdPartyTreeView.ts +1 -4
- package/front_end/panels/timeline/TimelineController.ts +185 -3
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +52 -25
- package/front_end/panels/timeline/TimelineFlameChartView.ts +1 -0
- package/front_end/panels/timeline/TimelinePanel.ts +17 -104
- package/front_end/panels/timeline/TimelineTreeView.ts +1 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +2 -2
- package/front_end/panels/timeline/components/insights/Table.ts +3 -3
- package/front_end/panels/whats_new/ReleaseNoteText.ts +15 -9
- package/front_end/panels/whats_new/resources/WNDT.md +6 -6
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
- package/front_end/third_party/lit/rebuild.sh +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js +9 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.js +9 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/HTTPResponse.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts +3 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js +10 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Request.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +8 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +10 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +13 -7
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js +9 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPRequest.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.js +9 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/HTTPResponse.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts +3 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js +10 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Request.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +8 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +10 -1
- package/front_end/third_party/puppeteer/package/package.json +3 -3
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +2 -3
- package/front_end/third_party/puppeteer/package/src/bidi/HTTPRequest.ts +13 -0
- package/front_end/third_party/puppeteer/package/src/bidi/HTTPResponse.ts +10 -0
- package/front_end/third_party/puppeteer/package/src/bidi/core/Request.ts +15 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +9 -4
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/ui/components/adorners/Adorner.ts +8 -68
- package/front_end/ui/legacy/TabbedPane.ts +1 -1
- package/front_end/ui/visual_logging/KnownContextValues.ts +3 -0
- package/package.json +2 -1
|
@@ -397,9 +397,6 @@ export class InspectorFrontendHostStub implements InspectorFrontendHostAPI {
|
|
|
397
397
|
devToolsFlexibleLayout: {
|
|
398
398
|
verticalDrawerEnabled: true,
|
|
399
399
|
},
|
|
400
|
-
devToolsStartingStyleDebugging: {
|
|
401
|
-
enabled: false,
|
|
402
|
-
},
|
|
403
400
|
};
|
|
404
401
|
if ('hostConfigForTesting' in globalThis) {
|
|
405
402
|
const {hostConfigForTesting} = (globalThis as unknown as {hostConfigForTesting: Root.Runtime.HostConfig});
|
|
@@ -269,3 +269,16 @@ export function nearestIndexFromEnd<T>(arr: readonly T[], predicate: (arrayItem:
|
|
|
269
269
|
export function arrayDoesNotContainNullOrUndefined<T>(arr: Array<T|null|undefined>): arr is T[] {
|
|
270
270
|
return !arr.includes(null) && !arr.includes(undefined);
|
|
271
271
|
}
|
|
272
|
+
|
|
273
|
+
export function assertArrayIsSorted<T>(arr: readonly T[], compareFn?: (a: T, b: T) => number): void {
|
|
274
|
+
const comparator = compareFn || (DEFAULT_COMPARATOR as unknown as (a: T, b: T) => number);
|
|
275
|
+
|
|
276
|
+
for (let i = 0; i < arr.length - 1; i++) {
|
|
277
|
+
const current = arr[i];
|
|
278
|
+
const next = arr[i + 1];
|
|
279
|
+
|
|
280
|
+
if (comparator(current, next) > 0) {
|
|
281
|
+
throw new Error(`Array is not sorted at index ${i}: ${JSON.stringify(current)} > ${JSON.stringify(next)}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
@@ -505,10 +505,6 @@ interface DevToolsFlexibleLayout {
|
|
|
505
505
|
verticalDrawerEnabled: boolean;
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
-
interface DevToolsStartingStyleDebugging {
|
|
509
|
-
enabled: boolean;
|
|
510
|
-
}
|
|
511
|
-
|
|
512
508
|
interface AiPromptApi {
|
|
513
509
|
enabled: boolean;
|
|
514
510
|
allowWithoutGpu: boolean;
|
|
@@ -570,7 +566,6 @@ export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
|
|
|
570
566
|
devToolsGdpProfilesAvailability: GdpProfilesAvailability,
|
|
571
567
|
devToolsLiveEdit: LiveEdit,
|
|
572
568
|
devToolsFlexibleLayout: DevToolsFlexibleLayout,
|
|
573
|
-
devToolsStartingStyleDebugging: DevToolsStartingStyleDebugging,
|
|
574
569
|
devToolsAiPromptApi: AiPromptApi,
|
|
575
570
|
devToolsEnableDurableMessages: DevToolsEnableDurableMessages,
|
|
576
571
|
devToolsAiAssistanceContextSelectionAgent: HostConfigAiAssistanceContextSelectionAgent,
|
|
@@ -111,11 +111,19 @@ export const ARIA_ATTRIBUTES = new Set<string>([
|
|
|
111
111
|
export enum DOMNodeEvents {
|
|
112
112
|
TOP_LAYER_INDEX_CHANGED = 'TopLayerIndexChanged',
|
|
113
113
|
SCROLLABLE_FLAG_UPDATED = 'ScrollableFlagUpdated',
|
|
114
|
+
GRID_OVERLAY_STATE_CHANGED = 'GridOverlayStateChanged',
|
|
115
|
+
FLEX_CONTAINER_OVERLAY_STATE_CHANGED = 'FlexContainerOverlayStateChanged',
|
|
116
|
+
SCROLL_SNAP_OVERLAY_STATE_CHANGED = 'ScrollSnapOverlayStateChanged',
|
|
117
|
+
CONTAINER_QUERY_OVERLAY_STATE_CHANGED = 'ContainerQueryOverlayStateChanged',
|
|
114
118
|
}
|
|
115
119
|
|
|
116
120
|
export interface DOMNodeEventTypes {
|
|
117
121
|
[DOMNodeEvents.TOP_LAYER_INDEX_CHANGED]: void;
|
|
118
122
|
[DOMNodeEvents.SCROLLABLE_FLAG_UPDATED]: void;
|
|
123
|
+
[DOMNodeEvents.GRID_OVERLAY_STATE_CHANGED]: {enabled: boolean};
|
|
124
|
+
[DOMNodeEvents.FLEX_CONTAINER_OVERLAY_STATE_CHANGED]: {enabled: boolean};
|
|
125
|
+
[DOMNodeEvents.SCROLL_SNAP_OVERLAY_STATE_CHANGED]: {enabled: boolean};
|
|
126
|
+
[DOMNodeEvents.CONTAINER_QUERY_OVERLAY_STATE_CHANGED]: {enabled: boolean};
|
|
119
127
|
}
|
|
120
128
|
|
|
121
129
|
export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventTypes> {
|
|
@@ -761,6 +761,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
|
|
|
761
761
|
type,
|
|
762
762
|
frameId,
|
|
763
763
|
hasUserGesture,
|
|
764
|
+
renderBlockingBehavior,
|
|
764
765
|
}: Protocol.Network.RequestWillBeSentEvent): void {
|
|
765
766
|
let networkRequest = this.#requestsById.get(requestId);
|
|
766
767
|
if (networkRequest) {
|
|
@@ -789,6 +790,9 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
|
|
|
789
790
|
networkRequest = NetworkRequest.create(
|
|
790
791
|
requestId, request.url as Platform.DevToolsPath.UrlString, documentURL as Platform.DevToolsPath.UrlString,
|
|
791
792
|
frameId ?? null, loaderId, initiator, hasUserGesture);
|
|
793
|
+
if (renderBlockingBehavior) {
|
|
794
|
+
networkRequest.setRenderBlockingBehavior(renderBlockingBehavior);
|
|
795
|
+
}
|
|
792
796
|
requestToManagerMap.set(networkRequest, this.#manager);
|
|
793
797
|
}
|
|
794
798
|
networkRequest.hasNetworkData = true;
|
|
@@ -225,6 +225,7 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
|
225
225
|
#startTime = -1;
|
|
226
226
|
#endTime = -1;
|
|
227
227
|
#blockedReason: Protocol.Network.BlockedReason|undefined = undefined;
|
|
228
|
+
#renderBlockingBehavior?: Protocol.Network.RenderBlockingBehavior;
|
|
228
229
|
#corsErrorStatus: Protocol.Network.CorsErrorStatus|undefined = undefined;
|
|
229
230
|
statusCode = 0;
|
|
230
231
|
statusText = '';
|
|
@@ -661,6 +662,14 @@ export class NetworkRequest extends Common.ObjectWrapper.ObjectWrapper<EventType
|
|
|
661
662
|
this.#blockedReason = reason;
|
|
662
663
|
}
|
|
663
664
|
|
|
665
|
+
setRenderBlockingBehavior(renderBlocking: Protocol.Network.RenderBlockingBehavior): void {
|
|
666
|
+
this.#renderBlockingBehavior = renderBlocking;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
renderBlockingBehavior(): Protocol.Network.RenderBlockingBehavior|undefined {
|
|
670
|
+
return this.#renderBlockingBehavior;
|
|
671
|
+
}
|
|
672
|
+
|
|
664
673
|
corsErrorStatus(): Protocol.Network.CorsErrorStatus|undefined {
|
|
665
674
|
return this.#corsErrorStatus;
|
|
666
675
|
}
|
|
@@ -11,7 +11,7 @@ import * as Root from '../root/root.js';
|
|
|
11
11
|
|
|
12
12
|
import type {CSSModel} from './CSSModel.js';
|
|
13
13
|
import {DebuggerModel, Events as DebuggerModelEvents} from './DebuggerModel.js';
|
|
14
|
-
import {DeferredDOMNode, DOMModel, type DOMNode, Events as DOMModelEvents} from './DOMModel.js';
|
|
14
|
+
import {DeferredDOMNode, DOMModel, type DOMNode, DOMNodeEvents, Events as DOMModelEvents} from './DOMModel.js';
|
|
15
15
|
import {OverlayPersistentHighlighter} from './OverlayPersistentHighlighter.js';
|
|
16
16
|
import type {RemoteObject} from './RemoteObject.js';
|
|
17
17
|
import {SDKModel} from './SDKModel.js';
|
|
@@ -129,14 +129,25 @@ export class OverlayModel extends SDKModel<EventTypes> implements ProtocolProxyA
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
this.#persistentHighlighter = new OverlayPersistentHighlighter(this, {
|
|
132
|
-
onGridOverlayStateChanged: ({nodeId, enabled}) =>
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
132
|
+
onGridOverlayStateChanged: ({nodeId, enabled}) => {
|
|
133
|
+
this.#domModel.nodeForId(nodeId)?.dispatchEventToListeners(DOMNodeEvents.GRID_OVERLAY_STATE_CHANGED, {enabled});
|
|
134
|
+
this.dispatchEventToListeners(Events.PERSISTENT_GRID_OVERLAY_STATE_CHANGED, {nodeId, enabled});
|
|
135
|
+
},
|
|
136
|
+
onFlexOverlayStateChanged: ({nodeId, enabled}) => {
|
|
137
|
+
this.#domModel.nodeForId(nodeId)?.dispatchEventToListeners(
|
|
138
|
+
DOMNodeEvents.FLEX_CONTAINER_OVERLAY_STATE_CHANGED, {enabled});
|
|
139
|
+
this.dispatchEventToListeners(Events.PERSISTENT_FLEX_CONTAINER_OVERLAY_STATE_CHANGED, {nodeId, enabled});
|
|
140
|
+
},
|
|
141
|
+
onContainerQueryOverlayStateChanged: ({nodeId, enabled}) => {
|
|
142
|
+
this.#domModel.nodeForId(nodeId)?.dispatchEventToListeners(
|
|
143
|
+
DOMNodeEvents.CONTAINER_QUERY_OVERLAY_STATE_CHANGED, {enabled});
|
|
144
|
+
this.dispatchEventToListeners(Events.PERSISTENT_CONTAINER_QUERY_OVERLAY_STATE_CHANGED, {nodeId, enabled});
|
|
145
|
+
},
|
|
146
|
+
onScrollSnapOverlayStateChanged: ({nodeId, enabled}) => {
|
|
147
|
+
this.#domModel.nodeForId(nodeId)?.dispatchEventToListeners(
|
|
148
|
+
DOMNodeEvents.SCROLL_SNAP_OVERLAY_STATE_CHANGED, {enabled});
|
|
149
|
+
this.dispatchEventToListeners(Events.PERSISTENT_SCROLL_SNAP_OVERLAY_STATE_CHANGED, {nodeId, enabled});
|
|
150
|
+
},
|
|
140
151
|
});
|
|
141
152
|
this.#domModel.addEventListener(DOMModelEvents.NodeRemoved, () => {
|
|
142
153
|
if (!this.#persistentHighlighter) {
|
|
@@ -550,7 +550,8 @@ export class MainImpl {
|
|
|
550
550
|
Badges.UserBadges.instance().addEventListener(Badges.Events.BADGE_TRIGGERED, async ev => {
|
|
551
551
|
loadedPanelCommonModule ??= await import('../../panels/common/common.js') as typeof PanelCommon;
|
|
552
552
|
const badgeNotification = new loadedPanelCommonModule.BadgeNotification();
|
|
553
|
-
|
|
553
|
+
const {badge, reason} = ev.data;
|
|
554
|
+
void badgeNotification.present(badge, reason);
|
|
554
555
|
});
|
|
555
556
|
}
|
|
556
557
|
|
|
@@ -762,6 +762,7 @@ inspectorBackend.registerEnum("Network.CookieSameSite", {Strict: "Strict", Lax:
|
|
|
762
762
|
inspectorBackend.registerEnum("Network.CookiePriority", {Low: "Low", Medium: "Medium", High: "High"});
|
|
763
763
|
inspectorBackend.registerEnum("Network.CookieSourceScheme", {Unset: "Unset", NonSecure: "NonSecure", Secure: "Secure"});
|
|
764
764
|
inspectorBackend.registerEnum("Network.ResourcePriority", {VeryLow: "VeryLow", Low: "Low", Medium: "Medium", High: "High", VeryHigh: "VeryHigh"});
|
|
765
|
+
inspectorBackend.registerEnum("Network.RenderBlockingBehavior", {Blocking: "Blocking", InBodyParserBlocking: "InBodyParserBlocking", NonBlocking: "NonBlocking", NonBlockingDynamic: "NonBlockingDynamic", PotentiallyBlocking: "PotentiallyBlocking"});
|
|
765
766
|
inspectorBackend.registerEnum("Network.RequestReferrerPolicy", {UnsafeUrl: "unsafe-url", NoReferrerWhenDowngrade: "no-referrer-when-downgrade", NoReferrer: "no-referrer", Origin: "origin", OriginWhenCrossOrigin: "origin-when-cross-origin", SameOrigin: "same-origin", StrictOrigin: "strict-origin", StrictOriginWhenCrossOrigin: "strict-origin-when-cross-origin"});
|
|
766
767
|
inspectorBackend.registerEnum("Network.CertificateTransparencyCompliance", {Unknown: "unknown", NotCompliant: "not-compliant", Compliant: "compliant"});
|
|
767
768
|
inspectorBackend.registerEnum("Network.BlockedReason", {Other: "other", Csp: "csp", MixedContent: "mixed-content", Origin: "origin", Inspector: "inspector", Integrity: "integrity", SubresourceFilter: "subresource-filter", ContentType: "content-type", CoepFrameResourceNeedsCoepHeader: "coep-frame-resource-needs-coep-header", CoopSandboxedIframeCannotNavigateToCoopPage: "coop-sandboxed-iframe-cannot-navigate-to-coop-page", CorpNotSameOrigin: "corp-not-same-origin", CorpNotSameOriginAfterDefaultedToSameOriginByCoep: "corp-not-same-origin-after-defaulted-to-same-origin-by-coep", CorpNotSameOriginAfterDefaultedToSameOriginByDip: "corp-not-same-origin-after-defaulted-to-same-origin-by-dip", CorpNotSameOriginAfterDefaultedToSameOriginByCoepAndDip: "corp-not-same-origin-after-defaulted-to-same-origin-by-coep-and-dip", CorpNotSameSite: "corp-not-same-site", SriMessageSignatureMismatch: "sri-message-signature-mismatch"});
|
|
@@ -793,7 +794,7 @@ inspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp
|
|
|
793
794
|
inspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "encodedDataLength"]);
|
|
794
795
|
inspectorBackend.registerEvent("Network.requestIntercepted", ["interceptionId", "request", "frameId", "resourceType", "isNavigationRequest", "isDownload", "redirectUrl", "authChallenge", "responseErrorReason", "responseStatusCode", "responseHeaders", "requestId"]);
|
|
795
796
|
inspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]);
|
|
796
|
-
inspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "loaderId", "documentURL", "request", "timestamp", "wallTime", "initiator", "redirectHasExtraInfo", "redirectResponse", "type", "frameId", "hasUserGesture"]);
|
|
797
|
+
inspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "loaderId", "documentURL", "request", "timestamp", "wallTime", "initiator", "redirectHasExtraInfo", "redirectResponse", "type", "frameId", "hasUserGesture", "renderBlockingBehavior"]);
|
|
797
798
|
inspectorBackend.registerEvent("Network.resourceChangedPriority", ["requestId", "newPriority", "timestamp"]);
|
|
798
799
|
inspectorBackend.registerEvent("Network.signedExchangeReceived", ["requestId", "info"]);
|
|
799
800
|
inspectorBackend.registerEvent("Network.responseReceived", ["requestId", "loaderId", "timestamp", "type", "response", "hasExtraInfo", "frameId"]);
|
|
@@ -985,7 +986,7 @@ inspectorBackend.registerEnum("Page.AdFrameExplanation", {ParentIsAd: "ParentIsA
|
|
|
985
986
|
inspectorBackend.registerEnum("Page.SecureContextType", {Secure: "Secure", SecureLocalhost: "SecureLocalhost", InsecureScheme: "InsecureScheme", InsecureAncestor: "InsecureAncestor"});
|
|
986
987
|
inspectorBackend.registerEnum("Page.CrossOriginIsolatedContextType", {Isolated: "Isolated", NotIsolated: "NotIsolated", NotIsolatedFeatureDisabled: "NotIsolatedFeatureDisabled"});
|
|
987
988
|
inspectorBackend.registerEnum("Page.GatedAPIFeatures", {SharedArrayBuffers: "SharedArrayBuffers", SharedArrayBuffersTransferAllowed: "SharedArrayBuffersTransferAllowed", PerformanceMeasureMemory: "PerformanceMeasureMemory", PerformanceProfile: "PerformanceProfile"});
|
|
988
|
-
inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", AttributionReporting: "attribution-reporting", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DirectSocketsPrivate: "direct-sockets-private", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FencedUnpartitionedStorageRead: "fenced-unpartitioned-storage-read", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetworkAccess: "local-network-access", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateAggregation: "private-aggregation", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", RecordAdAuctionEvents: "record-ad-auction-events", Rewriter: "rewriter", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking"});
|
|
989
|
+
inspectorBackend.registerEnum("Page.PermissionsPolicyFeature", {Accelerometer: "accelerometer", AllScreensCapture: "all-screens-capture", AmbientLightSensor: "ambient-light-sensor", AriaNotify: "aria-notify", AttributionReporting: "attribution-reporting", Autofill: "autofill", Autoplay: "autoplay", Bluetooth: "bluetooth", BrowsingTopics: "browsing-topics", Camera: "camera", CapturedSurfaceControl: "captured-surface-control", ChDpr: "ch-dpr", ChDeviceMemory: "ch-device-memory", ChDownlink: "ch-downlink", ChEct: "ch-ect", ChPrefersColorScheme: "ch-prefers-color-scheme", ChPrefersReducedMotion: "ch-prefers-reduced-motion", ChPrefersReducedTransparency: "ch-prefers-reduced-transparency", ChRtt: "ch-rtt", ChSaveData: "ch-save-data", ChUa: "ch-ua", ChUaArch: "ch-ua-arch", ChUaBitness: "ch-ua-bitness", ChUaHighEntropyValues: "ch-ua-high-entropy-values", ChUaPlatform: "ch-ua-platform", ChUaModel: "ch-ua-model", ChUaMobile: "ch-ua-mobile", ChUaFormFactors: "ch-ua-form-factors", ChUaFullVersion: "ch-ua-full-version", ChUaFullVersionList: "ch-ua-full-version-list", ChUaPlatformVersion: "ch-ua-platform-version", ChUaWow64: "ch-ua-wow64", ChViewportHeight: "ch-viewport-height", ChViewportWidth: "ch-viewport-width", ChWidth: "ch-width", ClipboardRead: "clipboard-read", ClipboardWrite: "clipboard-write", ComputePressure: "compute-pressure", ControlledFrame: "controlled-frame", CrossOriginIsolated: "cross-origin-isolated", DeferredFetch: "deferred-fetch", DeferredFetchMinimal: "deferred-fetch-minimal", DeviceAttributes: "device-attributes", DigitalCredentialsCreate: "digital-credentials-create", DigitalCredentialsGet: "digital-credentials-get", DirectSockets: "direct-sockets", DirectSocketsMulticast: "direct-sockets-multicast", DirectSocketsPrivate: "direct-sockets-private", DisplayCapture: "display-capture", DocumentDomain: "document-domain", EncryptedMedia: "encrypted-media", ExecutionWhileOutOfViewport: "execution-while-out-of-viewport", ExecutionWhileNotRendered: "execution-while-not-rendered", FencedUnpartitionedStorageRead: "fenced-unpartitioned-storage-read", FocusWithoutUserActivation: "focus-without-user-activation", Fullscreen: "fullscreen", Frobulate: "frobulate", Gamepad: "gamepad", Geolocation: "geolocation", Gyroscope: "gyroscope", Hid: "hid", IdentityCredentialsGet: "identity-credentials-get", IdleDetection: "idle-detection", InterestCohort: "interest-cohort", JoinAdInterestGroup: "join-ad-interest-group", KeyboardMap: "keyboard-map", LanguageDetector: "language-detector", LanguageModel: "language-model", LocalFonts: "local-fonts", LocalNetwork: "local-network", LocalNetworkAccess: "local-network-access", LoopbackNetwork: "loopback-network", Magnetometer: "magnetometer", ManualText: "manual-text", MediaPlaybackWhileNotVisible: "media-playback-while-not-visible", Microphone: "microphone", Midi: "midi", OnDeviceSpeechRecognition: "on-device-speech-recognition", OtpCredentials: "otp-credentials", Payment: "payment", PictureInPicture: "picture-in-picture", PrivateAggregation: "private-aggregation", PrivateStateTokenIssuance: "private-state-token-issuance", PrivateStateTokenRedemption: "private-state-token-redemption", PublickeyCredentialsCreate: "publickey-credentials-create", PublickeyCredentialsGet: "publickey-credentials-get", RecordAdAuctionEvents: "record-ad-auction-events", Rewriter: "rewriter", RunAdAuction: "run-ad-auction", ScreenWakeLock: "screen-wake-lock", Serial: "serial", SharedStorage: "shared-storage", SharedStorageSelectUrl: "shared-storage-select-url", SmartCard: "smart-card", SpeakerSelection: "speaker-selection", StorageAccess: "storage-access", SubApps: "sub-apps", Summarizer: "summarizer", SyncXhr: "sync-xhr", Translator: "translator", Unload: "unload", Usb: "usb", UsbUnrestricted: "usb-unrestricted", VerticalScroll: "vertical-scroll", WebAppInstallation: "web-app-installation", WebPrinting: "web-printing", WebShare: "web-share", WindowManagement: "window-management", Writer: "writer", XrSpatialTracking: "xr-spatial-tracking"});
|
|
989
990
|
inspectorBackend.registerEnum("Page.PermissionsPolicyBlockReason", {Header: "Header", IframeAttribute: "IframeAttribute", InFencedFrameTree: "InFencedFrameTree", InIsolatedApp: "InIsolatedApp"});
|
|
990
991
|
inspectorBackend.registerEnum("Page.OriginTrialTokenStatus", {Success: "Success", NotSupported: "NotSupported", Insecure: "Insecure", Expired: "Expired", WrongOrigin: "WrongOrigin", InvalidSignature: "InvalidSignature", Malformed: "Malformed", WrongVersion: "WrongVersion", FeatureDisabled: "FeatureDisabled", TokenDisabled: "TokenDisabled", FeatureDisabledForUser: "FeatureDisabledForUser", UnknownTrial: "UnknownTrial"});
|
|
991
992
|
inspectorBackend.registerEnum("Page.OriginTrialStatus", {Enabled: "Enabled", ValidTokenNotProvided: "ValidTokenNotProvided", OSNotSupported: "OSNotSupported", TrialNotAllowed: "TrialNotAllowed"});
|
|
@@ -1380,6 +1381,7 @@ inspectorBackend.registerEvent("Tracing.dataCollected", ["value"]);
|
|
|
1380
1381
|
inspectorBackend.registerEvent("Tracing.tracingComplete", ["dataLossOccurred", "stream", "traceFormat", "streamCompression"]);
|
|
1381
1382
|
inspectorBackend.registerCommand("Tracing.end", [], [], "Stop trace events collection.");
|
|
1382
1383
|
inspectorBackend.registerCommand("Tracing.getCategories", [], ["categories"], "Gets supported tracing categories.");
|
|
1384
|
+
inspectorBackend.registerCommand("Tracing.getTrackEventDescriptor", [], ["descriptor"], "Return a descriptor for all available tracing categories.");
|
|
1383
1385
|
inspectorBackend.registerCommand("Tracing.recordClockSyncMarker", [{"name": "syncId", "type": "string", "optional": false, "description": "The ID of this clock sync marker", "typeRef": null}], [], "Record a clock sync marker in the trace.");
|
|
1384
1386
|
inspectorBackend.registerCommand("Tracing.requestMemoryDump", [{"name": "deterministic", "type": "boolean", "optional": true, "description": "Enables more deterministic results by forcing garbage collection", "typeRef": null}, {"name": "levelOfDetail", "type": "string", "optional": true, "description": "Specifies level of details in memory dump. Defaults to \\\"detailed\\\".", "typeRef": "Tracing.MemoryDumpLevelOfDetail"}], ["dumpGuid", "success"], "Request a global memory dump.");
|
|
1385
1387
|
inspectorBackend.registerEnum("Tracing.StartRequestTransferMode", {ReportEvents: "ReportEvents", ReturnAsStream: "ReturnAsStream"});
|
|
@@ -4889,6 +4889,13 @@ export namespace ProtocolMapping {
|
|
|
4889
4889
|
paramsType: [];
|
|
4890
4890
|
returnType: Protocol.Tracing.GetCategoriesResponse;
|
|
4891
4891
|
};
|
|
4892
|
+
/**
|
|
4893
|
+
* Return a descriptor for all available tracing categories.
|
|
4894
|
+
*/
|
|
4895
|
+
'Tracing.getTrackEventDescriptor': {
|
|
4896
|
+
paramsType: [];
|
|
4897
|
+
returnType: Protocol.Tracing.GetTrackEventDescriptorResponse;
|
|
4898
|
+
};
|
|
4892
4899
|
/**
|
|
4893
4900
|
* Record a clock sync marker in the trace.
|
|
4894
4901
|
*/
|
|
@@ -4300,6 +4300,11 @@ declare namespace ProtocolProxyApi {
|
|
|
4300
4300
|
*/
|
|
4301
4301
|
invoke_getCategories(): Promise<Protocol.Tracing.GetCategoriesResponse>;
|
|
4302
4302
|
|
|
4303
|
+
/**
|
|
4304
|
+
* Return a descriptor for all available tracing categories.
|
|
4305
|
+
*/
|
|
4306
|
+
invoke_getTrackEventDescriptor(): Promise<Protocol.Tracing.GetTrackEventDescriptorResponse>;
|
|
4307
|
+
|
|
4303
4308
|
/**
|
|
4304
4309
|
* Record a clock sync marker in the trace.
|
|
4305
4310
|
*/
|
|
@@ -10001,6 +10001,17 @@ export namespace Network {
|
|
|
10001
10001
|
VeryHigh = 'VeryHigh',
|
|
10002
10002
|
}
|
|
10003
10003
|
|
|
10004
|
+
/**
|
|
10005
|
+
* The render blocking behavior of a resource request.
|
|
10006
|
+
*/
|
|
10007
|
+
export const enum RenderBlockingBehavior {
|
|
10008
|
+
Blocking = 'Blocking',
|
|
10009
|
+
InBodyParserBlocking = 'InBodyParserBlocking',
|
|
10010
|
+
NonBlocking = 'NonBlocking',
|
|
10011
|
+
NonBlockingDynamic = 'NonBlockingDynamic',
|
|
10012
|
+
PotentiallyBlocking = 'PotentiallyBlocking',
|
|
10013
|
+
}
|
|
10014
|
+
|
|
10004
10015
|
/**
|
|
10005
10016
|
* Post data entry for HTTP request
|
|
10006
10017
|
*/
|
|
@@ -12156,6 +12167,10 @@ export namespace Network {
|
|
|
12156
12167
|
* Whether the request is initiated by a user gesture. Defaults to false.
|
|
12157
12168
|
*/
|
|
12158
12169
|
hasUserGesture?: boolean;
|
|
12170
|
+
/**
|
|
12171
|
+
* The render blocking behavior of the request.
|
|
12172
|
+
*/
|
|
12173
|
+
renderBlockingBehavior?: RenderBlockingBehavior;
|
|
12159
12174
|
}
|
|
12160
12175
|
|
|
12161
12176
|
/**
|
|
@@ -13751,7 +13766,9 @@ export namespace Page {
|
|
|
13751
13766
|
LanguageDetector = 'language-detector',
|
|
13752
13767
|
LanguageModel = 'language-model',
|
|
13753
13768
|
LocalFonts = 'local-fonts',
|
|
13769
|
+
LocalNetwork = 'local-network',
|
|
13754
13770
|
LocalNetworkAccess = 'local-network-access',
|
|
13771
|
+
LoopbackNetwork = 'loopback-network',
|
|
13755
13772
|
Magnetometer = 'magnetometer',
|
|
13756
13773
|
ManualText = 'manual-text',
|
|
13757
13774
|
MediaPlaybackWhileNotVisible = 'media-playback-while-not-visible',
|
|
@@ -18839,6 +18856,13 @@ export namespace Tracing {
|
|
|
18839
18856
|
categories: string[];
|
|
18840
18857
|
}
|
|
18841
18858
|
|
|
18859
|
+
export interface GetTrackEventDescriptorResponse extends ProtocolResponseWithError {
|
|
18860
|
+
/**
|
|
18861
|
+
* Base64-encoded serialized perfetto.protos.TrackEventDescriptor protobuf message.
|
|
18862
|
+
*/
|
|
18863
|
+
descriptor: binary;
|
|
18864
|
+
}
|
|
18865
|
+
|
|
18842
18866
|
export interface RecordClockSyncMarkerRequest {
|
|
18843
18867
|
/**
|
|
18844
18868
|
* The ID of this clock sync marker
|
package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt
CHANGED
|
@@ -374,17 +374,17 @@ This is the bottom-up summary for the entire trace. Only the top 20 activities (
|
|
|
374
374
|
- self: 29 ms, total: 32 ms, source: clearTimeout
|
|
375
375
|
- self: 27 ms, total: 50 ms, source: Parse HTML
|
|
376
376
|
- self: 18 ms, total: 19 ms, source: aC (url: https://s.yimg.com/aaq/f10d509c/d1irmdsmbztlvx.js, line: 0, column: 19068)
|
|
377
|
-
- self: 18 ms, total: 186 ms, source: (anonymous) (url: https://s.yimg.com/aaq/prebid/prebid-2.0.js, line: 5, column: 1)
|
|
378
377
|
- self: 16 ms, total: 226 ms, source: Function call
|
|
379
|
-
- self: 12 ms, total: 163 ms, source: (anonymous) (url: https://s.yimg.com/aaq/f10d509c/d1irmdsmbztlvx.js, line: 0, column: 0)
|
|
380
|
-
- self: 12 ms, total: 83 ms, source: (anonymous) (url: https://cdn.taboola.com/libtrc/yahooweb-network/loader.js, line: 0, column: 9)
|
|
381
378
|
- self: 11 ms, total: 12 ms, source: fetch
|
|
382
379
|
- self: 11 ms, total: 12 ms, source: evaluate
|
|
383
380
|
- self: 10 ms, total: 212 ms, source: Run microtasks
|
|
384
|
-
- self: 9 ms, total: 19 ms, source: (anonymous) (url: https://s.yimg.com/du/ay/wnsrvbjmeprtfrnfx.js, line: 0, column: 0)
|
|
385
381
|
- self: 9 ms, total: 10 ms, source: Minor GC
|
|
386
382
|
- self: 8 ms, total: 226 ms, source: Evaluate script
|
|
387
|
-
- self: 7 ms, total:
|
|
383
|
+
- self: 7 ms, total: 7 ms, source: (anonymous) (url: https://s.yimg.com/du/ay/wnsrvbjmeprtfrnfx.js, line: 111, column: 4705)
|
|
384
|
+
- self: 7 ms, total: 9 ms, source: appendChild
|
|
385
|
+
- self: 6 ms, total: 8 ms, source: Ei (url: https://s.yimg.com/aaq/benji/benji-2.2.99.js, line: 0, column: 24493)
|
|
386
|
+
- self: 6 ms, total: 6 ms, source: Il (url: https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202503250101/pubads_impl.js, line: 32, column: 58003)
|
|
387
|
+
- self: 5 ms, total: 7 ms, source: n (url: https://s.yimg.com/aaq/prebid/prebid-2.0.js, line: 11, column: 3881)
|
|
388
388
|
|
|
389
389
|
# Third parties
|
|
390
390
|
|
|
@@ -970,28 +970,29 @@ Content:
|
|
|
970
970
|
4;p-73704-775-2074-419;(anonymous);7.2;0.1;0;5;0;9
|
|
971
971
|
5;p-73704-775-2075-420;(anonymous);7.1;;0;6;0;200
|
|
972
972
|
6;p-73704-775-2075-421;(anonymous);7.1;2.6;0;7;0;231
|
|
973
|
-
7;p-73704-775-2095-422;(anonymous);4.5;1.3;0;8-
|
|
974
|
-
8;p-73704-775-2095-423;(anonymous);0.
|
|
973
|
+
7;p-73704-775-2095-422;(anonymous);4.5;1.3;0;8-20;0;292
|
|
974
|
+
8;p-73704-775-2095-423;(anonymous);0.1;0.1;0;;0;756
|
|
975
975
|
9;p-73704-775-2097-424;Et;0.1;0.1;0;;0;10766
|
|
976
|
-
10;p-73704-775-2098-425;St;0.4;0.2;0;
|
|
976
|
+
10;p-73704-775-2098-425;St;0.4;0.2;0;20;0;10904
|
|
977
977
|
11;p-73704-775-2105-427;k;0.4;0.4;0;;0;5125
|
|
978
|
-
12;p-73704-775-2108-428;Go;0.1;;0;
|
|
979
|
-
13;p-73704-775-2109-430;Oi;0.4;0.2;0;
|
|
978
|
+
12;p-73704-775-2108-428;Go;0.1;;0;21;0;68523
|
|
979
|
+
13;p-73704-775-2109-430;Oi;0.4;0.2;0;22;0;38264
|
|
980
980
|
14;p-73704-775-2115-432;tl;0.3;0.3;0;;0;154217
|
|
981
|
-
15;p-73704-775-2118-433;ul;0.6;0.5;0;
|
|
981
|
+
15;p-73704-775-2118-433;ul;0.6;0.5;0;23;0;155034
|
|
982
982
|
16;p-73704-775-2121-435;cl;0.1;0.1;0;;0;155107
|
|
983
|
-
17;p-73704-775-2123-436;hl;0.1;;0;
|
|
983
|
+
17;p-73704-775-2123-436;hl;0.1;;0;24;0;155309
|
|
984
984
|
18;p-73704-775-2124-439;sl;0.1;0.1;0;;0;154927
|
|
985
|
-
19;p-73704-775-2127-
|
|
986
|
-
20;p-73704-775-
|
|
987
|
-
21;p-73704-775-
|
|
988
|
-
22;p-73704-775-
|
|
989
|
-
23;p-73704-775-
|
|
990
|
-
24;p-73704-775-
|
|
991
|
-
25;p-73704-775-
|
|
992
|
-
26;p-73704-775-2128-
|
|
993
|
-
27;p-73704-775-
|
|
994
|
-
28;p-73704-775-
|
|
985
|
+
19;p-73704-775-2127-440;(anonymous);0.3;;0;25-27;0;161805
|
|
986
|
+
20;p-73704-775-2099-426;vt;0.2;0.2;0;;0;10155
|
|
987
|
+
21;p-73704-775-2108-429;Mo;0.1;0.1;0;;0;66493
|
|
988
|
+
22;p-73704-775-2111-431;vi;0.1;0.1;0;;0;37138
|
|
989
|
+
23;p-73704-775-2118-434;ll;0.1;0.1;0;;0;155345
|
|
990
|
+
24;p-73704-775-2123-437;ll;0.1;;0;27;0;155345
|
|
991
|
+
25;p-73704-775-2127-441;hl;0.1;0.1;0;;0;155309
|
|
992
|
+
26;p-73704-775-2128-442;registerService;0.2;;1;28-30;0;9441
|
|
993
|
+
27;p-73704-775-2123-438;get prototype;0.1;0.1;;;;
|
|
994
|
+
28;p-73704-775-2128-443;u;0.1;0.1;1;;0;10091
|
|
995
|
+
29;p-73704-775-2129-444;d;0.1;0.1;1;;0;595
|
|
995
996
|
|
|
996
997
|
IMPORTANT: Never show eventKey to the user.
|
|
997
998
|
|
|
@@ -14,12 +14,18 @@ import {StarterBadge} from './StarterBadge.js';
|
|
|
14
14
|
|
|
15
15
|
type BadgeClass = new (badgeContext: BadgeContext) => Badge;
|
|
16
16
|
|
|
17
|
+
export const enum BadgeTriggerReason {
|
|
18
|
+
AWARD = 'Award',
|
|
19
|
+
STARTER_BADGE_SETTINGS_NUDGE = 'StarterBadgeSettingsNudge',
|
|
20
|
+
STARTER_BADGE_PROFILE_NUDGE = 'StarterBadgeProfileNudge',
|
|
21
|
+
}
|
|
22
|
+
|
|
17
23
|
export const enum Events {
|
|
18
24
|
BADGE_TRIGGERED = 'BadgeTriggered',
|
|
19
25
|
}
|
|
20
26
|
|
|
21
27
|
export interface EventTypes {
|
|
22
|
-
[Events.BADGE_TRIGGERED]: Badge;
|
|
28
|
+
[Events.BADGE_TRIGGERED]: {badge: Badge, reason: BadgeTriggerReason};
|
|
23
29
|
}
|
|
24
30
|
|
|
25
31
|
const SNOOZE_TIME_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
@@ -97,24 +103,50 @@ export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
|
97
103
|
this.#badgeActionEventTarget.dispatchEventToListeners(action);
|
|
98
104
|
}
|
|
99
105
|
|
|
106
|
+
async #resolveBadgeTriggerReason(badge: Badge): Promise<BadgeTriggerReason|undefined> {
|
|
107
|
+
if (!badge.isStarterBadge) {
|
|
108
|
+
return BadgeTriggerReason.AWARD;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const getProfileResponse = await Host.GdpClient.GdpClient.instance().getProfile();
|
|
112
|
+
// The `getProfile` call failed and returned a `null`.
|
|
113
|
+
// For that case, we don't show anything.
|
|
114
|
+
if (!getProfileResponse) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const hasGdpProfile = Boolean(getProfileResponse.profile);
|
|
119
|
+
const receiveBadgesSettingEnabled = Boolean(this.#receiveBadgesSetting.get());
|
|
120
|
+
|
|
121
|
+
// If the user already has a GDP profile and the receive badges setting enabled,
|
|
122
|
+
// starter badge behaves as if it's an activity based badge.
|
|
123
|
+
if (hasGdpProfile && receiveBadgesSettingEnabled) {
|
|
124
|
+
return BadgeTriggerReason.AWARD;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
if (this.#isStarterBadgeDismissed() || this.#isStarterBadgeSnoozed()) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// If the user already has a GDP profile and the receive badges setting disabled,
|
|
132
|
+
// starter badge behaves as a nudge for opting into receiving badges.
|
|
133
|
+
if (hasGdpProfile && !receiveBadgesSettingEnabled) {
|
|
134
|
+
return BadgeTriggerReason.STARTER_BADGE_SETTINGS_NUDGE;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// The user does not have a GDP profile, starter badge acts as a nudge for creating a GDP profile.
|
|
138
|
+
return BadgeTriggerReason.STARTER_BADGE_PROFILE_NUDGE;
|
|
139
|
+
}
|
|
140
|
+
|
|
100
141
|
async #onTriggerBadge(badge: Badge, opts?: TriggerOptions): Promise<void> {
|
|
101
142
|
const triggerTime = Date.now();
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (!
|
|
105
|
-
|
|
106
|
-
} else {
|
|
107
|
-
const getProfileResponse = await Host.GdpClient.GdpClient.instance().getProfile();
|
|
108
|
-
const receiveBadgesSettingEnabled = Boolean(this.#receiveBadgesSetting.get());
|
|
109
|
-
// If there is a GDP profile and the user has enabled receiving badges, we award the starter badge as well.
|
|
110
|
-
if (getProfileResponse?.profile && receiveBadgesSettingEnabled && !this.#isStarterBadgeDismissed() &&
|
|
111
|
-
!this.#isStarterBadgeSnoozed()) {
|
|
112
|
-
shouldAwardBadge = true;
|
|
113
|
-
}
|
|
143
|
+
const reason = await this.#resolveBadgeTriggerReason(badge);
|
|
144
|
+
|
|
145
|
+
if (!reason) {
|
|
146
|
+
return;
|
|
114
147
|
}
|
|
115
148
|
|
|
116
|
-
|
|
117
|
-
if (shouldAwardBadge) {
|
|
149
|
+
if (reason === BadgeTriggerReason.AWARD) {
|
|
118
150
|
const result = await Host.GdpClient.GdpClient.instance().createAward({name: badge.name});
|
|
119
151
|
if (!result) {
|
|
120
152
|
return;
|
|
@@ -125,7 +157,7 @@ export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
|
125
157
|
// We want to add exactly 1.5 second delay between the trigger action & the notification.
|
|
126
158
|
const delay = opts?.immediate ? 0 : Math.max(DELAY_BEFORE_TRIGGER - timeElapsedAfterTriggerCall, 0);
|
|
127
159
|
setTimeout(() => {
|
|
128
|
-
this.dispatchEventToListeners(Events.BADGE_TRIGGERED, badge);
|
|
160
|
+
this.dispatchEventToListeners(Events.BADGE_TRIGGERED, {badge, reason});
|
|
129
161
|
}, delay);
|
|
130
162
|
}
|
|
131
163
|
|
|
@@ -12,6 +12,7 @@ export interface GreenDevSettings {
|
|
|
12
12
|
inlineWidgets: Common.Settings.Setting<boolean>;
|
|
13
13
|
artifactViewer: Common.Settings.Setting<boolean>;
|
|
14
14
|
aiAnnotations: Common.Settings.Setting<boolean>;
|
|
15
|
+
copyToGemini: Common.Settings.Setting<boolean>;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export class Prototypes {
|
|
@@ -51,6 +52,10 @@ export class Prototypes {
|
|
|
51
52
|
|
|
52
53
|
const artifactViewer =
|
|
53
54
|
settings.createSetting('greendev-artifact-viewer-enabled', false, Common.Settings.SettingStorageType.LOCAL);
|
|
54
|
-
|
|
55
|
+
|
|
56
|
+
const copyToGemini =
|
|
57
|
+
settings.createSetting('greendev-copy-to-gemini-enabled', false, Common.Settings.SettingStorageType.LOCAL);
|
|
58
|
+
|
|
59
|
+
return {inDevToolsFloaty, inlineWidgets, aiAnnotations, artifactViewer, copyToGemini};
|
|
55
60
|
}
|
|
56
61
|
}
|
|
@@ -687,7 +687,7 @@ export function generateEventID(event: Types.Events.Event): string {
|
|
|
687
687
|
SamplesIntegrator.nativeGroup(event.callFrame.functionName) :
|
|
688
688
|
event.callFrame.functionName;
|
|
689
689
|
const location = event.callFrame.scriptId || event.callFrame.url || '';
|
|
690
|
-
return `f:${name}@${location}`;
|
|
690
|
+
return `f:${name}@${location}:${event.callFrame.lineNumber}:${event.callFrame.columnNumber}`;
|
|
691
691
|
}
|
|
692
692
|
|
|
693
693
|
if (Types.Events.isConsoleTimeStamp(event) && event.args.data) {
|
|
@@ -235,19 +235,24 @@ function getNavigationForPageLoadEvent(event: Types.Events.PageLoadEvent): AnyNa
|
|
|
235
235
|
if (Types.Events.isFirstContentfulPaint(event) || Types.Events.isAnyLargestContentfulPaintCandidate(event) ||
|
|
236
236
|
Types.Events.isFirstPaint(event)) {
|
|
237
237
|
const {navigationsByNavigationId, softNavigationsById} = metaHandlerData();
|
|
238
|
+
|
|
238
239
|
let navigation;
|
|
239
240
|
if (event.name === Types.Events.Name.MARK_LCP_CANDIDATE_FOR_SOFT_NAVIGATION &&
|
|
240
241
|
event.args.data?.performanceTimelineNavigationId) {
|
|
241
242
|
navigation = softNavigationsById.get(event.args.data.performanceTimelineNavigationId);
|
|
242
|
-
|
|
243
|
-
|
|
243
|
+
if (!navigation) {
|
|
244
|
+
// The most recent soft navigation must have been before the trace started.
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
} else {
|
|
244
248
|
const navigationId = event.args.data?.navigationId;
|
|
245
249
|
if (!navigationId) {
|
|
246
|
-
throw new Error(
|
|
250
|
+
throw new Error(`Trace event unexpectedly had no navigation ID: ${JSON.stringify(event, null, 2)}`);
|
|
247
251
|
}
|
|
248
252
|
|
|
249
253
|
navigation = navigationsByNavigationId.get(navigationId);
|
|
250
254
|
}
|
|
255
|
+
|
|
251
256
|
if (!navigation) {
|
|
252
257
|
// This event's navigation has been filtered out by the meta handler as a noise event.
|
|
253
258
|
return null;
|