chrome-devtools-frontend 1.0.1681091 → 1.0.1681498
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/sdk/DOMModel.ts +8 -0
- package/front_end/core/sdk/NetworkManager.ts +9 -4
- package/front_end/core/sdk/OverlayModel.ts +3 -2
- package/front_end/core/sdk/SDKSettings.ts +19 -0
- package/front_end/entrypoints/main/main-meta.ts +82 -0
- package/front_end/entrypoints/shell/shell.ts +0 -3
- package/front_end/entrypoints/trace_app/trace_app.ts +0 -3
- package/front_end/models/ai_code_completion/debug.ts +6 -3
- package/front_end/models/ai_code_generation/debug.ts +6 -3
- package/front_end/models/badges/UserBadges.ts +9 -2
- package/front_end/models/emulation/DeviceModeModel.ts +16 -27
- package/front_end/models/emulation/EmulatedDevices.ts +30 -125
- package/front_end/models/extensions/ExtensionAPI.ts +34 -23
- package/front_end/models/logs/NetworkLog.ts +3 -3
- package/front_end/models/logs/logs-meta.ts +0 -60
- package/front_end/models/persistence/NetworkPersistenceManager.ts +7 -1
- package/front_end/panels/application/ServiceWorkersView.ts +1 -1
- package/front_end/panels/application/StorageView.ts +2 -0
- package/front_end/panels/common/BadgeNotification.ts +1 -1
- package/front_end/panels/common/ExtensionPanel.ts +12 -7
- package/front_end/panels/common/ExtensionServer.ts +76 -16
- package/front_end/panels/common/GdpSignUpDialog.ts +1 -1
- package/front_end/panels/console/ConsoleView.ts +2 -1
- package/front_end/panels/console/ConsoleViewMessage.ts +3 -2
- package/front_end/panels/console/console-meta.ts +9 -0
- package/front_end/panels/elements/CSSRuleValidator.ts +12 -12
- package/front_end/panels/elements/CSSSpecificityBreakdown.ts +1 -1
- package/front_end/panels/elements/ClassesPaneWidget.ts +6 -6
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +1 -1
- package/front_end/panels/elements/ComputedStyleWidget.ts +4 -5
- package/front_end/panels/elements/DOMTreeContextMenu.ts +3 -6
- package/front_end/panels/elements/ElementIssueUtils.ts +20 -20
- package/front_end/panels/elements/ElementStatePaneWidget.ts +6 -6
- package/front_end/panels/elements/ElementsPanel.ts +10 -10
- package/front_end/panels/elements/ElementsTreeElement.ts +28 -28
- package/front_end/panels/elements/ElementsTreeOutline.ts +5 -20
- package/front_end/panels/elements/EventListenersWidget.ts +8 -8
- package/front_end/panels/elements/LayersWidget.ts +4 -4
- package/front_end/panels/elements/LayoutPane.ts +11 -11
- package/front_end/panels/elements/MarkerDecorator.ts +3 -3
- package/front_end/panels/elements/PlatformFontsWidget.ts +8 -8
- package/front_end/panels/elements/PropertiesWidget.ts +4 -4
- package/front_end/panels/elements/PropertyRenderer.ts +2 -2
- package/front_end/panels/elements/ShortcutTreeElement.ts +1 -1
- package/front_end/panels/elements/StylePropertiesSection.ts +14 -14
- package/front_end/panels/elements/StylePropertyTreeElement.ts +21 -21
- package/front_end/panels/elements/StylesSidebarPane.ts +12 -13
- package/front_end/panels/elements/components/AccessibilityTreeNode.ts +1 -1
- package/front_end/panels/elements/components/CSSHintDetailsView.ts +1 -1
- package/front_end/panels/elements/components/CSSVariableValueView.ts +3 -3
- package/front_end/panels/elements/components/ElementsBreadcrumbsUtils.ts +2 -2
- package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
- package/front_end/panels/elements/elements-meta.ts +13 -13
- package/front_end/panels/issues/AffectedCookiesView.ts +2 -0
- package/front_end/panels/issues/AffectedElementsView.ts +5 -0
- package/front_end/panels/issues/IssueView.ts +7 -2
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +11 -7
- package/front_end/panels/layer_viewer/LayerTreeOutline.ts +2 -0
- package/front_end/panels/network/NetworkLogView.ts +5 -2
- package/front_end/panels/network/NetworkOverview.ts +11 -5
- package/front_end/panels/network/NetworkPanel.ts +2 -1
- package/front_end/panels/network/NetworkWaterfallColumn.ts +16 -3
- package/front_end/panels/network/RequestHeadersView.ts +4 -4
- package/front_end/panels/network/components/ResponseHeaderSection.ts +6 -2
- package/front_end/panels/network/network-meta.ts +57 -0
- package/front_end/panels/settings/components/SyncSection.ts +1 -1
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +0 -3
- package/front_end/panels/sources/NavigatorView.ts +6 -2
- package/front_end/panels/sources/SourcesNavigator.ts +8 -4
- package/front_end/panels/sources/SourcesPanel.ts +4 -2
- package/front_end/panels/sources/SourcesSearchScope.ts +3 -1
- package/front_end/panels/sources/UISourceCodeFrame.ts +2 -2
- package/front_end/panels/web_audio/WebAudioView.ts +8 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/web-vitals/rebuild.sh +1 -1
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +11 -11
- package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +1 -1
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +19 -20
- package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +2 -2
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +164 -325
- package/front_end/ui/visual_logging/KnownContextValues.ts +11 -0
- package/mcp/mcp.ts +0 -3
- package/package.json +1 -1
- package/front_end/core/sdk/sdk-meta.ts +0 -40
- package/front_end/models/badges/badges-meta.ts +0 -27
- package/front_end/models/persistence/persistence-meta.ts +0 -69
|
@@ -40,6 +40,7 @@ import * as Common from '../common/common.js';
|
|
|
40
40
|
import * as Platform from '../platform/platform.js';
|
|
41
41
|
import * as Root from '../root/root.js';
|
|
42
42
|
|
|
43
|
+
import {ConsoleModel} from './ConsoleModel.js';
|
|
43
44
|
import {CSSModel} from './CSSModel.js';
|
|
44
45
|
import type {FrameManager} from './FrameManager.js';
|
|
45
46
|
import {OverlayModel} from './OverlayModel.js';
|
|
@@ -1334,6 +1335,13 @@ export class DOMNode extends Common.ObjectWrapper.ObjectWrapper<DOMNodeEventType
|
|
|
1334
1335
|
};
|
|
1335
1336
|
}
|
|
1336
1337
|
|
|
1338
|
+
async saveNodeToTempVariable(): Promise<void> {
|
|
1339
|
+
const remoteObjectForConsole = await this.resolveToObject();
|
|
1340
|
+
const consoleModel = this.#domModel.target().model(ConsoleModel);
|
|
1341
|
+
await consoleModel?.saveToTempVariable(remoteObjectForConsole?.runtimeModel().defaultExecutionContext() ?? null,
|
|
1342
|
+
remoteObjectForConsole);
|
|
1343
|
+
}
|
|
1344
|
+
|
|
1337
1345
|
async scrollIntoView(): Promise<void> {
|
|
1338
1346
|
const node = this.enclosingElementOrSelf();
|
|
1339
1347
|
if (!node) {
|
|
@@ -26,7 +26,12 @@ import {
|
|
|
26
26
|
} from './NetworkRequest.js';
|
|
27
27
|
import {type ExecutionContext, RuntimeModel} from './RuntimeModel.js';
|
|
28
28
|
import {SDKModel} from './SDKModel.js';
|
|
29
|
-
import {
|
|
29
|
+
import {
|
|
30
|
+
cacheDisabledSettingDescriptor,
|
|
31
|
+
monitoringXHREnabledSettingDescriptor,
|
|
32
|
+
preserveNetworkLogSettingDescriptor,
|
|
33
|
+
requestBlockingEnabledSettingDescriptor,
|
|
34
|
+
} from './SDKSettings.js';
|
|
30
35
|
import {Capability, type Target} from './Target.js';
|
|
31
36
|
import {type SDKModelObserver, TargetManager} from './TargetManager.js';
|
|
32
37
|
|
|
@@ -199,7 +204,7 @@ export class NetworkManager extends SDKModel<EventTypes> {
|
|
|
199
204
|
});
|
|
200
205
|
|
|
201
206
|
if (Root.Runtime.hostConfig.devToolsEnableDurableMessages?.enabled) {
|
|
202
|
-
const preserveLogSetting = settings.
|
|
207
|
+
const preserveLogSetting = settings.resolve(preserveNetworkLogSettingDescriptor);
|
|
203
208
|
this.#updateDurableMessages(preserveLogSetting.get());
|
|
204
209
|
preserveLogSetting.addChangeListener(this.preserveLogChanged, this);
|
|
205
210
|
}
|
|
@@ -557,7 +562,7 @@ export class NetworkManager extends SDKModel<EventTypes> {
|
|
|
557
562
|
override dispose(): void {
|
|
558
563
|
const settings = this.target().targetManager().settings;
|
|
559
564
|
settings.resolve(cacheDisabledSettingDescriptor).removeChangeListener(this.cacheDisabledSettingChanged, this);
|
|
560
|
-
settings.
|
|
565
|
+
settings.resolve(preserveNetworkLogSettingDescriptor).removeChangeListener(this.preserveLogChanged, this);
|
|
561
566
|
}
|
|
562
567
|
|
|
563
568
|
private bypassServiceWorkerChanged(): void {
|
|
@@ -1405,7 +1410,7 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
|
|
|
1405
1410
|
this.#multitargetNetworkManager.inflightMainResourceRequests.delete(networkRequest.requestId());
|
|
1406
1411
|
|
|
1407
1412
|
const settings = this.#manager.target().targetManager().settings;
|
|
1408
|
-
if (settings.
|
|
1413
|
+
if (settings.resolve(monitoringXHREnabledSettingDescriptor).get() &&
|
|
1409
1414
|
networkRequest.resourceType().category() === Common.ResourceType.resourceCategories.XHR) {
|
|
1410
1415
|
let message;
|
|
1411
1416
|
const failedToLoad = networkRequest.failed || networkRequest.hasErrorStatusCode();
|
|
@@ -16,6 +16,7 @@ import type {RemoteObject} from './RemoteObject.js';
|
|
|
16
16
|
import {SDKModel} from './SDKModel.js';
|
|
17
17
|
import {
|
|
18
18
|
apcaSettingDescriptor,
|
|
19
|
+
disablePausedStateOverlaySettingDescriptor,
|
|
19
20
|
showAdHighlightsSettingDescriptor,
|
|
20
21
|
showDebugBordersSettingDescriptor,
|
|
21
22
|
showFPSCounterSettingDescriptor,
|
|
@@ -122,7 +123,7 @@ export class OverlayModel extends SDKModel<EventTypes> implements ProtocolProxyA
|
|
|
122
123
|
const settings = this.target().targetManager().settings;
|
|
123
124
|
this.#debuggerModel = target.model(DebuggerModel);
|
|
124
125
|
if (this.#debuggerModel) {
|
|
125
|
-
settings.
|
|
126
|
+
settings.resolve(disablePausedStateOverlaySettingDescriptor)
|
|
126
127
|
.addChangeListener(this.updatePausedInDebuggerMessage, this);
|
|
127
128
|
this.#debuggerModel.addEventListener(
|
|
128
129
|
DebuggerModelEvents.DebuggerPaused, this.updatePausedInDebuggerMessage, this);
|
|
@@ -313,7 +314,7 @@ export class OverlayModel extends SDKModel<EventTypes> implements ProtocolProxyA
|
|
|
313
314
|
}
|
|
314
315
|
const settings = this.target().targetManager().settings;
|
|
315
316
|
const message = this.#debuggerModel && this.#debuggerModel.isPaused() &&
|
|
316
|
-
!settings.
|
|
317
|
+
!settings.resolve(disablePausedStateOverlaySettingDescriptor).get() ?
|
|
317
318
|
i18nString(UIStrings.pausedInDebugger) :
|
|
318
319
|
undefined;
|
|
319
320
|
void this.overlayAgent.invoke_setPausedInDebuggerMessage({message});
|
|
@@ -312,3 +312,22 @@ export const consoleUserActivationEvalSettingDescriptor: Common.Settings.Setting
|
|
|
312
312
|
defaultValue: true,
|
|
313
313
|
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
314
314
|
};
|
|
315
|
+
export const monitoringXHREnabledSettingDescriptor: Common.Settings.SettingDescriptor<boolean> = {
|
|
316
|
+
name: 'monitoring-xhr-enabled',
|
|
317
|
+
type: Common.Settings.SettingType.BOOLEAN,
|
|
318
|
+
defaultValue: false,
|
|
319
|
+
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
export const disablePausedStateOverlaySettingDescriptor: Common.Settings.SettingDescriptor<boolean> = {
|
|
323
|
+
name: 'disable-paused-state-overlay',
|
|
324
|
+
type: Common.Settings.SettingType.BOOLEAN,
|
|
325
|
+
defaultValue: false,
|
|
326
|
+
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
327
|
+
};
|
|
328
|
+
|
|
329
|
+
export const preserveNetworkLogSettingDescriptor: Common.Settings.SettingDescriptor<boolean> = {
|
|
330
|
+
name: 'network-log.preserve-log',
|
|
331
|
+
type: Common.Settings.SettingType.BOOLEAN,
|
|
332
|
+
defaultValue: false,
|
|
333
|
+
};
|
|
@@ -8,14 +8,62 @@ import * as i18n from '../../core/i18n/i18n.js';
|
|
|
8
8
|
import type * as Platform from '../../core/platform/platform.js';
|
|
9
9
|
import * as Root from '../../core/root/root.js';
|
|
10
10
|
import * as SDK from '../../core/sdk/sdk.js';
|
|
11
|
+
import * as Badges from '../../models/badges/badges.js';
|
|
12
|
+
import * as Persistence from '../../models/persistence/persistence.js';
|
|
11
13
|
import * as Workspace from '../../models/workspace/workspace.js';
|
|
12
14
|
import * as Components from '../../ui/legacy/components/utils/utils.js';
|
|
13
15
|
import * as UI from '../../ui/legacy/legacy.js';
|
|
16
|
+
import * as SettingsUI from '../../ui/settings/settings.js';
|
|
14
17
|
import type * as InspectorMain from '../inspector_main/inspector_main.js';
|
|
15
18
|
|
|
16
19
|
import type * as Main from './main.js';
|
|
17
20
|
|
|
18
21
|
const UIStrings = {
|
|
22
|
+
/**
|
|
23
|
+
* @description Title of a setting under the Persistence category in Settings.
|
|
24
|
+
*/
|
|
25
|
+
localOverrides: 'Local overrides',
|
|
26
|
+
/**
|
|
27
|
+
* @description A tag of enable local overrides setting that can be searched in the command menu.
|
|
28
|
+
*/
|
|
29
|
+
interception: 'interception',
|
|
30
|
+
/**
|
|
31
|
+
* @description A tag of enable local overrides setting that can be searched in the command menu.
|
|
32
|
+
*/
|
|
33
|
+
override: 'override',
|
|
34
|
+
/**
|
|
35
|
+
* @description A tag of group network by frame setting that can be searched in the command menu.
|
|
36
|
+
*/
|
|
37
|
+
network: 'network',
|
|
38
|
+
/**
|
|
39
|
+
* @description A tag of enable local overrides setting that can be searched in the command menu.
|
|
40
|
+
*/
|
|
41
|
+
rewrite: 'rewrite',
|
|
42
|
+
/**
|
|
43
|
+
* @description A tag of enable local overrides setting that can be searched in the command menu.
|
|
44
|
+
* Noun for network request.
|
|
45
|
+
*/
|
|
46
|
+
request: 'request',
|
|
47
|
+
/**
|
|
48
|
+
* @description Title of an option under the Persistence category that can be invoked through the command menu.
|
|
49
|
+
*/
|
|
50
|
+
enableOverrideNetworkRequests: 'Enable override network requests',
|
|
51
|
+
/**
|
|
52
|
+
* @description Title of an option under the Persistence category that can be invoked through the command menu.
|
|
53
|
+
*/
|
|
54
|
+
disableOverrideNetworkRequests: 'Disable override network requests',
|
|
55
|
+
/**
|
|
56
|
+
* @description Label for a checkbox in the settings UI. Allows developers to opt-in/opt-out
|
|
57
|
+
* of receiving Google Developer Program (GDP) badges based on their activity in Chrome DevTools.
|
|
58
|
+
*/
|
|
59
|
+
earnBadges: 'Earn badges',
|
|
60
|
+
/**
|
|
61
|
+
* @description Title of a setting under the Appearance category in Settings. When the webpage is
|
|
62
|
+
* paused by devtools, an overlay is shown on top of the page to indicate that it is paused. The
|
|
63
|
+
* overlay is a pause/unpause button and some text, which appears on top of the paused page. This
|
|
64
|
+
* setting turns off this overlay.
|
|
65
|
+
*/
|
|
66
|
+
disablePaused: 'Disable paused state overlay',
|
|
19
67
|
/**
|
|
20
68
|
* @description Action title to focus the page being debugged.
|
|
21
69
|
*/
|
|
@@ -719,6 +767,11 @@ Common.Settings.registerSettingExtension({
|
|
|
719
767
|
defaultValue: false,
|
|
720
768
|
});
|
|
721
769
|
|
|
770
|
+
SettingsUI.SettingUIRegistration.register(SDK.SDKSettings.disablePausedStateOverlaySettingDescriptor, {
|
|
771
|
+
category: Common.Settings.SettingCategory.APPEARANCE,
|
|
772
|
+
title: i18nLazyString(UIStrings.disablePaused),
|
|
773
|
+
});
|
|
774
|
+
|
|
722
775
|
Common.Settings.registerSettingExtension({
|
|
723
776
|
category: Common.Settings.SettingCategory.GLOBAL,
|
|
724
777
|
settingName: 'currentDockState',
|
|
@@ -790,6 +843,35 @@ Common.Settings.registerSettingExtension({
|
|
|
790
843
|
reloadRequired: true,
|
|
791
844
|
});
|
|
792
845
|
|
|
846
|
+
SettingsUI.SettingUIRegistration.register(Badges.receiveGdpBadgesSettingDescriptor, {
|
|
847
|
+
category: Common.Settings.SettingCategory.ACCOUNT,
|
|
848
|
+
title: i18nLazyString(UIStrings.earnBadges),
|
|
849
|
+
reloadRequired: true,
|
|
850
|
+
});
|
|
851
|
+
|
|
852
|
+
SettingsUI.SettingUIRegistration.register(
|
|
853
|
+
Persistence.NetworkPersistenceManager.persistenceNetworkOverridesEnabledSettingDescriptor, {
|
|
854
|
+
category: Common.Settings.SettingCategory.PERSISTENCE,
|
|
855
|
+
title: i18nLazyString(UIStrings.localOverrides),
|
|
856
|
+
tags: [
|
|
857
|
+
i18nLazyString(UIStrings.interception),
|
|
858
|
+
i18nLazyString(UIStrings.override),
|
|
859
|
+
i18nLazyString(UIStrings.network),
|
|
860
|
+
i18nLazyString(UIStrings.rewrite),
|
|
861
|
+
i18nLazyString(UIStrings.request),
|
|
862
|
+
],
|
|
863
|
+
options: [
|
|
864
|
+
{
|
|
865
|
+
value: true,
|
|
866
|
+
title: i18nLazyString(UIStrings.enableOverrideNetworkRequests),
|
|
867
|
+
},
|
|
868
|
+
{
|
|
869
|
+
value: false,
|
|
870
|
+
title: i18nLazyString(UIStrings.disableOverrideNetworkRequests),
|
|
871
|
+
},
|
|
872
|
+
],
|
|
873
|
+
});
|
|
874
|
+
|
|
793
875
|
Common.Settings.registerSettingExtension({
|
|
794
876
|
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
795
877
|
settingName: 'user-shortcuts',
|
|
@@ -16,13 +16,10 @@ import '../../panels/changes/changes-meta.js';
|
|
|
16
16
|
import '../../panels/linear_memory_inspector/linear_memory_inspector-meta.js';
|
|
17
17
|
import '../../panels/settings/settings-meta.js';
|
|
18
18
|
import '../../panels/protocol_monitor/protocol_monitor-meta.js';
|
|
19
|
-
import '../../models/persistence/persistence-meta.js';
|
|
20
19
|
import '../../models/logs/logs-meta.js';
|
|
21
|
-
import '../../models/badges/badges-meta.js';
|
|
22
20
|
import '../main/main-meta.js';
|
|
23
21
|
import '../../ui/legacy/components/perf_ui/perf_ui-meta.js';
|
|
24
22
|
import '../../ui/legacy/components/quick_open/quick_open-meta.js';
|
|
25
|
-
import '../../core/sdk/sdk-meta.js';
|
|
26
23
|
import '../../models/workspace/workspace-meta.js';
|
|
27
24
|
import '../../ui/legacy/components/source_frame/source_frame-meta.js';
|
|
28
25
|
import '../../panels/console_counters/console_counters-meta.js';
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
// found in the LICENSE file.
|
|
5
5
|
import '../main/main-meta.js';
|
|
6
6
|
import '../inspector_main/inspector_main-meta.js';
|
|
7
|
-
import '../../core/sdk/sdk-meta.js';
|
|
8
7
|
import '../../models/workspace/workspace-meta.js';
|
|
9
8
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
9
|
// @ts-ignore: tsc 6.0 does not support side-effect imports without a type definition.
|
|
@@ -12,8 +11,6 @@ import '../../models/workspace/workspace-meta.js';
|
|
|
12
11
|
// when bundling the application (which doesn't error) and only errors in unbundled builds.
|
|
13
12
|
import '../../Images/Images.js';
|
|
14
13
|
import '../../models/logs/logs-meta.js';
|
|
15
|
-
import '../../models/persistence/persistence-meta.js';
|
|
16
|
-
import '../../models/badges/badges-meta.js';
|
|
17
14
|
import '../../panels/browser_debugger/browser_debugger-meta.js';
|
|
18
15
|
import '../../panels/developer_resources/developer_resources-meta.js';
|
|
19
16
|
// panels/timeline depends on mobile_throttling for settings UI
|
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
* @file Local debugging utilities.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import * as Platform from '../../core/platform/platform.js';
|
|
10
|
+
|
|
9
11
|
export function isDebugMode(): boolean {
|
|
10
|
-
return Boolean(
|
|
12
|
+
return Boolean(Platform.HostRuntime.HOST_RUNTIME.getLocalStorage()?.getItem('debugAiCodeCompletionEnabled'));
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
export function debugLog(...log: unknown[]): void {
|
|
@@ -20,10 +22,11 @@ export function debugLog(...log: unknown[]): void {
|
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
function setDebugAiCodeCompletionEnabled(enabled: boolean): void {
|
|
25
|
+
const localStorage = Platform.HostRuntime.HOST_RUNTIME.getLocalStorage();
|
|
23
26
|
if (enabled) {
|
|
24
|
-
localStorage
|
|
27
|
+
localStorage?.setItem('debugAiCodeCompletionEnabled', 'true');
|
|
25
28
|
} else {
|
|
26
|
-
localStorage
|
|
29
|
+
localStorage?.removeItem('debugAiCodeCompletionEnabled');
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
// @ts-expect-error
|
|
@@ -6,8 +6,10 @@
|
|
|
6
6
|
* @file Local debugging utilities.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import * as Platform from '../../core/platform/platform.js';
|
|
10
|
+
|
|
9
11
|
export function isDebugMode(): boolean {
|
|
10
|
-
return Boolean(
|
|
12
|
+
return Boolean(Platform.HostRuntime.HOST_RUNTIME.getLocalStorage()?.getItem('debugAiCodeGenerationEnabled'));
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
export function debugLog(...log: unknown[]): void {
|
|
@@ -20,10 +22,11 @@ export function debugLog(...log: unknown[]): void {
|
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
function setDebugAiCodeGenerationEnabled(enabled: boolean): void {
|
|
25
|
+
const localStorage = Platform.HostRuntime.HOST_RUNTIME.getLocalStorage();
|
|
23
26
|
if (enabled) {
|
|
24
|
-
localStorage
|
|
27
|
+
localStorage?.setItem('debugAiCodeGenerationEnabled', 'true');
|
|
25
28
|
} else {
|
|
26
|
-
localStorage
|
|
29
|
+
localStorage?.removeItem('debugAiCodeGenerationEnabled');
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
32
|
// @ts-expect-error
|
|
@@ -13,6 +13,13 @@ import {DOMDetectiveBadge} from './DOMDetectiveBadge.js';
|
|
|
13
13
|
import {SpeedsterBadge} from './SpeedsterBadge.js';
|
|
14
14
|
import {StarterBadge} from './StarterBadge.js';
|
|
15
15
|
|
|
16
|
+
export const receiveGdpBadgesSettingDescriptor: Common.Settings.SettingDescriptor<boolean> = {
|
|
17
|
+
name: 'receive-gdp-badges',
|
|
18
|
+
type: Common.Settings.SettingType.BOOLEAN,
|
|
19
|
+
defaultValue: false,
|
|
20
|
+
storageType: Common.Settings.SettingStorageType.SYNCED,
|
|
21
|
+
};
|
|
22
|
+
|
|
16
23
|
type BadgeClass = new (badgeContext: BadgeContext) => Badge;
|
|
17
24
|
|
|
18
25
|
export const enum BadgeTriggerReason {
|
|
@@ -36,7 +43,7 @@ const DELAY_BEFORE_TRIGGER = 1500;
|
|
|
36
43
|
export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
37
44
|
readonly #badgeActionEventTarget = new Common.ObjectWrapper.ObjectWrapper<BadgeActionEvents>();
|
|
38
45
|
|
|
39
|
-
#receiveBadgesSetting: Common.Settings.Setting<
|
|
46
|
+
#receiveBadgesSetting: Common.Settings.Setting<boolean>;
|
|
40
47
|
#allBadges: Badge[];
|
|
41
48
|
|
|
42
49
|
#starterBadgeSnoozeCount: Common.Settings.Setting<number>;
|
|
@@ -66,7 +73,7 @@ export class UserBadges extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
|
66
73
|
this.#gdpClient = gdpClient;
|
|
67
74
|
this.#inspectorFrontendHost = inspectorFrontendHost;
|
|
68
75
|
|
|
69
|
-
this.#receiveBadgesSetting = this.#settings.
|
|
76
|
+
this.#receiveBadgesSetting = this.#settings.resolve(receiveGdpBadgesSettingDescriptor);
|
|
70
77
|
if (!Host.GdpClient.isBadgesEnabled()) {
|
|
71
78
|
this.#receiveBadgesSetting.set(false);
|
|
72
79
|
}
|
|
@@ -317,7 +317,7 @@ export class DeviceModeModel extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
317
317
|
#updateFitScale(): void {
|
|
318
318
|
if (this.#type === Type.Device && this.#device && this.#mode) {
|
|
319
319
|
const orientation = this.#device.orientationByName(this.#mode.orientation);
|
|
320
|
-
this.#scaleSetting.set(this.calculateFitScale(orientation.width, orientation.height
|
|
320
|
+
this.#scaleSetting.set(this.calculateFitScale(orientation.width, orientation.height));
|
|
321
321
|
}
|
|
322
322
|
}
|
|
323
323
|
|
|
@@ -595,13 +595,6 @@ export class DeviceModeModel extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
595
595
|
return Math.floor(this.#preferredSize.height / (this.#scaleSetting.get() || 1));
|
|
596
596
|
}
|
|
597
597
|
|
|
598
|
-
private currentInsets(): Insets {
|
|
599
|
-
if (this.#type !== Type.Device || !this.#mode) {
|
|
600
|
-
return new Insets(0, 0, 0, 0);
|
|
601
|
-
}
|
|
602
|
-
return this.#mode.insets;
|
|
603
|
-
}
|
|
604
|
-
|
|
605
598
|
private currentSafeAreaInsets(): Insets|null {
|
|
606
599
|
if (!Root.Runtime.hostConfig.devToolsMobileSafeAreaEmulation?.enabled) {
|
|
607
600
|
return null;
|
|
@@ -650,22 +643,21 @@ export class DeviceModeModel extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
650
643
|
}
|
|
651
644
|
if (this.#type === Type.Device && this.#device && this.#mode) {
|
|
652
645
|
const orientation = this.#device.orientationByName(this.#mode.orientation);
|
|
653
|
-
|
|
654
|
-
this.#fitScale = this.calculateFitScale(orientation.width, orientation.height, insets);
|
|
646
|
+
this.#fitScale = this.calculateFitScale(orientation.width, orientation.height);
|
|
655
647
|
if (mobile) {
|
|
656
648
|
this.#appliedUserAgentType = this.#device.touch() ? UA.MOBILE : UA.MOBILE_NO_TOUCH;
|
|
657
649
|
} else {
|
|
658
650
|
this.#appliedUserAgentType = this.#device.touch() ? UA.DESKTOP_TOUCH : UA.DESKTOP;
|
|
659
651
|
}
|
|
660
|
-
this.applyDeviceMetrics(new Geometry.Size(orientation.width, orientation.height),
|
|
661
|
-
this.#
|
|
662
|
-
|
|
652
|
+
this.applyDeviceMetrics(new Geometry.Size(orientation.width, orientation.height), this.#scaleSetting.get(),
|
|
653
|
+
this.#device.deviceScaleFactor, mobile, this.getScreenOrientationType(),
|
|
654
|
+
resetPageScaleFactor);
|
|
663
655
|
this.applyUserAgent(this.#device.userAgent, this.#device.userAgentMetadata);
|
|
664
656
|
this.applyTouch(this.#device.touch(), mobile);
|
|
665
657
|
} else if (this.#type === Type.None) {
|
|
666
658
|
this.#fitScale = this.calculateFitScale(this.#availableSize.width, this.#availableSize.height);
|
|
667
659
|
this.#appliedUserAgentType = UA.DESKTOP;
|
|
668
|
-
this.applyDeviceMetrics(this.#availableSize,
|
|
660
|
+
this.applyDeviceMetrics(this.#availableSize, 1, 0, mobile, null, resetPageScaleFactor);
|
|
669
661
|
this.applyUserAgent('', null);
|
|
670
662
|
this.applyTouch(false, false);
|
|
671
663
|
} else if (this.#type === Type.Responsive) {
|
|
@@ -680,8 +672,7 @@ export class DeviceModeModel extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
680
672
|
const defaultDeviceScaleFactor = mobile ? defaultMobileScaleFactor : 0;
|
|
681
673
|
this.#fitScale = this.calculateFitScale(this.#widthSetting.get(), this.#heightSetting.get());
|
|
682
674
|
this.#appliedUserAgentType = this.#uaSetting.get();
|
|
683
|
-
this.applyDeviceMetrics(new Geometry.Size(screenWidth, screenHeight),
|
|
684
|
-
this.#scaleSetting.get(),
|
|
675
|
+
this.applyDeviceMetrics(new Geometry.Size(screenWidth, screenHeight), this.#scaleSetting.get(),
|
|
685
676
|
this.#deviceScaleFactorSetting.get() || defaultDeviceScaleFactor, mobile,
|
|
686
677
|
screenHeight >= screenWidth ? Protocol.Emulation.ScreenOrientationType.PortraitPrimary :
|
|
687
678
|
Protocol.Emulation.ScreenOrientationType.LandscapePrimary,
|
|
@@ -701,9 +692,7 @@ export class DeviceModeModel extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
701
692
|
this.dispatchEventToListeners(Events.UPDATED);
|
|
702
693
|
}
|
|
703
694
|
|
|
704
|
-
private calculateFitScale(screenWidth: number, screenHeight: number
|
|
705
|
-
const insetsWidth = insets ? insets.left + insets.right : 0;
|
|
706
|
-
const insetsHeight = insets ? insets.top + insets.bottom : 0;
|
|
695
|
+
private calculateFitScale(screenWidth: number, screenHeight: number): number {
|
|
707
696
|
let scale = Math.min(screenWidth ? this.#preferredSize.width / screenWidth : 1,
|
|
708
697
|
screenHeight ? this.#preferredSize.height / screenHeight : 1);
|
|
709
698
|
scale = Math.min(Math.floor(scale * 100), 100);
|
|
@@ -712,10 +701,10 @@ export class DeviceModeModel extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
712
701
|
while (sharpScale > scale * 0.7) {
|
|
713
702
|
let sharp = true;
|
|
714
703
|
if (screenWidth) {
|
|
715
|
-
sharp = sharp && Number.isInteger(
|
|
704
|
+
sharp = sharp && Number.isInteger(screenWidth * sharpScale / 100);
|
|
716
705
|
}
|
|
717
706
|
if (screenHeight) {
|
|
718
|
-
sharp = sharp && Number.isInteger(
|
|
707
|
+
sharp = sharp && Number.isInteger(screenHeight * sharpScale / 100);
|
|
719
708
|
}
|
|
720
709
|
if (sharp) {
|
|
721
710
|
return sharpScale / 100;
|
|
@@ -738,17 +727,17 @@ export class DeviceModeModel extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
|
738
727
|
this.#multitargetNetworkManager.setUserAgentOverride(userAgent, userAgent ? userAgentMetadata : null);
|
|
739
728
|
}
|
|
740
729
|
|
|
741
|
-
private applyDeviceMetrics(screenSize: Geometry.Size,
|
|
742
|
-
|
|
730
|
+
private applyDeviceMetrics(screenSize: Geometry.Size, scale: number, deviceScaleFactor: number, mobile: boolean,
|
|
731
|
+
screenOrientation: Protocol.Emulation.ScreenOrientationType|null,
|
|
743
732
|
resetPageScaleFactor: boolean): void {
|
|
744
733
|
screenSize.width = Math.max(1, Math.floor(screenSize.width));
|
|
745
734
|
screenSize.height = Math.max(1, Math.floor(screenSize.height));
|
|
746
735
|
|
|
747
|
-
let pageWidth: 0|number = screenSize.width
|
|
748
|
-
let pageHeight: 0|number = screenSize.height
|
|
736
|
+
let pageWidth: 0|number = screenSize.width;
|
|
737
|
+
let pageHeight: 0|number = screenSize.height;
|
|
749
738
|
|
|
750
|
-
const positionX =
|
|
751
|
-
const positionY =
|
|
739
|
+
const positionX = 0;
|
|
740
|
+
const positionY = 0;
|
|
752
741
|
const screenOrientationAngle =
|
|
753
742
|
screenOrientation === Protocol.Emulation.ScreenOrientationType.LandscapePrimary ? 90 : 0;
|
|
754
743
|
|