chrome-devtools-frontend 1.0.1033423 → 1.0.1034802

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 (29) hide show
  1. package/config/gni/devtools_grd_files.gni +5 -0
  2. package/front_end/core/host/InspectorFrontendHostAPI.ts +1 -0
  3. package/front_end/core/host/UserMetrics.ts +23 -0
  4. package/front_end/core/root/Runtime.ts +11 -1
  5. package/front_end/core/sdk/NetworkManager.ts +19 -5
  6. package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +19 -8
  7. package/front_end/entrypoints/main/MainImpl.ts +5 -1
  8. package/front_end/models/issues_manager/AttributionReportingIssue.ts +30 -4
  9. package/front_end/models/issues_manager/CookieIssue.ts +14 -0
  10. package/front_end/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md +9 -0
  11. package/front_end/models/issues_manager/descriptions/arSourceIgnored.md +13 -0
  12. package/front_end/models/issues_manager/descriptions/arTriggerIgnored.md +12 -0
  13. package/front_end/models/issues_manager/descriptions/cookieExcludeDomainNonAscii.md +11 -0
  14. package/front_end/models/issues_manager/descriptions/cookieWarnDomainNonAscii.md +11 -0
  15. package/front_end/models/persistence/NetworkPersistenceManager.ts +6 -2
  16. package/front_end/panels/console/ConsolePinPane.ts +2 -2
  17. package/front_end/panels/elements/CSSRuleValidator.ts +169 -101
  18. package/front_end/panels/elements/CSSRuleValidatorHelper.ts +13 -7
  19. package/front_end/panels/elements/StylePropertiesSection.ts +8 -0
  20. package/front_end/panels/elements/StylePropertyTreeElement.ts +35 -31
  21. package/front_end/panels/elements/StylesSidebarPane.ts +24 -0
  22. package/front_end/panels/elements/components/CSSHintDetailsView.ts +5 -5
  23. package/front_end/panels/elements/components/LayoutPane.ts +1 -1
  24. package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +10 -0
  25. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +9 -6
  26. package/front_end/ui/components/linear_memory_inspector/LinearMemoryInspectorController.ts +17 -1
  27. package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +1 -0
  28. package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +2 -2
  29. package/package.json +1 -1
@@ -286,9 +286,14 @@ grd_files_release_sources = [
286
286
  "front_end/models/issues_manager/descriptions/arInvalidRegisterSourceHeader.md",
287
287
  "front_end/models/issues_manager/descriptions/arInvalidRegisterTriggerHeader.md",
288
288
  "front_end/models/issues_manager/descriptions/arPermissionPolicyDisabled.md",
289
+ "front_end/models/issues_manager/descriptions/arSourceAndTriggerHeaders.md",
290
+ "front_end/models/issues_manager/descriptions/arSourceIgnored.md",
291
+ "front_end/models/issues_manager/descriptions/arTriggerIgnored.md",
289
292
  "front_end/models/issues_manager/descriptions/arUntrustworthyReportingOrigin.md",
290
293
  "front_end/models/issues_manager/descriptions/clientHintMetaTagAllowListInvalidOrigin.md",
291
294
  "front_end/models/issues_manager/descriptions/clientHintMetaTagModifiedHTML.md",
295
+ "front_end/models/issues_manager/descriptions/cookieExcludeDomainNonAscii.md",
296
+ "front_end/models/issues_manager/descriptions/cookieWarnDomainNonAscii.md",
292
297
  "front_end/models/issues_manager/descriptions/corsAllowCredentialsRequired.md",
293
298
  "front_end/models/issues_manager/descriptions/corsDisabledScheme.md",
294
299
  "front_end/models/issues_manager/descriptions/corsDisallowedByMode.md",
@@ -377,4 +377,5 @@ export enum EnumeratedHistogram {
377
377
  RecordingToggled = 'DevTools.RecordingToggled',
378
378
  StyleTextCopied = 'DevTools.StyleTextCopied',
379
379
  ManifestSectionSelected = 'DevTools.ManifestSectionSelected',
380
+ CSSHintShown = 'DevTools.CSSHintShown',
380
381
  }
@@ -277,6 +277,11 @@ export class UserMetrics {
277
277
  InspectorFrontendHostInstance.recordEnumeratedHistogram(
278
278
  EnumeratedHistogram.ManifestSectionSelected, code, ManifestSectionCodes.MaxValue);
279
279
  }
280
+
281
+ cssHintShown(type: CSSHintType): void {
282
+ InspectorFrontendHostInstance.recordEnumeratedHistogram(
283
+ EnumeratedHistogram.CSSHintShown, type, CSSHintType.MaxValue);
284
+ }
280
285
  }
281
286
 
282
287
  /**
@@ -993,4 +998,22 @@ export enum ManifestSectionCodes {
993
998
  MaxValue = 5,
994
999
  }
995
1000
 
1001
+ // The names here match the CSSRuleValidator names in CSSRuleValidator.ts.
1002
+ // TODO(crbug.com/1167717): Make this a const enum again
1003
+ // eslint-disable-next-line rulesdir/const_enum
1004
+ export enum CSSHintType {
1005
+ Other = 0,
1006
+ AlignContent = 1,
1007
+ FlexItem = 2,
1008
+ FlexContainer = 3,
1009
+ GridContainer = 4,
1010
+ GridItem = 5,
1011
+ FlexGrid = 6,
1012
+ MulticolFlexGrid = 7,
1013
+ Padding = 8,
1014
+ Position = 9,
1015
+ ZIndex = 10,
1016
+ MaxValue = 11,
1017
+ }
1018
+
996
1019
  /* eslint-enable @typescript-eslint/naming-convention */
@@ -120,18 +120,21 @@ export class ExperimentsSupport {
120
120
  #enabledTransiently: Set<string>;
121
121
  readonly #enabledByDefault: Set<string>;
122
122
  readonly #serverEnabled: Set<string>;
123
+ // Experiments in this set won't be shown to the user
124
+ readonly #nonConfigurable: Set<string>;
123
125
  constructor() {
124
126
  this.#experiments = [];
125
127
  this.#experimentNames = new Set();
126
128
  this.#enabledTransiently = new Set();
127
129
  this.#enabledByDefault = new Set();
128
130
  this.#serverEnabled = new Set();
131
+ this.#nonConfigurable = new Set();
129
132
  }
130
133
 
131
134
  allConfigurableExperiments(): Experiment[] {
132
135
  const result = [];
133
136
  for (const experiment of this.#experiments) {
134
- if (!this.#enabledTransiently.has(experiment.name)) {
137
+ if (!this.#enabledTransiently.has(experiment.name) && !this.#nonConfigurable.has(experiment.name)) {
135
138
  result.push(experiment);
136
139
  }
137
140
  }
@@ -203,6 +206,13 @@ export class ExperimentsSupport {
203
206
  }
204
207
  }
205
208
 
209
+ setNonConfigurableExperiments(experimentNames: string[]): void {
210
+ for (const experiment of experimentNames) {
211
+ this.checkExperiment(experiment);
212
+ this.#nonConfigurable.add(experiment);
213
+ }
214
+ }
215
+
206
216
  enableForTest(experimentName: string): void {
207
217
  this.checkExperiment(experimentName);
208
218
  this.#enabledTransiently.add(experimentName);
@@ -465,10 +465,10 @@ export class NetworkDispatcher implements ProtocolProxyApi.NetworkDispatcher {
465
465
  networkRequest.setUrl(response.url as Platform.DevToolsPath.UrlString);
466
466
  }
467
467
  networkRequest.mimeType = (response.mimeType as MIME_TYPE);
468
- if (!networkRequest.statusCode) {
468
+ if (!networkRequest.statusCode || networkRequest.wasIntercepted()) {
469
469
  networkRequest.statusCode = response.status;
470
470
  }
471
- if (!networkRequest.statusText) {
471
+ if (!networkRequest.statusText || networkRequest.wasIntercepted()) {
472
472
  networkRequest.statusText = response.statusText;
473
473
  }
474
474
  if (!networkRequest.hasExtraResponseInfo() || networkRequest.wasIntercepted()) {
@@ -1170,6 +1170,10 @@ export class MultitargetNetworkManager extends Common.ObjectWrapper.ObjectWrappe
1170
1170
  return multiTargetNetworkManagerInstance;
1171
1171
  }
1172
1172
 
1173
+ static dispose(): void {
1174
+ multiTargetNetworkManagerInstance = null;
1175
+ }
1176
+
1173
1177
  static getChromeVersion(): string {
1174
1178
  const chromeRegex = /(?:^|\W)(?:Chrome|HeadlessChrome)\/(\S+)/;
1175
1179
  const chromeMatch = navigator.userAgent.match(chromeRegex);
@@ -1523,6 +1527,7 @@ export namespace MultitargetNetworkManager {
1523
1527
  InterceptorsChanged = 'InterceptorsChanged',
1524
1528
  AcceptedEncodingsChanged = 'AcceptedEncodingsChanged',
1525
1529
  RequestIntercepted = 'RequestIntercepted',
1530
+ RequestFulfilled = 'RequestFulfilled',
1526
1531
  }
1527
1532
 
1528
1533
  export type EventTypes = {
@@ -1532,6 +1537,7 @@ export namespace MultitargetNetworkManager {
1532
1537
  [Events.InterceptorsChanged]: void,
1533
1538
  [Events.AcceptedEncodingsChanged]: void,
1534
1539
  [Events.RequestIntercepted]: Platform.DevToolsPath.UrlString,
1540
+ [Events.RequestFulfilled]: Platform.DevToolsPath.UrlString,
1535
1541
  };
1536
1542
  }
1537
1543
 
@@ -1565,11 +1571,15 @@ export class InterceptedRequest {
1565
1571
  return this.#hasRespondedInternal;
1566
1572
  }
1567
1573
 
1568
- async continueRequestWithContent(contentBlob: Blob, encoded: boolean, responseHeaders: Protocol.Fetch.HeaderEntry[]):
1569
- Promise<void> {
1574
+ async continueRequestWithContent(
1575
+ contentBlob: Blob, encoded: boolean, responseHeaders: Protocol.Fetch.HeaderEntry[],
1576
+ isBodyOverridden: boolean): Promise<void> {
1570
1577
  this.#hasRespondedInternal = true;
1571
1578
  const body = encoded ? await contentBlob.text() : await blobToBase64(contentBlob);
1572
- void this.#fetchAgent.invoke_fulfillRequest({requestId: this.requestId, responseCode: 200, body, responseHeaders});
1579
+ const responseCode = isBodyOverridden ? 200 : (this.responseStatusCode || 200);
1580
+ void this.#fetchAgent.invoke_fulfillRequest({requestId: this.requestId, responseCode, body, responseHeaders});
1581
+ MultitargetNetworkManager.instance().dispatchEventToListeners(
1582
+ MultitargetNetworkManager.Events.RequestFulfilled, this.request.url as Platform.DevToolsPath.UrlString);
1573
1583
 
1574
1584
  async function blobToBase64(blob: Blob): Promise<string> {
1575
1585
  const reader = new FileReader();
@@ -1608,6 +1618,10 @@ export class InterceptedRequest {
1608
1618
  const error = response.getError() || null;
1609
1619
  return {error: error, content: error ? null : response.body, encoded: response.base64Encoded};
1610
1620
  }
1621
+
1622
+ isRedirect(): boolean {
1623
+ return this.responseStatusCode !== undefined && this.responseStatusCode >= 300 && this.responseStatusCode < 400;
1624
+ }
1611
1625
  }
1612
1626
 
1613
1627
  /**
@@ -125,7 +125,7 @@ async function invokeLH(action: string, args: any): Promise<unknown> {
125
125
  }
126
126
 
127
127
  // @ts-expect-error https://github.com/GoogleChrome/lighthouse/issues/11628
128
- const config = self.createConfig(args.categoryIDs, flags.emulatedFormFactor);
128
+ const config = args.config || self.createConfig(args.categoryIDs, flags.emulatedFormFactor);
129
129
  const url = args.url;
130
130
 
131
131
  // Handle legacy Lighthouse runner path.
@@ -222,25 +222,36 @@ async function fetchLocaleData(locales: string[]): Promise<string|void> {
222
222
  */
223
223
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
224
224
  function notifyFrontendViaWorkerMessage(action: string, args: any): void {
225
- self.postMessage(JSON.stringify({action, args}));
225
+ self.postMessage({action, args});
226
226
  }
227
227
 
228
228
  async function onFrontendMessage(event: MessageEvent): Promise<void> {
229
- const messageFromFrontend = JSON.parse(event.data);
229
+ const messageFromFrontend = event.data;
230
230
  switch (messageFromFrontend.action) {
231
231
  case 'startTimespan':
232
232
  case 'endTimespan':
233
233
  case 'snapshot':
234
234
  case 'navigation': {
235
235
  const result = await invokeLH(messageFromFrontend.action, messageFromFrontend.args);
236
- self.postMessage(JSON.stringify({id: messageFromFrontend.id, result}));
236
+ if (result && typeof result === 'object') {
237
+ // Report isn't used upstream.
238
+ if ('report' in result) {
239
+ // @ts-expect-error
240
+ delete result.report;
241
+ }
242
+
243
+ // Logger PerformanceTiming objects cannot be cloned by this worker's `postMessage` function.
244
+ if ('artifacts' in result) {
245
+ // @ts-expect-error
246
+ result.artifacts.Timing = JSON.parse(JSON.stringify(result.artifacts.Timing));
247
+ }
248
+ }
249
+ self.postMessage({id: messageFromFrontend.id, result});
237
250
  break;
238
251
  }
239
252
  case 'dispatchProtocolMessage': {
240
- cdpConnection?.onMessage?.(
241
- JSON.parse(messageFromFrontend.args.message),
242
- );
243
- legacyPort.onMessage?.(messageFromFrontend.args.message);
253
+ cdpConnection?.onMessage?.(messageFromFrontend.args.message);
254
+ legacyPort.onMessage?.(JSON.stringify(messageFromFrontend.args.message));
244
255
  break;
245
256
  }
246
257
  default: {
@@ -426,10 +426,14 @@ export class MainImpl {
426
426
  'reportingApiDebugging',
427
427
  Root.Runtime.ExperimentName.SYNC_SETTINGS,
428
428
  Root.Runtime.ExperimentName.CSS_LAYERS,
429
- Root.Runtime.ExperimentName.EYEDROPPER_COLOR_PICKER,
429
+ ...('EyeDropper' in window ? [Root.Runtime.ExperimentName.EYEDROPPER_COLOR_PICKER] : []),
430
430
  'lighthousePanelFR',
431
431
  ]);
432
432
 
433
+ Root.Runtime.experiments.setNonConfigurableExperiments([
434
+ ...(!('EyeDropper' in window) ? [Root.Runtime.ExperimentName.EYEDROPPER_COLOR_PICKER] : []),
435
+ ]);
436
+
433
437
  Root.Runtime.experiments.cleanUpStaleExperiments();
434
438
  const enabledExperiments = Root.Runtime.Runtime.queryParam('enabledExperiments');
435
439
  if (enabledExperiments) {
@@ -16,6 +16,9 @@ export const enum IssueCode {
16
16
  InvalidRegisterTriggerHeader = 'AttributionReportingIssue::InvalidRegisterTriggerHeader',
17
17
  InvalidEligibleHeader = 'AttributionReportingIssue::InvalidEligibleHeader',
18
18
  TooManyConcurrentRequests = 'AttributionReportingIssue::TooManyConcurrentRequests',
19
+ SourceAndTriggerHeaders = 'AttributionReportingIssue::SourceAndTriggerHeaders',
20
+ SourceIgnored = 'AttributionReportingIssue::SourceIgnored',
21
+ TriggerIgnored = 'AttributionReportingIssue::TriggerIgnored',
19
22
  // TODO(apaseltiner): Remove this once old issue types are removed from
20
23
  // protocol.
21
24
  Unknown = 'AttributionReportingIssue::Unknown',
@@ -37,11 +40,22 @@ function getIssueCode(details: Protocol.Audits.AttributionReportingIssueDetails)
37
40
  return IssueCode.InvalidEligibleHeader;
38
41
  case Protocol.Audits.AttributionReportingIssueType.TooManyConcurrentRequests:
39
42
  return IssueCode.TooManyConcurrentRequests;
43
+ case Protocol.Audits.AttributionReportingIssueType.SourceAndTriggerHeaders:
44
+ return IssueCode.SourceAndTriggerHeaders;
45
+ case Protocol.Audits.AttributionReportingIssueType.SourceIgnored:
46
+ return IssueCode.SourceIgnored;
47
+ case Protocol.Audits.AttributionReportingIssueType.TriggerIgnored:
48
+ return IssueCode.TriggerIgnored;
40
49
  default:
41
50
  return IssueCode.Unknown;
42
51
  }
43
52
  }
44
53
 
54
+ const structuredHeaderLink = {
55
+ link: 'https://tools.ietf.org/id/draft-ietf-httpbis-header-structure-15.html#rfc.section.4.2.2',
56
+ linkTitle: 'Structured Headers RFC',
57
+ };
58
+
45
59
  export class AttributionReportingIssue extends Issue<IssueCode> {
46
60
  issueDetails: Readonly<Protocol.Audits.AttributionReportingIssueDetails>;
47
61
 
@@ -85,16 +99,28 @@ export class AttributionReportingIssue extends Issue<IssueCode> {
85
99
  case IssueCode.InvalidEligibleHeader:
86
100
  return {
87
101
  file: 'arInvalidEligibleHeader.md',
88
- links: [{
89
- link: 'https://tools.ietf.org/id/draft-ietf-httpbis-header-structure-15.html#rfc.section.4.2.2',
90
- linkTitle: 'Structured Headers RFC',
91
- }],
102
+ links: [structuredHeaderLink],
92
103
  };
93
104
  case IssueCode.TooManyConcurrentRequests:
94
105
  return {
95
106
  file: 'arTooManyConcurrentRequests.md',
96
107
  links: [],
97
108
  };
109
+ case IssueCode.SourceAndTriggerHeaders:
110
+ return {
111
+ file: 'arSourceAndTriggerHeaders.md',
112
+ links: [],
113
+ };
114
+ case IssueCode.SourceIgnored:
115
+ return {
116
+ file: 'arSourceIgnored.md',
117
+ links: [structuredHeaderLink],
118
+ };
119
+ case IssueCode.TriggerIgnored:
120
+ return {
121
+ file: 'arTriggerIgnored.md',
122
+ links: [structuredHeaderLink],
123
+ };
98
124
  case IssueCode.Unknown:
99
125
  return null;
100
126
  }
@@ -435,6 +435,16 @@ const attributeValueExceedsMaxSize: LazyMarkdownIssueDescription = {
435
435
  links: [],
436
436
  };
437
437
 
438
+ const warnDomainNonAscii: LazyMarkdownIssueDescription = {
439
+ file: 'cookieWarnDomainNonAscii.md',
440
+ links: [],
441
+ };
442
+
443
+ const excludeDomainNonAscii: LazyMarkdownIssueDescription = {
444
+ file: 'cookieExcludeDomainNonAscii.md',
445
+ links: [],
446
+ };
447
+
438
448
  const issueDescriptions: Map<string, LazyMarkdownIssueDescription> = new Map([
439
449
  ['CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::ReadCookie', sameSiteUnspecifiedErrorRead],
440
450
  ['CookieIssue::ExcludeSameSiteUnspecifiedTreatedAsLax::SetCookie', sameSiteUnspecifiedErrorSet],
@@ -466,4 +476,8 @@ const issueDescriptions: Map<string, LazyMarkdownIssueDescription> = new Map([
466
476
  ['CookieIssue::ExcludeSamePartyCrossPartyContext::SetCookie', samePartyCrossPartyContextSet],
467
477
  ['CookieIssue::WarnAttributeValueExceedsMaxSize::ReadCookie', attributeValueExceedsMaxSize],
468
478
  ['CookieIssue::WarnAttributeValueExceedsMaxSize::SetCookie', attributeValueExceedsMaxSize],
479
+ ['CookieIssue::WarnDomainNonASCII::ReadCookie', warnDomainNonAscii],
480
+ ['CookieIssue::WarnDomainNonASCII::SetCookie', warnDomainNonAscii],
481
+ ['CookieIssue::ExcludeDomainNonASCII::ReadCookie', excludeDomainNonAscii],
482
+ ['CookieIssue::ExcludeDomainNonASCII::SetCookie', excludeDomainNonAscii],
469
483
  ]);
@@ -0,0 +1,9 @@
1
+ # Ensure that attribution responses contain either source or trigger, not both
2
+
3
+ This page tried to register a source and a trigger in the same HTTP response
4
+ using the Attribution Reporting API, which is prohibited.
5
+
6
+ The corresponding request was eligible to register either a source or a
7
+ trigger, but the response may only set either the
8
+ `Attribution-Reporting-Register-Source` header or the
9
+ `Attribution-Reporting-Register-Trigger` header, not both.
@@ -0,0 +1,13 @@
1
+ # An attribution source registration was ignored because the request was ineligible
2
+
3
+ This page tried to register a source using the Attribution Reporting API, but
4
+ the request was ineligible to do so, so the source registration was ignored.
5
+
6
+ A request is eligible for source registration if it has an
7
+ `Attribution-Reporting-Eligible` header whose value is a structured dictionary
8
+ that contains the key `navigation-source` or `event-source`. If the header is
9
+ absent or does not contain one of those keys, any
10
+ `Attribution-Reporting-Register-Source` response header will be ignored.
11
+
12
+ Additionally, a single HTTP redirect chain may register only all sources or all
13
+ triggers, not a combination of both.
@@ -0,0 +1,12 @@
1
+ # An attribution trigger registration was ignored because the request was ineligible
2
+
3
+ This page tried to register a trigger using the Attribution Reporting API, but
4
+ the request was ineligible to do so, so the trigger registration was ignored.
5
+
6
+ A request is eligible for trigger registration if it has an
7
+ `Attribution-Reporting-Eligible` header whose value is a structured dictionary
8
+ that contains the key `trigger`, or if the header is absent. Otherwise, any
9
+ `Attribution-Reporting-Register-Trigger` response header will be ignored.
10
+
11
+ Additionally, a single HTTP redirect chain may register only all sources or all
12
+ triggers, not a combination of both.
@@ -0,0 +1,11 @@
1
+ # Ensure cookie `Domain` attribute values only contain ASCII characters
2
+
3
+ `Domain` attributes in cookies are restricted to the ASCII character set. Any
4
+ cookies that contain characters outside of the ASCII range in their `Domain`
5
+ attribute will be ignored.
6
+
7
+ To resolve this issue, you need to remove all non-ASCII characters from the
8
+ `Domain` attribute of the affected cookies.
9
+
10
+ If your site has an internationalized domain name (IDN), you should use
11
+ [punycode](punycodeReference) representation for the `Domain` attribute instead.
@@ -0,0 +1,11 @@
1
+ # Ensure cookie `Domain` attribute values only contain ASCII characters
2
+
3
+ `Domain` attributes in cookies are restricted to the ASCII character set. Any
4
+ cookies that contain characters outside of the ASCII range in their `Domain`
5
+ attribute will be ignored in the future.
6
+
7
+ To resolve this issue, you need to remove all non-ASCII characters from the
8
+ `Domain` attribute of the affected cookies.
9
+
10
+ If your site has an internationalized domain name (IDN), you should use
11
+ [punycode](punycodeReference) representation for the `Domain` attribute instead.
@@ -731,13 +731,17 @@ export class NetworkPersistenceManager extends Common.ObjectWrapper.ObjectWrappe
731
731
  const blob = await project.requestFileBlob(fileSystemUISourceCode);
732
732
  if (blob) {
733
733
  void interceptedRequest.continueRequestWithContent(
734
- new Blob([blob], {type: mimeType}), /* encoded */ false, responseHeaders);
734
+ new Blob([blob], {type: mimeType}), /* encoded */ false, responseHeaders, /* isBodyOverridden */ true);
735
735
  }
736
+ } else if (interceptedRequest.isRedirect()) {
737
+ void interceptedRequest.continueRequestWithContent(
738
+ new Blob([], {type: mimeType}), /* encoded */ true, responseHeaders, /* isBodyOverridden */ false);
736
739
  } else {
737
740
  const responseBody = await interceptedRequest.responseBody();
738
741
  if (!responseBody.error && responseBody.content) {
739
742
  void interceptedRequest.continueRequestWithContent(
740
- new Blob([responseBody.content], {type: mimeType}), /* encoded */ true, responseHeaders);
743
+ new Blob([responseBody.content], {type: mimeType}), /* encoded */ true, responseHeaders,
744
+ /* isBodyOverridden */ false);
741
745
  }
742
746
  }
743
747
  }
@@ -329,8 +329,8 @@ export class ConsolePin {
329
329
  const executionContext = UI.Context.Context.instance().flavor(SDK.RuntimeModel.ExecutionContext);
330
330
  const preprocessedExpression = ObjectUI.JavaScriptREPL.JavaScriptREPL.preprocessExpression(text);
331
331
  const {preview, result} = await ObjectUI.JavaScriptREPL.JavaScriptREPL.evaluateAndBuildPreview(
332
- preprocessedExpression, throwOnSideEffect, false /* replMode */, timeout, !isEditing /* allowErrors */,
333
- 'console', true /* awaitPromise */);
332
+ preprocessedExpression, throwOnSideEffect, true /* replMode */, timeout, !isEditing /* allowErrors */,
333
+ 'console', true /* awaitPromise */, true /* silent */);
334
334
  if (this.lastResult && this.lastExecutionContext) {
335
335
  this.lastExecutionContext.runtimeModel.releaseEvaluationResult(this.lastResult);
336
336
  }