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.
Files changed (86) hide show
  1. package/front_end/core/sdk/DOMModel.ts +8 -0
  2. package/front_end/core/sdk/NetworkManager.ts +9 -4
  3. package/front_end/core/sdk/OverlayModel.ts +3 -2
  4. package/front_end/core/sdk/SDKSettings.ts +19 -0
  5. package/front_end/entrypoints/main/main-meta.ts +82 -0
  6. package/front_end/entrypoints/shell/shell.ts +0 -3
  7. package/front_end/entrypoints/trace_app/trace_app.ts +0 -3
  8. package/front_end/models/ai_code_completion/debug.ts +6 -3
  9. package/front_end/models/ai_code_generation/debug.ts +6 -3
  10. package/front_end/models/badges/UserBadges.ts +9 -2
  11. package/front_end/models/emulation/DeviceModeModel.ts +16 -27
  12. package/front_end/models/emulation/EmulatedDevices.ts +30 -125
  13. package/front_end/models/extensions/ExtensionAPI.ts +34 -23
  14. package/front_end/models/logs/NetworkLog.ts +3 -3
  15. package/front_end/models/logs/logs-meta.ts +0 -60
  16. package/front_end/models/persistence/NetworkPersistenceManager.ts +7 -1
  17. package/front_end/panels/application/ServiceWorkersView.ts +1 -1
  18. package/front_end/panels/application/StorageView.ts +2 -0
  19. package/front_end/panels/common/BadgeNotification.ts +1 -1
  20. package/front_end/panels/common/ExtensionPanel.ts +12 -7
  21. package/front_end/panels/common/ExtensionServer.ts +76 -16
  22. package/front_end/panels/common/GdpSignUpDialog.ts +1 -1
  23. package/front_end/panels/console/ConsoleView.ts +2 -1
  24. package/front_end/panels/console/ConsoleViewMessage.ts +3 -2
  25. package/front_end/panels/console/console-meta.ts +9 -0
  26. package/front_end/panels/elements/CSSRuleValidator.ts +12 -12
  27. package/front_end/panels/elements/CSSSpecificityBreakdown.ts +1 -1
  28. package/front_end/panels/elements/ClassesPaneWidget.ts +6 -6
  29. package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +1 -1
  30. package/front_end/panels/elements/ComputedStyleWidget.ts +4 -5
  31. package/front_end/panels/elements/DOMTreeContextMenu.ts +3 -6
  32. package/front_end/panels/elements/ElementIssueUtils.ts +20 -20
  33. package/front_end/panels/elements/ElementStatePaneWidget.ts +6 -6
  34. package/front_end/panels/elements/ElementsPanel.ts +10 -10
  35. package/front_end/panels/elements/ElementsTreeElement.ts +28 -28
  36. package/front_end/panels/elements/ElementsTreeOutline.ts +5 -20
  37. package/front_end/panels/elements/EventListenersWidget.ts +8 -8
  38. package/front_end/panels/elements/LayersWidget.ts +4 -4
  39. package/front_end/panels/elements/LayoutPane.ts +11 -11
  40. package/front_end/panels/elements/MarkerDecorator.ts +3 -3
  41. package/front_end/panels/elements/PlatformFontsWidget.ts +8 -8
  42. package/front_end/panels/elements/PropertiesWidget.ts +4 -4
  43. package/front_end/panels/elements/PropertyRenderer.ts +2 -2
  44. package/front_end/panels/elements/ShortcutTreeElement.ts +1 -1
  45. package/front_end/panels/elements/StylePropertiesSection.ts +14 -14
  46. package/front_end/panels/elements/StylePropertyTreeElement.ts +21 -21
  47. package/front_end/panels/elements/StylesSidebarPane.ts +12 -13
  48. package/front_end/panels/elements/components/AccessibilityTreeNode.ts +1 -1
  49. package/front_end/panels/elements/components/CSSHintDetailsView.ts +1 -1
  50. package/front_end/panels/elements/components/CSSVariableValueView.ts +3 -3
  51. package/front_end/panels/elements/components/ElementsBreadcrumbsUtils.ts +2 -2
  52. package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
  53. package/front_end/panels/elements/elements-meta.ts +13 -13
  54. package/front_end/panels/issues/AffectedCookiesView.ts +2 -0
  55. package/front_end/panels/issues/AffectedElementsView.ts +5 -0
  56. package/front_end/panels/issues/IssueView.ts +7 -2
  57. package/front_end/panels/layer_viewer/LayerDetailsView.ts +11 -7
  58. package/front_end/panels/layer_viewer/LayerTreeOutline.ts +2 -0
  59. package/front_end/panels/network/NetworkLogView.ts +5 -2
  60. package/front_end/panels/network/NetworkOverview.ts +11 -5
  61. package/front_end/panels/network/NetworkPanel.ts +2 -1
  62. package/front_end/panels/network/NetworkWaterfallColumn.ts +16 -3
  63. package/front_end/panels/network/RequestHeadersView.ts +4 -4
  64. package/front_end/panels/network/components/ResponseHeaderSection.ts +6 -2
  65. package/front_end/panels/network/network-meta.ts +57 -0
  66. package/front_end/panels/settings/components/SyncSection.ts +1 -1
  67. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +0 -3
  68. package/front_end/panels/sources/NavigatorView.ts +6 -2
  69. package/front_end/panels/sources/SourcesNavigator.ts +8 -4
  70. package/front_end/panels/sources/SourcesPanel.ts +4 -2
  71. package/front_end/panels/sources/SourcesSearchScope.ts +3 -1
  72. package/front_end/panels/sources/UISourceCodeFrame.ts +2 -2
  73. package/front_end/panels/web_audio/WebAudioView.ts +8 -0
  74. package/front_end/third_party/chromium/README.chromium +1 -1
  75. package/front_end/third_party/web-vitals/rebuild.sh +1 -1
  76. package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +11 -11
  77. package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +1 -1
  78. package/front_end/ui/legacy/components/color_picker/Spectrum.ts +19 -20
  79. package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +2 -2
  80. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +164 -325
  81. package/front_end/ui/visual_logging/KnownContextValues.ts +11 -0
  82. package/mcp/mcp.ts +0 -3
  83. package/package.json +1 -1
  84. package/front_end/core/sdk/sdk-meta.ts +0 -40
  85. package/front_end/models/badges/badges-meta.ts +0 -27
  86. 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 {cacheDisabledSettingDescriptor, requestBlockingEnabledSettingDescriptor} from './SDKSettings.js';
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.moduleSetting('network-log.preserve-log');
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.moduleSetting('network-log.preserve-log').removeChangeListener(this.preserveLogChanged, this);
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.moduleSetting('monitoring-xhr-enabled').get() &&
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.moduleSetting('disable-paused-state-overlay')
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.moduleSetting('disable-paused-state-overlay').get() ?
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(localStorage.getItem('debugAiCodeCompletionEnabled'));
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.setItem('debugAiCodeCompletionEnabled', 'true');
27
+ localStorage?.setItem('debugAiCodeCompletionEnabled', 'true');
25
28
  } else {
26
- localStorage.removeItem('debugAiCodeCompletionEnabled');
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(localStorage.getItem('debugAiCodeGenerationEnabled'));
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.setItem('debugAiCodeGenerationEnabled', 'true');
27
+ localStorage?.setItem('debugAiCodeGenerationEnabled', 'true');
25
28
  } else {
26
- localStorage.removeItem('debugAiCodeGenerationEnabled');
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<Boolean>;
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.moduleSetting('receive-gdp-badges');
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, this.currentInsets()));
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
- const insets = this.currentInsets();
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), insets,
661
- this.#scaleSetting.get(), this.#device.deviceScaleFactor, mobile,
662
- this.getScreenOrientationType(), resetPageScaleFactor);
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, new Insets(0, 0, 0, 0), 1, 0, mobile, null, resetPageScaleFactor);
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), new Insets(0, 0, 0, 0),
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, insets?: Insets): 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((screenWidth - insetsWidth) * sharpScale / 100);
704
+ sharp = sharp && Number.isInteger(screenWidth * sharpScale / 100);
716
705
  }
717
706
  if (screenHeight) {
718
- sharp = sharp && Number.isInteger((screenHeight - insetsHeight) * sharpScale / 100);
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, insets: Insets, scale: number, deviceScaleFactor: number,
742
- mobile: boolean, screenOrientation: Protocol.Emulation.ScreenOrientationType|null,
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 - insets.left - insets.right;
748
- let pageHeight: 0|number = screenSize.height - insets.top - insets.bottom;
736
+ let pageWidth: 0|number = screenSize.width;
737
+ let pageHeight: 0|number = screenSize.height;
749
738
 
750
- const positionX = insets.left;
751
- const positionY = insets.top;
739
+ const positionX = 0;
740
+ const positionY = 0;
752
741
  const screenOrientationAngle =
753
742
  screenOrientation === Protocol.Emulation.ScreenOrientationType.LandscapePrimary ? 90 : 0;
754
743