From 1c747233648e196bd95a8d4d0f73073898fce89d Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Wed, 4 May 2022 08:58:06 -0700 Subject: [PATCH 1/6] core(deprecations): hard-code english strings --- .../test-definitions/dobetterweb.js | 3 +- lighthouse-core/audits/deprecations.js | 600 +++++++++++++++++- .../scripts/i18n/collect-strings.js | 11 + .../test/audits/deprecations-test.js | 23 +- .../gather/gatherers/inspector-issues-test.js | 14 +- package.json | 6 +- shared/localization/locales/en-US.json | 186 ++++++ shared/localization/locales/en-XL.json | 186 ++++++ yarn.lock | 8 +- 9 files changed, 1013 insertions(+), 24 deletions(-) diff --git a/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb.js b/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb.js index f68d0f940a19..17654be72551 100644 --- a/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb.js +++ b/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb.js @@ -306,7 +306,6 @@ const expectations = { }, }, 'deprecations': { - _maxChromiumVersion: '103.0.5017.0', // TODO: deprecation strings need to be translated // see https://github.com/GoogleChrome/lighthouse/issues/13895 score: 0, details: { @@ -320,6 +319,7 @@ const expectations = { line: '>0', column: 9, }, + subItems: undefined, }, { value: /Synchronous XMLHttpRequest on the main thread is deprecated/, @@ -330,6 +330,7 @@ const expectations = { line: '>0', column: 6, }, + subItems: undefined, }, ], }, diff --git a/lighthouse-core/audits/deprecations.js b/lighthouse-core/audits/deprecations.js index 671668d4a1bb..7a0747d37049 100644 --- a/lighthouse-core/audits/deprecations.js +++ b/lighthouse-core/audits/deprecations.js @@ -13,6 +13,7 @@ const Audit = require('./audit.js'); const JsBundles = require('../computed/js-bundles.js'); const i18n = require('../lib/i18n/i18n.js'); +/* eslint-disable max-len */ const UIStrings = { /** Title of a Lighthouse audit that provides detail on the use of deprecated APIs. This descriptive title is shown to users when the page does not use deprecated APIs. */ title: 'Avoids deprecated APIs', @@ -30,10 +31,572 @@ const UIStrings = { columnDeprecate: 'Deprecation / Warning', /** Table column header for line of code (eg. 432) that is using a deprecated API. */ columnLine: 'Line', + + /** This links to the chrome feature status page when one exists. */ + feature: 'Check the feature status page for more details.', + /** + * @description This links to the chromium dash schedule when a milestone is set. + * @example {100} milestone + */ + milestone: 'This change will go into effect with milestone {milestone}.', + + /** + * @description TODO(crbug.com/1318846): Description needed for translation + */ + authorizationCoveredByWildcard: + 'Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling.', + /** + *@description TODO(crbug.com/1320334): Description needed for translation + */ + canRequestURLHTTPContainingNewline: + 'Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources.', + /** + *@description TODO(crbug.com/1320335): Description needed for translation + */ + chromeLoadTimesConnectionInfo: + '`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2.', + /** + *@description TODO(crbug.com/1320336): Description needed for translation + */ + chromeLoadTimesFirstPaintAfterLoadTime: + '`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing.', + /** + *@description TODO(crbug.com/1320337): Description needed for translation + */ + chromeLoadTimesWasAlternateProtocolAvailable: + '`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2.', + /** + *@description TODO(crbug.com/1318847): Description needed for translation + */ + cookieWithTruncatingChar: 'Cookies containing a `(0|r|n)` character will be rejected instead of truncated.', + /** + *@description This warning occurs when a frame accesses another frame's + * data after having set `document.domain` without having set the + * `Origin-Agent-Cluster` http header. This is a companion warning to + * `documentDomainSettingWithoutOriginAgentClusterHeader`, where that + * warning occurs when `document.domain` is set, and this warning + * occurs when an access has been made, based on that previous + * `document.domain` setting. + */ + crossOriginAccessBasedOnDocumentDomain: + 'Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting `document.domain`.', + /** + *@description TODO(crbug.com/1318850): Description needed for translation + */ + crossOriginWindowAlert: + 'Triggering `window.alert` from cross origin iframes has been deprecated and will be removed in the future.', + /** + *@description TODO(crbug.com/1318851): Description needed for translation + */ + crossOriginWindowConfirm: + 'Triggering `window.confirm` from cross origin iframes has been deprecated and will be removed in the future.', + /** + *@description TODO(crbug.com/1320339): Description needed for translation + */ + cssSelectorInternalMediaControlsOverlayCastButton: + 'The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector.', + /** + *@description TODO(crbug.com/1320340): Description needed for translation + */ + customCursorIntersectsViewport: + 'Custom cursors with size greater than 32x32 DIP intersecting native UI is deprecated and will be removed.', + /** + *@description This warning occurs when a script modifies `document.domain` + * without having set on `Origin-Agent-Cluster` http header. In other + * words, when a script relies on the default behaviour of + * `Origin-Agent-Cluster` when setting document.domain. + */ + documentDomainSettingWithoutOriginAgentClusterHeader: + 'Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details.', + /** + *@description Warning displayed to developers when the non-standard `Event.path` API is used to notify them that this API is deprecated. + */ + eventPath: '`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` instead.', + /** + *@description Warning displayed to developers when the Geolocation API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is no longer supported. + */ + geolocationInsecureOrigin: + '`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', + /** + *@description Warning displayed to developers when the Geolocation API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is deprecated. + */ + geolocationInsecureOriginDeprecatedNotRemoved: + '`getCurrentPosition()` and `watchPosition()` are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', + /** + *@description TODO(crbug.com/1318858): Description needed for translation + */ + getUserMediaInsecureOrigin: + '`getUserMedia()` no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', + /** + *@description TODO(crbug.com/1320342): Description needed for translation + */ + hostCandidateAttributeGetter: + '`RTCPeerConnectionIceErrorEvent.hostCandidate` is deprecated. Please use `RTCPeerConnectionIceErrorEvent.address` or `RTCPeerConnectionIceErrorEvent.port` instead.', + /** + *@description TODO(crbug.com/1320343): Description needed for translation + */ + insecurePrivateNetworkSubresourceRequest: + 'The website requested a subresource from a network that it could only access because of its users\' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them.', + /** + *@description TODO(crbug.com/1318860): Description needed for translation + */ + legacyConstraintGoogCpuOveruseDetection: + 'CPU overuse detection is enabled-by-default and the ability to disable it using `googCpuOveruseDetection` will soon be removed. Please stop using this legacy constraint.', + /** + *@description TODO(crbug.com/1318861): Description needed for translation + */ + legacyConstraintGoogIPv6: + 'IPv6 is enabled-by-default and the ability to disable it using `googIPv6` will soon be removed. Please stop using this legacy constraint.', + /** + *@description TODO(crbug.com/1318863): Description needed for translation + */ + legacyConstraintGoogScreencastMinBitrate: + 'Screencast min bitrate is now set to 100 kbps by default and `googScreencastMinBitrate` will soon be ignored in favor of this new default. Please stop using this legacy constraint.', + /** + *@description TODO(crbug.com/1318864): Description needed for translation + */ + legacyConstraintGoogSuspendBelowMinBitrate: + 'Support for the `googSuspendBelowMinBitrate` constraint is about to be removed. Please stop using this legacy constraint.', + /** + *@description TODO(crbug.com/1318865): Description needed for translation + */ + localCSSFileExtensionRejected: + 'CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension.', + /** + *@description TODO(crbug.com/1320344): Description needed for translation + */ + mediaElementAudioSourceNode: + 'Creating a `MediaElementAudioSourceNode` on an `OfflineAudioContext` is deprecated and will be removed.', + /** + *@description TODO(crbug.com/1320345): Description needed for translation + */ + mediaSourceAbortRemove: + 'Using `SourceBuffer.abort()` to abort `remove()`\'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should instead await `updateend`. `abort()` is intended to only abort an asynchronous media append or reset parser state.', + /** + *@description TODO(crbug.com/1320346): Description needed for translation + */ + mediaSourceDurationTruncatingBuffered: + 'Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`.', + /** + *@description TODO(crbug.com/1320347): Description needed for translation + */ + noSysexWebMIDIWithoutPermission: + 'Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`.', + /** + *@description Warning displayed to developers when the Notification API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is no longer supported. + */ + notificationInsecureOrigin: + 'The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', + /** + *@description Warning displayed to developers when permission to use notifications has been requested by a cross-origin iframe, to notify them that this use is no longer supported. + */ + notificationPermissionRequestedIframe: + 'Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead.', + /** + *@description TODO(crbug.com/1318867): Description needed for translation + */ + obsoleteWebRtcCipherSuite: + 'Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed.', + /** + *@description TODO(crbug.com/1320349): Description needed for translation + */ + paymentRequestBasicCard: 'The `basic-card` payment method is deprecated and will be removed.', + /** + *@description TODO(crbug.com/1320350): Description needed for translation + */ + paymentRequestShowWithoutGesture: + 'Calling `PaymentRequest.show()` without user activation is deprecated and will be removed.', + /** + *@description This issue indicates that a `` element with a `` parent was using an `src` attribute, which is not valid and is ignored by the browser. The `srcset` attribute should be used instead. + */ + pictureSourceSrc: + '`` with a `` parent is invalid and therefore ignored. Please use `` instead.', + /** + *@description Warning displayed to developers when the vendor-prefixed method is used rather than the equivalent unprefixed method. + */ + prefixedCancelAnimationFrame: + '`webkitCancelAnimationFrame` is vendor-specific. Please use the standard `cancelAnimationFrame` instead.', + /** + *@description Warning displayed to developers when the vendor-prefixed method is used rather than the equivalent unprefixed method. + */ + prefixedRequestAnimationFrame: + '`webkitRequestAnimationFrame` is vendor-specific. Please use the standard `requestAnimationFrame` instead.', + /** + *@description TODO(crbug.com/1320351): Description needed for translation + */ + prefixedStorageInfo: + '`window.webkitStorageInfo` is deprecated. Please use `navigator.webkitTemporaryStorage` or `navigator.webkitPersistentStorage` instead.', + /** + *@description TODO(crbug.com/1320352): Description needed for translation + */ + prefixedVideoDisplayingFullscreen: + '`HTMLVideoElement.webkitDisplayingFullscreen` is deprecated. Please use `Document.fullscreenElement` instead.', + /** + *@description TODO(crbug.com/1320353): Description needed for translation + */ + prefixedVideoEnterFullScreen: + '`HTMLVideoElement.webkitEnterFullScreen()` is deprecated. Please use `Element.requestFullscreen()` instead.', + /** + *@description TODO(crbug.com/1320353): Description needed for translation + */ + prefixedVideoEnterFullscreen: + '`HTMLVideoElement.webkitEnterFullscreen()` is deprecated. Please use `Element.requestFullscreen()` instead.', + /** + *@description TODO(crbug.com/1320354): Description needed for translation + */ + prefixedVideoExitFullScreen: + '`HTMLVideoElement.webkitExitFullsSreen()` is deprecated. Please use `Document.exitFullscreen()` instead.', + /** + *@description TODO(crbug.com/1320354): Description needed for translation + */ + prefixedVideoExitFullscreen: + '`HTMLVideoElement.webkitExitFullscreen()` is deprecated. Please use `Document.exitFullscreen()` instead.', + /** + *@description TODO(crbug.com/1320355): Description needed for translation + */ + prefixedVideoSupportsFullscreen: + '`HTMLVideoElement.webkitSupportsFullscreen` is deprecated. Please use `Document.fullscreenEnabled` instead.', + /** + *@description TODO(crbug.com/1320356): Description needed for translation + */ + rangeExpand: '`Range.expand()` is deprecated. Please use `Selection.modify()` instead.', + /** + *@description TODO(crbug.com/1320357): Description needed for translation + */ + requestedSubresourceWithEmbeddedCredentials: + 'Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked.', + /** + *@description TODO(crbug.com/1318872): Description needed for translation + */ + rtcConstraintEnableDtlsSrtpFalse: + 'The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES` key negotiation method. This functionality is removed; use a service that supports DTLS key negotiation instead.', + /** + *@description TODO(crbug.com/1318873): Description needed for translation + */ + rtcConstraintEnableDtlsSrtpTrue: + 'The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness.', + /** + *@description TODO(crbug.com/1318874): Description needed for translation + */ + rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics: + 'Complex Plan B SDP detected! Chrome will switch the default `sdpSemantics` from `plan-b` to the standardized `unified-plan` format and this peer connection is relying on the default `sdpSemantics`. This SDP is not compatible with Unified Plan and will be rejected by clients expecting Unified Plan. For more information about how to prepare for the switch, see https://webrtc.org/web-apis/chrome/unified-plan/.', + /** + *@description TODO(crbug.com/1318875): Description needed for translation + */ + rtcPeerConnectionLegacyCreateWithMediaConstraints: + 'The `mediaConstraints` version of `RTCOfferOptions/RTCAnswerOptions` are deprecated and will soon be removed, please migrate to the promise-based `createOffer`/`createAnswer` instead.', + /** + *@description TODO(crbug.com/1320358): Description needed for translation + */ + rtcPeerConnectionSdpSemanticsPlanB: + 'Plan B SDP semantics, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the Session Description Protocol that has been permanently deleted from the Web Platform. It is still available when building with IS_FUCHSIA, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status.', + /** + *@description TODO(crbug.com/1320360): Description needed for translation + */ + rtcpMuxPolicyNegotiate: 'The `rtcpMuxPolicy` option is deprecated and will be removed.', + /** + *@description TODO(crbug.com/1318876): Description needed for translation + */ + rtpDataChannel: + 'RTP data channels are no longer supported. The `RtpDataChannels` constraint is currently ignored, and may cause an error at a later date.', + /** + *@description TODO(crbug.com/1320361): Description needed for translation + */ + selectionAddRangeIntersect: + 'The behavior that `Selection.addRange()` merges existing Range and the specified Range was removed.', + /** + *@description TODO(crbug.com/1318878): Description needed for translation + */ + sharedArrayBufferConstructedWithoutIsolation: + '`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.', + /** + *@description TODO(crbug.com/1320363): Description needed for translation + */ + textToSpeech_DisallowedByAutoplay: + '`speechSynthesis.speak()` without user activation is deprecated and will be removed.', + /** + *@description TODO(crbug.com/1318879): Description needed for translation + */ + v8SharedArrayBufferConstructedInExtensionWithoutIsolation: + 'Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.', + /** + *@description TODO(crbug.com/1318880): Description needed for translation + */ + webCodecsVideoFrameDefaultTimestamp: + 'Constructing a `VideoFrame` without a timestamp is deprecated and support will be removed. Please provide a timestamp via `VideoFrameInit`.', + /** + *@description TODO(crbug.com/1318881): Description needed for translation + */ + xhrJSONEncodingDetection: 'UTF-16 is not supported by response json in `XMLHttpRequest`', + /** + *@description TODO(crbug.com/1318882): Description needed for translation + */ + xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: + 'Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user\u2019s experience. For more help, check https://xhr.spec.whatwg.org/.', + /** + *@description TODO(crbug.com/1320365): Description needed for translation + */ + xrSupportsSession: + '`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead.', + /** ... */ + unknownDeprecation: '...', }; +/* eslint-enable max-len */ const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings); +/** + * @param {LH.Crdp.Audits.DeprecationIssueDetails} deprecation + */ +function getMeta(deprecation) { + let message; + let feature = 0; + let milestone = 0; + // @ts-expect-error + const legacyMessage = /** @type {string=} */ (deprecation.message); + + switch (deprecation.type) { + case 'AuthorizationCoveredByWildcard': + message = str_(UIStrings.authorizationCoveredByWildcard); + milestone = 97; + break; + case 'CanRequestURLHTTPContainingNewline': + message = str_(UIStrings.canRequestURLHTTPContainingNewline); + feature = 5735596811091968; + break; + case 'ChromeLoadTimesConnectionInfo': + message = str_(UIStrings.chromeLoadTimesConnectionInfo); + feature = 5637885046816768; + break; + case 'ChromeLoadTimesFirstPaintAfterLoadTime': + message = str_(UIStrings.chromeLoadTimesFirstPaintAfterLoadTime); + feature = 5637885046816768; + break; + case 'ChromeLoadTimesWasAlternateProtocolAvailable': + message = str_(UIStrings.chromeLoadTimesWasAlternateProtocolAvailable); + feature = 5637885046816768; + break; + case 'CookieWithTruncatingChar': + message = str_(UIStrings.cookieWithTruncatingChar); + milestone = 103; + break; + case 'CrossOriginAccessBasedOnDocumentDomain': + message = str_(UIStrings.crossOriginAccessBasedOnDocumentDomain); + milestone = 106; + break; + case 'CrossOriginWindowAlert': + message = str_(UIStrings.crossOriginWindowAlert); + break; + case 'CrossOriginWindowConfirm': + message = str_(UIStrings.crossOriginWindowConfirm); + break; + case 'CSSSelectorInternalMediaControlsOverlayCastButton': + message = str_(UIStrings.cssSelectorInternalMediaControlsOverlayCastButton); + feature = 5714245488476160; + break; + case 'CustomCursorIntersectsViewport': + message = str_(UIStrings.customCursorIntersectsViewport); + feature = 5825971391299584; + milestone = 75; + break; + case 'DocumentDomainSettingWithoutOriginAgentClusterHeader': + message = str_(UIStrings.documentDomainSettingWithoutOriginAgentClusterHeader); + milestone = 106; + break; + case 'EventPath': + message = str_(UIStrings.eventPath); + feature = 5726124632965120; + milestone = 109; + break; + case 'GeolocationInsecureOrigin': + message = str_(UIStrings.geolocationInsecureOrigin); + break; + case 'GeolocationInsecureOriginDeprecatedNotRemoved': + message = str_(UIStrings.geolocationInsecureOriginDeprecatedNotRemoved); + break; + case 'GetUserMediaInsecureOrigin': + message = str_(UIStrings.getUserMediaInsecureOrigin); + break; + case 'HostCandidateAttributeGetter': + message = str_(UIStrings.hostCandidateAttributeGetter); + break; + case 'InsecurePrivateNetworkSubresourceRequest': + message = str_(UIStrings.insecurePrivateNetworkSubresourceRequest); + feature = 5436853517811712; + milestone = 92; + break; + case 'LegacyConstraintGoogCpuOveruseDetection': + message = str_(UIStrings.legacyConstraintGoogCpuOveruseDetection); + milestone = 103; + break; + case 'LegacyConstraintGoogIPv6': + message = str_(UIStrings.legacyConstraintGoogIPv6); + milestone = 103; + break; + case 'LegacyConstraintGoogScreencastMinBitrate': + message = str_(UIStrings.legacyConstraintGoogScreencastMinBitrate); + milestone = 103; + break; + case 'LegacyConstraintGoogSuspendBelowMinBitrate': + message = str_(UIStrings.legacyConstraintGoogSuspendBelowMinBitrate); + milestone = 103; + break; + case 'LocalCSSFileExtensionRejected': + message = str_(UIStrings.localCSSFileExtensionRejected); + milestone = 64; + break; + case 'MediaElementAudioSourceNode': + message = str_(UIStrings.mediaElementAudioSourceNode); + feature = 5258622686724096; + milestone = 71; + break; + case 'MediaSourceAbortRemove': + message = str_(UIStrings.mediaSourceAbortRemove); + feature = 6107495151960064; + break; + case 'MediaSourceDurationTruncatingBuffered': + message = str_(UIStrings.mediaSourceDurationTruncatingBuffered); + feature = 6107495151960064; + break; + case 'NoSysexWebMIDIWithoutPermission': + message = str_(UIStrings.noSysexWebMIDIWithoutPermission); + feature = 5138066234671104; + milestone = 82; + break; + case 'NotificationInsecureOrigin': + message = str_(UIStrings.notificationInsecureOrigin); + break; + case 'NotificationPermissionRequestedIframe': + message = str_(UIStrings.notificationPermissionRequestedIframe); + feature = 6451284559265792; + break; + case 'ObsoleteWebRtcCipherSuite': + message = str_(UIStrings.obsoleteWebRtcCipherSuite); + milestone = 81; + break; + case 'PaymentRequestBasicCard': + message = str_(UIStrings.paymentRequestBasicCard); + feature = 5730051011117056; + milestone = 100; + break; + case 'PaymentRequestShowWithoutGesture': + message = str_(UIStrings.paymentRequestShowWithoutGesture); + feature = 5948593429020672; + milestone = 102; + break; + case 'PictureSourceSrc': + message = str_(UIStrings.pictureSourceSrc); + break; + case 'PrefixedCancelAnimationFrame': + message = str_(UIStrings.prefixedCancelAnimationFrame); + break; + case 'PrefixedRequestAnimationFrame': + message = str_(UIStrings.prefixedRequestAnimationFrame); + break; + case 'PrefixedStorageInfo': + message = str_(UIStrings.prefixedStorageInfo); + break; + case 'PrefixedVideoDisplayingFullscreen': + message = str_(UIStrings.prefixedVideoDisplayingFullscreen); + break; + case 'PrefixedVideoEnterFullScreen': + message = str_(UIStrings.prefixedVideoEnterFullScreen); + break; + case 'PrefixedVideoEnterFullscreen': + message = str_(UIStrings.prefixedVideoEnterFullscreen); + break; + case 'PrefixedVideoExitFullScreen': + message = str_(UIStrings.prefixedVideoExitFullScreen); + break; + case 'PrefixedVideoExitFullscreen': + message = str_(UIStrings.prefixedVideoExitFullscreen); + break; + case 'PrefixedVideoSupportsFullscreen': + message = str_(UIStrings.prefixedVideoSupportsFullscreen); + break; + case 'RangeExpand': + message = str_(UIStrings.rangeExpand); + break; + case 'RequestedSubresourceWithEmbeddedCredentials': + message = str_(UIStrings.requestedSubresourceWithEmbeddedCredentials); + feature = 5669008342777856; + break; + case 'RTCConstraintEnableDtlsSrtpFalse': + message = str_(UIStrings.rtcConstraintEnableDtlsSrtpFalse); + milestone = 97; + break; + case 'RTCConstraintEnableDtlsSrtpTrue': + message = str_(UIStrings.rtcConstraintEnableDtlsSrtpTrue); + milestone = 97; + break; + case 'RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics': + message = str_(UIStrings.rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics); + milestone = 72; + break; + case 'RTCPeerConnectionLegacyCreateWithMediaConstraints': + message = str_(UIStrings.rtcPeerConnectionLegacyCreateWithMediaConstraints); + milestone = 103; + break; + case 'RTCPeerConnectionSdpSemanticsPlanB': + message = str_(UIStrings.rtcPeerConnectionSdpSemanticsPlanB); + feature = 5823036655665152; + milestone = 93; + break; + case 'RtcpMuxPolicyNegotiate': + message = str_(UIStrings.rtcpMuxPolicyNegotiate); + feature = 5654810086866944; + milestone = 62; + break; + case 'RTPDataChannel': + message = str_(UIStrings.rtpDataChannel); + milestone = 88; + break; + case 'SelectionAddRangeIntersect': + message = str_(UIStrings.selectionAddRangeIntersect); + feature = 6680566019653632; + break; + case 'SharedArrayBufferConstructedWithoutIsolation': + message = str_(UIStrings.sharedArrayBufferConstructedWithoutIsolation); + milestone = 106; + break; + case 'TextToSpeech_DisallowedByAutoplay': + message = str_(UIStrings.textToSpeech_DisallowedByAutoplay); + feature = 5687444770914304; + milestone = 71; + break; + case 'V8SharedArrayBufferConstructedInExtensionWithoutIsolation': + message = str_(UIStrings.v8SharedArrayBufferConstructedInExtensionWithoutIsolation); + milestone = 96; + break; + // @ts-expect-error ??? + case 'WebCodecsVideoFrameDefaultTimestamp': + message = str_(UIStrings.webCodecsVideoFrameDefaultTimestamp); + feature = 5667793157488640; + milestone = 99; + break; + case 'XHRJSONEncodingDetection': + message = str_(UIStrings.xhrJSONEncodingDetection); + milestone = 93; + break; + case 'XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload': + message = str_(UIStrings.xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload); + break; + case 'XRSupportsSession': + message = str_(UIStrings.xrSupportsSession); + milestone = 80; + break; + default: + message = legacyMessage || str_(UIStrings.unknownDeprecation); + break; + } + + return { + message, + milestone, + feature, + }; +} + class Deprecations extends Audit { /** * @return {LH.Audit.Meta} @@ -57,17 +620,44 @@ class Deprecations extends Audit { const bundles = await JsBundles.request(artifacts, context); const deprecations = artifacts.InspectorIssues.deprecationIssue - // TODO: translate these strings. - // see https://github.com/GoogleChrome/lighthouse/issues/13895 - .filter(deprecation => !deprecation.type || deprecation.type === 'Untranslated') .map(deprecation => { const {scriptId, url, lineNumber, columnNumber} = deprecation.sourceCodeLocation; const bundle = bundles.find(bundle => bundle.script.scriptId === scriptId); - return { - value: deprecation.message || '', + const deprecationMeta = getMeta(deprecation); + + const links = []; + if (deprecationMeta.feature) { + links.push({ + type: 'link', + url: `https://chromestatus.com/feature/${deprecationMeta.feature}`, + text: str_(UIStrings.feature), + }); + } + if (deprecationMeta.milestone) { + links.push({ + type: 'link', + url: 'https://chromiumdash.appspot.com/schedule', + text: str_(UIStrings.milestone, {milestone: deprecationMeta.milestone}), + }); + } + + /** @type {LH.Audit.Details.TableSubItems=} */ + let subItems = undefined; + if (links.length) { + subItems = { + type: 'subitems', + items: links, + }; + } + + /** @type {LH.Audit.Details.TableItem} */ + const item = { + value: deprecationMeta.message || '', // Protocol.Audits.SourceCodeLocation.columnNumber is 1-indexed, but we use 0-indexed. source: Audit.makeSourceLocation(url, lineNumber, columnNumber - 1, bundle), + subItems, }; + return item; }); /** @type {LH.Audit.Details.Table['headings']} */ diff --git a/lighthouse-core/scripts/i18n/collect-strings.js b/lighthouse-core/scripts/i18n/collect-strings.js index 22a7913a3c27..d8479038b0fb 100644 --- a/lighthouse-core/scripts/i18n/collect-strings.js +++ b/lighthouse-core/scripts/i18n/collect-strings.js @@ -652,6 +652,15 @@ function resolveMessageCollisions(strings) { try { expect(collidingMessages).toEqual([ + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ or $MARKDOWN_SNIPPET_2$ instead.', + '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ or $MARKDOWN_SNIPPET_2$ instead.', 'ARIA $MARKDOWN_SNIPPET_0$ elements do not have accessible names.', 'ARIA $MARKDOWN_SNIPPET_0$ elements do not have accessible names.', 'ARIA $MARKDOWN_SNIPPET_0$ elements do not have accessible names.', @@ -673,6 +682,8 @@ function resolveMessageCollisions(strings) { 'Name', 'Potential Savings', 'Potential Savings', + 'Triggering $MARKDOWN_SNIPPET_0$ from cross origin iframes has been deprecated and will be removed in the future.', + 'Triggering $MARKDOWN_SNIPPET_0$ from cross origin iframes has been deprecated and will be removed in the future.', 'Use the $MARKDOWN_SNIPPET_0$ component and set the appropriate $MARKDOWN_SNIPPET_1$. $LINK_START_0$Learn more$LINK_END_0$.', 'Use the $MARKDOWN_SNIPPET_0$ component and set the appropriate $MARKDOWN_SNIPPET_1$. $LINK_START_0$Learn more$LINK_END_0$.', ]); diff --git a/lighthouse-core/test/audits/deprecations-test.js b/lighthouse-core/test/audits/deprecations-test.js index 7fb31a3c19c6..657e24873148 100644 --- a/lighthouse-core/test/audits/deprecations-test.js +++ b/lighthouse-core/test/audits/deprecations-test.js @@ -45,6 +45,14 @@ describe('Deprecations audit', () => { columnNumber: 100, }, }, + { + type: 'EventPath', + sourceCodeLocation: { + url: URL, + lineNumber: 100, + columnNumber: 100, + }, + }, ], }, SourceMaps: [], @@ -52,11 +60,22 @@ describe('Deprecations audit', () => { }, context); assert.equal(auditResult.score, 0); - expect(auditResult.displayValue).toBeDisplayString('2 warnings found'); - assert.equal(auditResult.details.items.length, 2); + expect(auditResult.displayValue).toBeDisplayString('3 warnings found'); + assert.equal(auditResult.details.items.length, 3); assert.equal(auditResult.details.items[0].value, 'Deprecation message 123'); assert.equal(auditResult.details.items[0].source.url, URL); assert.equal(auditResult.details.items[0].source.line, 123); assert.equal(auditResult.details.items[0].source.column, 99); + assert.equal(auditResult.details.items[1].value, 'Deprecation message 456'); + expect(auditResult.details.items[2].value).toBeDisplayString( + '`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` instead.'); + expect(auditResult.details.items[2].subItems.items[0]).toMatchObject({ + text: expect.toBeDisplayString('Check the feature status page for more details.'), + url: 'https://chromestatus.com/feature/5726124632965120', + }); + expect(auditResult.details.items[2].subItems.items[1]).toMatchObject({ + text: expect.toBeDisplayString('This change will go into effect with milestone 109.'), + url: 'https://chromiumdash.appspot.com/schedule', + }); }); }); diff --git a/lighthouse-core/test/gather/gatherers/inspector-issues-test.js b/lighthouse-core/test/gather/gatherers/inspector-issues-test.js index 420fa86472ce..a567eabe04d1 100644 --- a/lighthouse-core/test/gather/gatherers/inspector-issues-test.js +++ b/lighthouse-core/test/gather/gatherers/inspector-issues-test.js @@ -135,17 +135,15 @@ function mockCSP(details) { } /** - * @param {string} text + * @param {LH.Crdp.Audits.DeprecationIssueType} type * @return {LH.Crdp.Audits.InspectorIssue} */ -function mockDeprecation(text) { +function mockDeprecation(type) { return { code: 'DeprecationIssue', details: { deprecationIssueDetails: { - message: text, - deprecationType: 'test', - type: 'Untranslated', + type, sourceCodeLocation: { url: 'https://www.example.com', lineNumber: 10, @@ -190,7 +188,7 @@ describe('_getArtifact', () => { mockBlockedByResponse({request: {requestId: '3'}}), mockHeavyAd(), mockCSP(), - mockDeprecation('some warning'), + mockDeprecation('AuthorizationCoveredByWildcard'), ]; const networkRecords = [ mockRequest({requestId: '1'}), @@ -235,14 +233,12 @@ describe('_getArtifact', () => { contentSecurityPolicyViolationType: 'kInlineViolation', }], deprecationIssue: [{ - message: 'some warning', - deprecationType: 'test', + type: 'AuthorizationCoveredByWildcard', sourceCodeLocation: { url: 'https://www.example.com', columnNumber: 10, lineNumber: 10, }, - type: 'Untranslated', }], attributionReportingIssue: [], clientHintIssue: [], diff --git a/package.json b/package.json index 114d64e49540..04ebbd6343fc 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "cpy": "^8.1.2", "cross-env": "^7.0.2", "csv-validator": "^0.0.3", - "devtools-protocol": "0.0.995287", + "devtools-protocol": "0.0.999451", "es-main": "^1.0.2", "eslint": "^8.4.1", "eslint-config-google": "^0.14.0", @@ -209,8 +209,8 @@ "yargs-parser": "^21.0.0" }, "resolutions": { - "puppeteer/**/devtools-protocol": "0.0.995287", - "puppeteer-core/**/devtools-protocol": "0.0.995287" + "puppeteer/**/devtools-protocol": "0.0.999451", + "puppeteer-core/**/devtools-protocol": "0.0.999451" }, "repository": "GoogleChrome/lighthouse", "keywords": [ diff --git a/shared/localization/locales/en-US.json b/shared/localization/locales/en-US.json index 380127ae36c5..540417f29558 100644 --- a/shared/localization/locales/en-US.json +++ b/shared/localization/locales/en-US.json @@ -746,24 +746,210 @@ "lighthouse-core/audits/csp-xss.js | title": { "message": "Ensure CSP is effective against XSS attacks" }, + "lighthouse-core/audits/deprecations.js | authorizationCoveredByWildcard": { + "message": "Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling." + }, + "lighthouse-core/audits/deprecations.js | canRequestURLHTTPContainingNewline": { + "message": "Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources." + }, + "lighthouse-core/audits/deprecations.js | chromeLoadTimesConnectionInfo": { + "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2." + }, + "lighthouse-core/audits/deprecations.js | chromeLoadTimesFirstPaintAfterLoadTime": { + "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing." + }, + "lighthouse-core/audits/deprecations.js | chromeLoadTimesWasAlternateProtocolAvailable": { + "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2." + }, "lighthouse-core/audits/deprecations.js | columnDeprecate": { "message": "Deprecation / Warning" }, "lighthouse-core/audits/deprecations.js | columnLine": { "message": "Line" }, + "lighthouse-core/audits/deprecations.js | cookieWithTruncatingChar": { + "message": "Cookies containing a `(0|r|n)` character will be rejected instead of truncated." + }, + "lighthouse-core/audits/deprecations.js | crossOriginAccessBasedOnDocumentDomain": { + "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting `document.domain`." + }, + "lighthouse-core/audits/deprecations.js | crossOriginWindowAlert": { + "message": "Triggering `window.alert` from cross origin iframes has been deprecated and will be removed in the future." + }, + "lighthouse-core/audits/deprecations.js | crossOriginWindowConfirm": { + "message": "Triggering `window.confirm` from cross origin iframes has been deprecated and will be removed in the future." + }, + "lighthouse-core/audits/deprecations.js | cssSelectorInternalMediaControlsOverlayCastButton": { + "message": "The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector." + }, + "lighthouse-core/audits/deprecations.js | customCursorIntersectsViewport": { + "message": "Custom cursors with size greater than 32x32 DIP intersecting native UI is deprecated and will be removed." + }, "lighthouse-core/audits/deprecations.js | description": { "message": "Deprecated APIs will eventually be removed from the browser. [Learn more](https://web.dev/deprecations/)." }, "lighthouse-core/audits/deprecations.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 warning found}\n other {# warnings found}\n }" }, + "lighthouse-core/audits/deprecations.js | documentDomainSettingWithoutOriginAgentClusterHeader": { + "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details." + }, + "lighthouse-core/audits/deprecations.js | eventPath": { + "message": "`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` instead." + }, "lighthouse-core/audits/deprecations.js | failureTitle": { "message": "Uses deprecated APIs" }, + "lighthouse-core/audits/deprecations.js | feature": { + "message": "Check the feature status page for more details." + }, + "lighthouse-core/audits/deprecations.js | geolocationInsecureOrigin": { + "message": "`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." + }, + "lighthouse-core/audits/deprecations.js | geolocationInsecureOriginDeprecatedNotRemoved": { + "message": "`getCurrentPosition()` and `watchPosition()` are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." + }, + "lighthouse-core/audits/deprecations.js | getUserMediaInsecureOrigin": { + "message": "`getUserMedia()` no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." + }, + "lighthouse-core/audits/deprecations.js | hostCandidateAttributeGetter": { + "message": "`RTCPeerConnectionIceErrorEvent.hostCandidate` is deprecated. Please use `RTCPeerConnectionIceErrorEvent.address` or `RTCPeerConnectionIceErrorEvent.port` instead." + }, + "lighthouse-core/audits/deprecations.js | insecurePrivateNetworkSubresourceRequest": { + "message": "The website requested a subresource from a network that it could only access because of its users' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them." + }, + "lighthouse-core/audits/deprecations.js | legacyConstraintGoogCpuOveruseDetection": { + "message": "CPU overuse detection is enabled-by-default and the ability to disable it using `googCpuOveruseDetection` will soon be removed. Please stop using this legacy constraint." + }, + "lighthouse-core/audits/deprecations.js | legacyConstraintGoogIPv6": { + "message": "IPv6 is enabled-by-default and the ability to disable it using `googIPv6` will soon be removed. Please stop using this legacy constraint." + }, + "lighthouse-core/audits/deprecations.js | legacyConstraintGoogScreencastMinBitrate": { + "message": "Screencast min bitrate is now set to 100 kbps by default and `googScreencastMinBitrate` will soon be ignored in favor of this new default. Please stop using this legacy constraint." + }, + "lighthouse-core/audits/deprecations.js | legacyConstraintGoogSuspendBelowMinBitrate": { + "message": "Support for the `googSuspendBelowMinBitrate` constraint is about to be removed. Please stop using this legacy constraint." + }, + "lighthouse-core/audits/deprecations.js | localCSSFileExtensionRejected": { + "message": "CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension." + }, + "lighthouse-core/audits/deprecations.js | mediaElementAudioSourceNode": { + "message": "Creating a `MediaElementAudioSourceNode` on an `OfflineAudioContext` is deprecated and will be removed." + }, + "lighthouse-core/audits/deprecations.js | mediaSourceAbortRemove": { + "message": "Using `SourceBuffer.abort()` to abort `remove()`'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should instead await `updateend`. `abort()` is intended to only abort an asynchronous media append or reset parser state." + }, + "lighthouse-core/audits/deprecations.js | mediaSourceDurationTruncatingBuffered": { + "message": "Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`." + }, + "lighthouse-core/audits/deprecations.js | milestone": { + "message": "This change will go into effect with milestone {milestone}." + }, + "lighthouse-core/audits/deprecations.js | noSysexWebMIDIWithoutPermission": { + "message": "Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`." + }, + "lighthouse-core/audits/deprecations.js | notificationInsecureOrigin": { + "message": "The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." + }, + "lighthouse-core/audits/deprecations.js | notificationPermissionRequestedIframe": { + "message": "Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead." + }, + "lighthouse-core/audits/deprecations.js | obsoleteWebRtcCipherSuite": { + "message": "Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed." + }, + "lighthouse-core/audits/deprecations.js | paymentRequestBasicCard": { + "message": "The `basic-card` payment method is deprecated and will be removed." + }, + "lighthouse-core/audits/deprecations.js | paymentRequestShowWithoutGesture": { + "message": "Calling `PaymentRequest.show()` without user activation is deprecated and will be removed." + }, + "lighthouse-core/audits/deprecations.js | pictureSourceSrc": { + "message": "`` with a `` parent is invalid and therefore ignored. Please use `` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedCancelAnimationFrame": { + "message": "`webkitCancelAnimationFrame` is vendor-specific. Please use the standard `cancelAnimationFrame` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedRequestAnimationFrame": { + "message": "`webkitRequestAnimationFrame` is vendor-specific. Please use the standard `requestAnimationFrame` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedStorageInfo": { + "message": "`window.webkitStorageInfo` is deprecated. Please use `navigator.webkitTemporaryStorage` or `navigator.webkitPersistentStorage` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoDisplayingFullscreen": { + "message": "`HTMLVideoElement.webkitDisplayingFullscreen` is deprecated. Please use `Document.fullscreenElement` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoEnterFullscreen": { + "message": "`HTMLVideoElement.webkitEnterFullscreen()` is deprecated. Please use `Element.requestFullscreen()` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoEnterFullScreen": { + "message": "`HTMLVideoElement.webkitEnterFullScreen()` is deprecated. Please use `Element.requestFullscreen()` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoExitFullscreen": { + "message": "`HTMLVideoElement.webkitExitFullscreen()` is deprecated. Please use `Document.exitFullscreen()` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoExitFullScreen": { + "message": "`HTMLVideoElement.webkitExitFullsSreen()` is deprecated. Please use `Document.exitFullscreen()` instead." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoSupportsFullscreen": { + "message": "`HTMLVideoElement.webkitSupportsFullscreen` is deprecated. Please use `Document.fullscreenEnabled` instead." + }, + "lighthouse-core/audits/deprecations.js | rangeExpand": { + "message": "`Range.expand()` is deprecated. Please use `Selection.modify()` instead." + }, + "lighthouse-core/audits/deprecations.js | requestedSubresourceWithEmbeddedCredentials": { + "message": "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked." + }, + "lighthouse-core/audits/deprecations.js | rtcConstraintEnableDtlsSrtpFalse": { + "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES` key negotiation method. This functionality is removed; use a service that supports DTLS key negotiation instead." + }, + "lighthouse-core/audits/deprecations.js | rtcConstraintEnableDtlsSrtpTrue": { + "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness." + }, + "lighthouse-core/audits/deprecations.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { + "message": "Complex Plan B SDP detected! Chrome will switch the default `sdpSemantics` from `plan-b` to the standardized `unified-plan` format and this peer connection is relying on the default `sdpSemantics`. This SDP is not compatible with Unified Plan and will be rejected by clients expecting Unified Plan. For more information about how to prepare for the switch, see https://webrtc.org/web-apis/chrome/unified-plan/." + }, + "lighthouse-core/audits/deprecations.js | rtcPeerConnectionLegacyCreateWithMediaConstraints": { + "message": "The `mediaConstraints` version of `RTCOfferOptions/RTCAnswerOptions` are deprecated and will soon be removed, please migrate to the promise-based `createOffer`/`createAnswer` instead." + }, + "lighthouse-core/audits/deprecations.js | rtcPeerConnectionSdpSemanticsPlanB": { + "message": "Plan B SDP semantics, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the Session Description Protocol that has been permanently deleted from the Web Platform. It is still available when building with IS_FUCHSIA, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status." + }, + "lighthouse-core/audits/deprecations.js | rtcpMuxPolicyNegotiate": { + "message": "The `rtcpMuxPolicy` option is deprecated and will be removed." + }, + "lighthouse-core/audits/deprecations.js | rtpDataChannel": { + "message": "RTP data channels are no longer supported. The `RtpDataChannels` constraint is currently ignored, and may cause an error at a later date." + }, + "lighthouse-core/audits/deprecations.js | selectionAddRangeIntersect": { + "message": "The behavior that `Selection.addRange()` merges existing Range and the specified Range was removed." + }, + "lighthouse-core/audits/deprecations.js | sharedArrayBufferConstructedWithoutIsolation": { + "message": "`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details." + }, + "lighthouse-core/audits/deprecations.js | textToSpeech_DisallowedByAutoplay": { + "message": "`speechSynthesis.speak()` without user activation is deprecated and will be removed." + }, "lighthouse-core/audits/deprecations.js | title": { "message": "Avoids deprecated APIs" }, + "lighthouse-core/audits/deprecations.js | unknownDeprecation": { + "message": "..." + }, + "lighthouse-core/audits/deprecations.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { + "message": "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/." + }, + "lighthouse-core/audits/deprecations.js | webCodecsVideoFrameDefaultTimestamp": { + "message": "Constructing a `VideoFrame` without a timestamp is deprecated and support will be removed. Please provide a timestamp via `VideoFrameInit`." + }, + "lighthouse-core/audits/deprecations.js | xhrJSONEncodingDetection": { + "message": "UTF-16 is not supported by response json in `XMLHttpRequest`" + }, + "lighthouse-core/audits/deprecations.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { + "message": "Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help, check https://xhr.spec.whatwg.org/." + }, + "lighthouse-core/audits/deprecations.js | xrSupportsSession": { + "message": "`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead." + }, "lighthouse-core/audits/dobetterweb/charset.js | description": { "message": "A character encoding declaration is required. It can be done with a `` tag in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. [Learn more](https://web.dev/charset/)." }, diff --git a/shared/localization/locales/en-XL.json b/shared/localization/locales/en-XL.json index 4b56f816d8df..f3efc5694a54 100644 --- a/shared/localization/locales/en-XL.json +++ b/shared/localization/locales/en-XL.json @@ -746,24 +746,210 @@ "lighthouse-core/audits/csp-xss.js | title": { "message": "Êńŝúr̂é ĈŚP̂ íŝ éf̂f́êćt̂ív̂é âǵâín̂śt̂ X́ŜŚ ât́t̂áĉḱŝ" }, + "lighthouse-core/audits/deprecations.js | authorizationCoveredByWildcard": { + "message": "Âút̂h́ôŕîźât́îón̂ ẃîĺl̂ ńôt́ b̂é ĉóv̂ér̂éd̂ b́ŷ t́ĥé ŵíl̂d́ĉár̂d́ ŝým̂b́ôĺ (*) îń ĈÓR̂Ś `Access-Control-Allow-Headers` ĥán̂d́l̂ín̂ǵ." + }, + "lighthouse-core/audits/deprecations.js | canRequestURLHTTPContainingNewline": { + "message": "R̂éŝóûŕĉé r̂éq̂úêśt̂ś ŵh́ôśê ÚR̂Ĺŝ ćôńt̂áîńêd́ b̂ót̂h́ r̂ém̂óv̂éd̂ ẃĥít̂éŝṕâćê `(n|r|t)` ćĥár̂áĉt́êŕŝ án̂d́ l̂éŝś-t̂h́âń ĉh́âŕâćt̂ér̂ś (`<`) âŕê b́l̂óĉḱêd́. P̂ĺêáŝé r̂ém̂óv̂é n̂éŵĺîńêś âńd̂ én̂ćôd́ê ĺêśŝ-t́ĥán̂ ćĥár̂áĉt́êŕŝ f́r̂óm̂ ṕl̂áĉéŝ ĺîḱê él̂ém̂én̂t́ ât́t̂ŕîb́ût́ê v́âĺûéŝ ín̂ ór̂d́êŕ t̂ó l̂óâd́ t̂h́êśê ŕêśôúr̂ćêś." + }, + "lighthouse-core/audits/deprecations.js | chromeLoadTimesConnectionInfo": { + "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: Ńâv́îǵât́îón̂ T́îḿîńĝ 2." + }, + "lighthouse-core/audits/deprecations.js | chromeLoadTimesFirstPaintAfterLoadTime": { + "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: Ṕâín̂t́ T̂ím̂ín̂ǵ." + }, + "lighthouse-core/audits/deprecations.js | chromeLoadTimesWasAlternateProtocolAvailable": { + "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: `nextHopProtocol` ín̂ Ńâv́îǵât́îón̂ T́îḿîńĝ 2." + }, "lighthouse-core/audits/deprecations.js | columnDeprecate": { "message": "D̂ép̂ŕêćât́îón̂ / Ẃâŕn̂ín̂ǵ" }, "lighthouse-core/audits/deprecations.js | columnLine": { "message": "L̂ín̂é" }, + "lighthouse-core/audits/deprecations.js | cookieWithTruncatingChar": { + "message": "Ĉóôḱîéŝ ćôńt̂áîńîńĝ á `(0|r|n)` ĉh́âŕâćt̂ér̂ ẃîĺl̂ b́ê ŕêj́êćt̂éd̂ ín̂śt̂éâd́ ôf́ t̂ŕûńĉát̂éd̂." + }, + "lighthouse-core/audits/deprecations.js | crossOriginAccessBasedOnDocumentDomain": { + "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂h́îś d̂ép̂ŕêćât́îón̂ ẃâŕn̂ín̂ǵ îś f̂ór̂ á ĉŕôśŝ-ór̂íĝín̂ áĉćêśŝ t́ĥát̂ ẃâś êńâb́l̂éd̂ b́ŷ śêt́t̂ín̂ǵ `document.domain`." + }, + "lighthouse-core/audits/deprecations.js | crossOriginWindowAlert": { + "message": "T̂ŕîǵĝér̂ín̂ǵ `window.alert` f̂ŕôḿ ĉŕôśŝ ór̂íĝín̂ íf̂ŕâḿêś ĥáŝ b́êén̂ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é." + }, + "lighthouse-core/audits/deprecations.js | crossOriginWindowConfirm": { + "message": "T̂ŕîǵĝér̂ín̂ǵ `window.confirm` f̂ŕôḿ ĉŕôśŝ ór̂íĝín̂ íf̂ŕâḿêś ĥáŝ b́êén̂ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é." + }, + "lighthouse-core/audits/deprecations.js | cssSelectorInternalMediaControlsOverlayCastButton": { + "message": "T̂h́ê `disableRemotePlayback` át̂t́r̂íb̂út̂é ŝh́ôúl̂d́ b̂é ûśêd́ îń ôŕd̂ér̂ t́ô d́îśâb́l̂é t̂h́ê d́êf́âúl̂t́ Ĉáŝt́ îńt̂éĝŕât́îón̂ ín̂śt̂éâd́ ôf́ ûśîńĝ `-internal-media-controls-overlay-cast-button` śêĺêćt̂ór̂." + }, + "lighthouse-core/audits/deprecations.js | customCursorIntersectsViewport": { + "message": "Ĉúŝt́ôḿ ĉúr̂śôŕŝ ẃît́ĥ śîźê ǵr̂éât́êŕ t̂h́âń 32x̂32 D́ÎṔ îńt̂ér̂śêćt̂ín̂ǵ n̂át̂ív̂é ÛÍ îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́." + }, "lighthouse-core/audits/deprecations.js | description": { "message": "D̂ép̂ŕêćât́êd́ ÂṔÎś ŵíl̂ĺ êv́êńt̂úâĺl̂ý b̂é r̂ém̂óv̂éd̂ f́r̂óm̂ t́ĥé b̂ŕôẃŝér̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/deprecations/)." }, "lighthouse-core/audits/deprecations.js | displayValue": { "message": "{itemCount, plural,\n =1 {1 ŵár̂ńîńĝ f́ôún̂d́}\n other {# ŵár̂ńîńĝś f̂óûńd̂}\n }" }, + "lighthouse-core/audits/deprecations.js | documentDomainSettingWithoutOriginAgentClusterHeader": { + "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂ó ĉón̂t́îńûé ûśîńĝ t́ĥíŝ f́êát̂úr̂é, p̂ĺêáŝé ôṕt̂-óût́ ôf́ ôŕîǵîń-k̂éŷéd̂ áĝén̂t́ ĉĺûśt̂ér̂ś b̂ý ŝén̂d́îńĝ án̂ `Origin-Agent-Cluster: ?0` h́êád̂ér̂ ál̂ón̂ǵ ŵít̂h́ t̂h́ê H́T̂T́P̂ ŕêśp̂ón̂śê f́ôŕ t̂h́ê d́ôćûḿêńt̂ án̂d́ f̂ŕâḿêś. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/b̂ĺôǵ/îḿm̂út̂áb̂ĺê-d́ôćûḿêńt̂-d́ôḿâín̂/ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." + }, + "lighthouse-core/audits/deprecations.js | eventPath": { + "message": "`Event.path` îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́. P̂ĺêáŝé ûśê `Event.composedPath()` ín̂śt̂éâd́." + }, "lighthouse-core/audits/deprecations.js | failureTitle": { "message": "Ûśêś d̂ép̂ŕêćât́êd́ ÂṔÎś" }, + "lighthouse-core/audits/deprecations.js | feature": { + "message": "Ĉh́êćk̂ t́ĥé f̂éât́ûŕê śt̂át̂úŝ ṕâǵê f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." + }, + "lighthouse-core/audits/deprecations.js | geolocationInsecureOrigin": { + "message": "`getCurrentPosition()` âńd̂ `watchPosition()` ńô ĺôńĝér̂ ẃôŕk̂ ón̂ ín̂śêćûŕê ór̂íĝín̂ś. T̂ó ûśê t́ĥíŝ f́êát̂úr̂é, ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." + }, + "lighthouse-core/audits/deprecations.js | geolocationInsecureOriginDeprecatedNotRemoved": { + "message": "`getCurrentPosition()` âńd̂ `watchPosition()` ár̂é d̂ép̂ŕêćât́êd́ ôń îńŝéĉúr̂é ôŕîǵîńŝ. T́ô úŝé t̂h́îś f̂éât́ûŕê, ýôú ŝh́ôúl̂d́ ĉón̂śîd́êŕ ŝẃît́ĉh́îńĝ ýôúr̂ áp̂ṕl̂íĉát̂íôń t̂ó â śêćûŕê ór̂íĝín̂, śûćĥ áŝ H́T̂T́P̂Ś. Ŝéê h́t̂t́p̂ś://ĝóô.ǵl̂é/ĉh́r̂óm̂é-îńŝéĉúr̂é-ôŕîǵîńŝ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." + }, + "lighthouse-core/audits/deprecations.js | getUserMediaInsecureOrigin": { + "message": "`getUserMedia()` n̂ó l̂ón̂ǵêŕ ŵór̂ḱŝ ón̂ ín̂śêćûŕê ór̂íĝín̂ś. T̂ó ûśê t́ĥíŝ f́êát̂úr̂é, ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." + }, + "lighthouse-core/audits/deprecations.js | hostCandidateAttributeGetter": { + "message": "`RTCPeerConnectionIceErrorEvent.hostCandidate` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `RTCPeerConnectionIceErrorEvent.address` ór̂ `RTCPeerConnectionIceErrorEvent.port` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | insecurePrivateNetworkSubresourceRequest": { + "message": "T̂h́ê ẃêb́ŝít̂é r̂éq̂úêśt̂éd̂ á ŝúb̂ŕêśôúr̂ćê f́r̂óm̂ á n̂ét̂ẃôŕk̂ t́ĥát̂ ít̂ ćôúl̂d́ ôńl̂ý âćĉéŝś b̂éĉáûśê óf̂ ít̂ś ûśêŕŝ' ṕr̂ív̂íl̂éĝéd̂ ńêt́ŵór̂ḱ p̂óŝít̂íôń. T̂h́êśê ŕêq́ûéŝt́ŝ éx̂ṕôśê ńôń-p̂úb̂ĺîć d̂év̂íĉéŝ án̂d́ ŝér̂v́êŕŝ t́ô t́ĥé îńt̂ér̂ńêt́, îńĉŕêáŝín̂ǵ t̂h́ê ŕîśk̂ óf̂ á ĉŕôśŝ-śît́ê ŕêq́ûéŝt́ f̂ór̂ǵêŕŷ (ĆŜŔF̂) át̂t́âćk̂, án̂d́/ôŕ îńf̂ór̂ḿât́îón̂ ĺêák̂áĝé. T̂ó m̂ít̂íĝát̂é t̂h́êśê ŕîśk̂ś, Ĉh́r̂óm̂é d̂ép̂ŕêćât́êś r̂éq̂úêśt̂ś t̂ó n̂ón̂-ṕûb́l̂íĉ śûb́r̂éŝóûŕĉéŝ ẃĥén̂ ín̂ít̂íât́êd́ f̂ŕôḿ n̂ón̂-śêćûŕê ćôńt̂éx̂t́ŝ, án̂d́ ŵíl̂ĺ ŝt́âŕt̂ b́l̂óĉḱîńĝ t́ĥém̂." + }, + "lighthouse-core/audits/deprecations.js | legacyConstraintGoogCpuOveruseDetection": { + "message": "ĈṔÛ óv̂ér̂úŝé d̂ét̂éĉt́îón̂ íŝ én̂áb̂ĺêd́-b̂ý-d̂éf̂áûĺt̂ án̂d́ t̂h́ê áb̂íl̂ít̂ý t̂ó d̂íŝáb̂ĺê ít̂ úŝín̂ǵ `googCpuOveruseDetection` ŵíl̂ĺ ŝóôń b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." + }, + "lighthouse-core/audits/deprecations.js | legacyConstraintGoogIPv6": { + "message": "ÎṔv̂6 íŝ én̂áb̂ĺêd́-b̂ý-d̂éf̂áûĺt̂ án̂d́ t̂h́ê áb̂íl̂ít̂ý t̂ó d̂íŝáb̂ĺê ít̂ úŝín̂ǵ `googIPv6` ŵíl̂ĺ ŝóôń b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." + }, + "lighthouse-core/audits/deprecations.js | legacyConstraintGoogScreencastMinBitrate": { + "message": "Ŝćr̂éêńĉáŝt́ m̂ín̂ b́ît́r̂át̂é îś n̂óŵ śêt́ t̂ó 100 k̂b́p̂ś b̂ý d̂éf̂áûĺt̂ án̂d́ `googScreencastMinBitrate` ŵíl̂ĺ ŝóôń b̂é îǵn̂ór̂éd̂ ín̂ f́âv́ôŕ ôf́ t̂h́îś n̂éŵ d́êf́âúl̂t́. P̂ĺêáŝé ŝt́ôṕ ûśîńĝ t́ĥíŝ ĺêǵâćŷ ćôńŝt́r̂áîńt̂." + }, + "lighthouse-core/audits/deprecations.js | legacyConstraintGoogSuspendBelowMinBitrate": { + "message": "Ŝúp̂ṕôŕt̂ f́ôŕ t̂h́ê `googSuspendBelowMinBitrate` ćôńŝt́r̂áîńt̂ íŝ áb̂óût́ t̂ó b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." + }, + "lighthouse-core/audits/deprecations.js | localCSSFileExtensionRejected": { + "message": "ĈŚŜ ćâńn̂ót̂ b́ê ĺôád̂éd̂ f́r̂óm̂ `file:` ÚR̂Ĺŝ ún̂ĺêśŝ t́ĥéŷ én̂d́ îń â `.css` f́îĺê éx̂t́êńŝíôń." + }, + "lighthouse-core/audits/deprecations.js | mediaElementAudioSourceNode": { + "message": "Ĉŕêát̂ín̂ǵ â `MediaElementAudioSourceNode` ón̂ án̂ `OfflineAudioContext` íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." + }, + "lighthouse-core/audits/deprecations.js | mediaSourceAbortRemove": { + "message": "Ûśîńĝ `SourceBuffer.abort()` t́ô áb̂ór̂t́ `remove()`'ŝ áŝýn̂ćĥŕôńôúŝ ŕâńĝé r̂ém̂óv̂ál̂ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ín̂śt̂éâd́ âẃâít̂ `updateend`. `abort()` íŝ ín̂t́êńd̂éd̂ t́ô ón̂ĺŷ áb̂ór̂t́ âń âśŷńĉh́r̂ón̂óûś m̂éd̂íâ áp̂ṕêńd̂ ór̂ ŕêśêt́ p̂ár̂śêŕ ŝt́ât́ê." + }, + "lighthouse-core/audits/deprecations.js | mediaSourceDurationTruncatingBuffered": { + "message": "Ŝét̂t́îńĝ `MediaSource.duration` b́êĺôẃ t̂h́ê h́îǵĥéŝt́ p̂ŕêśêńt̂át̂íôń t̂ím̂éŝt́âḿp̂ óf̂ án̂ý b̂úf̂f́êŕêd́ ĉód̂éd̂ f́r̂ám̂éŝ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ f̂ór̂ ím̂ṕl̂íĉít̂ ŕêḿôv́âĺ ôf́ t̂ŕûńĉát̂éd̂ b́ûf́f̂ér̂éd̂ ḿêd́îá ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ín̂śt̂éâd́ p̂ér̂f́ôŕm̂ éx̂ṕl̂íĉít̂ `remove(newDuration, oldDuration)` ón̂ ál̂ĺ `sourceBuffers`, ŵh́êŕê `newDuration < oldDuration`." + }, + "lighthouse-core/audits/deprecations.js | milestone": { + "message": "T̂h́îś ĉh́âńĝé ŵíl̂ĺ ĝó îńt̂ó êf́f̂éĉt́ ŵít̂h́ m̂íl̂éŝt́ôńê {milestone}." + }, + "lighthouse-core/audits/deprecations.js | noSysexWebMIDIWithoutPermission": { + "message": "Ŵéb̂ ḾÎD́Î ẃîĺl̂ áŝḱ â ṕêŕm̂íŝśîón̂ t́ô úŝé êv́êń îf́ t̂h́ê śŷśêx́ îś n̂ót̂ śp̂éĉíf̂íêd́ îń t̂h́ê `MIDIOptions`." + }, + "lighthouse-core/audits/deprecations.js | notificationInsecureOrigin": { + "message": "T̂h́ê Ńôt́îf́îćât́îón̂ ÁP̂Í m̂áŷ ńô ĺôńĝér̂ b́ê úŝéd̂ f́r̂óm̂ ín̂śêćûŕê ór̂íĝín̂ś. Ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." + }, + "lighthouse-core/audits/deprecations.js | notificationPermissionRequestedIframe": { + "message": "P̂ér̂ḿîśŝíôń f̂ór̂ t́ĥé N̂ót̂íf̂íĉát̂íôń ÂṔÎ ḿâý n̂ó l̂ón̂ǵêŕ b̂é r̂éq̂úêśt̂éd̂ f́r̂óm̂ á ĉŕôśŝ-ór̂íĝín̂ íf̂ŕâḿê. Ýôú ŝh́ôúl̂d́ ĉón̂śîd́êŕ r̂éq̂úêśt̂ín̂ǵ p̂ér̂ḿîśŝíôń f̂ŕôḿ â t́ôṕ-l̂év̂él̂ f́r̂ám̂é ôŕ ôṕêńîńĝ á n̂éŵ ẃîńd̂óŵ ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | obsoleteWebRtcCipherSuite": { + "message": "Ŷóûŕ p̂ár̂t́n̂ér̂ íŝ ńêǵôt́îát̂ín̂ǵ âń ôb́ŝól̂ét̂é (D̂)T́L̂Ś v̂ér̂śîón̂. Ṕl̂éâśê ćĥéĉḱ ŵít̂h́ ŷóûŕ p̂ár̂t́n̂ér̂ t́ô h́âv́ê t́ĥíŝ f́îx́êd́." + }, + "lighthouse-core/audits/deprecations.js | paymentRequestBasicCard": { + "message": "T̂h́ê `basic-card` ṕâým̂én̂t́ m̂ét̂h́ôd́ îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́." + }, + "lighthouse-core/audits/deprecations.js | paymentRequestShowWithoutGesture": { + "message": "Ĉál̂ĺîńĝ `PaymentRequest.show()` ẃît́ĥóût́ ûśêŕ âćt̂ív̂át̂íôń îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́." + }, + "lighthouse-core/audits/deprecations.js | pictureSourceSrc": { + "message": "`` ŵít̂h́ â `` ṕâŕêńt̂ íŝ ín̂v́âĺîd́ âńd̂ t́ĥér̂éf̂ór̂é îǵn̂ór̂éd̂. Ṕl̂éâśê úŝé `` îńŝt́êád̂." + }, + "lighthouse-core/audits/deprecations.js | prefixedCancelAnimationFrame": { + "message": "`webkitCancelAnimationFrame` îś v̂én̂d́ôŕ-ŝṕêćîf́îć. P̂ĺêáŝé ûśê t́ĥé ŝt́âńd̂ár̂d́ `cancelAnimationFrame` îńŝt́êád̂." + }, + "lighthouse-core/audits/deprecations.js | prefixedRequestAnimationFrame": { + "message": "`webkitRequestAnimationFrame` îś v̂én̂d́ôŕ-ŝṕêćîf́îć. P̂ĺêáŝé ûśê t́ĥé ŝt́âńd̂ár̂d́ `requestAnimationFrame` îńŝt́êád̂." + }, + "lighthouse-core/audits/deprecations.js | prefixedStorageInfo": { + "message": "`window.webkitStorageInfo` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `navigator.webkitTemporaryStorage` ór̂ `navigator.webkitPersistentStorage` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoDisplayingFullscreen": { + "message": "`HTMLVideoElement.webkitDisplayingFullscreen` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Document.fullscreenElement` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoEnterFullscreen": { + "message": "`HTMLVideoElement.webkitEnterFullscreen()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Element.requestFullscreen()` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoEnterFullScreen": { + "message": "`HTMLVideoElement.webkitEnterFullScreen()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Element.requestFullscreen()` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoExitFullscreen": { + "message": "`HTMLVideoElement.webkitExitFullscreen()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Document.exitFullscreen()` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoExitFullScreen": { + "message": "`HTMLVideoElement.webkitExitFullsSreen()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Document.exitFullscreen()` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | prefixedVideoSupportsFullscreen": { + "message": "`HTMLVideoElement.webkitSupportsFullscreen` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Document.fullscreenEnabled` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | rangeExpand": { + "message": "`Range.expand()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Selection.modify()` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | requestedSubresourceWithEmbeddedCredentials": { + "message": "Ŝúb̂ŕêśôúr̂ćê ŕêq́ûéŝt́ŝ ẃĥóŝé ÛŔL̂ś ĉón̂t́âín̂ ém̂b́êd́d̂éd̂ ćr̂éd̂én̂t́îál̂ś (ê.ǵ. `https://user:pass@host/`) âŕê b́l̂óĉḱêd́." + }, + "lighthouse-core/audits/deprecations.js | rtcConstraintEnableDtlsSrtpFalse": { + "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `false` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ îś îńt̂ér̂ṕr̂ét̂éd̂ áŝ án̂ át̂t́êḿp̂t́ t̂ó ûśê t́ĥé r̂ém̂óv̂éd̂ `SDES` ḱêý n̂éĝót̂íât́îón̂ ḿêt́ĥód̂. T́ĥíŝ f́ûńĉt́îón̂ál̂ít̂ý îś r̂ém̂óv̂éd̂; úŝé â śêŕv̂íĉé t̂h́ât́ ŝúp̂ṕôŕt̂ś D̂T́L̂Ś k̂éŷ ńêǵôt́îát̂íôń îńŝt́êád̂." + }, + "lighthouse-core/audits/deprecations.js | rtcConstraintEnableDtlsSrtpTrue": { + "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `true` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ ĥád̂ ńô éf̂f́êćt̂, b́ût́ ŷóû ćâń r̂ém̂óv̂é t̂h́îś ĉón̂śt̂ŕâín̂t́ f̂ór̂ t́îd́îńêśŝ." + }, + "lighthouse-core/audits/deprecations.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { + "message": "Ĉóm̂ṕl̂éx̂ Ṕl̂án̂ B́ ŜD́P̂ d́êt́êćt̂éd̂! Ćĥŕôḿê ẃîĺl̂ śŵít̂ćĥ t́ĥé d̂éf̂áûĺt̂ `sdpSemantics` f́r̂óm̂ `plan-b` t́ô t́ĥé ŝt́âńd̂ár̂d́îźêd́ `unified-plan` f̂ór̂ḿât́ âńd̂ t́ĥíŝ ṕêér̂ ćôńn̂éĉt́îón̂ íŝ ŕêĺŷín̂ǵ ôń t̂h́ê d́êf́âúl̂t́ `sdpSemantics`. T̂h́îś ŜD́P̂ íŝ ńôt́ ĉóm̂ṕât́îb́l̂é ŵít̂h́ Ûńîf́îéd̂ Ṕl̂án̂ án̂d́ ŵíl̂ĺ b̂é r̂éĵéĉt́êd́ b̂ý ĉĺîén̂t́ŝ éx̂ṕêćt̂ín̂ǵ Ûńîf́îéd̂ Ṕl̂án̂. F́ôŕ m̂ór̂é îńf̂ór̂ḿât́îón̂ áb̂óût́ ĥóŵ t́ô ṕr̂ép̂ár̂é f̂ór̂ t́ĥé ŝẃît́ĉh́, ŝéê h́t̂t́p̂ś://ŵéb̂ŕt̂ć.ôŕĝ/ẃêb́-âṕîś/ĉh́r̂óm̂é/ûńîf́îéd̂-ṕl̂án̂/." + }, + "lighthouse-core/audits/deprecations.js | rtcPeerConnectionLegacyCreateWithMediaConstraints": { + "message": "T̂h́ê `mediaConstraints` v́êŕŝíôń ôf́ `RTCOfferOptions/RTCAnswerOptions` âŕê d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ ŝóôń b̂é r̂ém̂óv̂éd̂, ṕl̂éâśê ḿîǵr̂át̂é t̂ó t̂h́ê ṕr̂óm̂íŝé-b̂áŝéd̂ `createOffer`/`createAnswer` ín̂śt̂éâd́." + }, + "lighthouse-core/audits/deprecations.js | rtcPeerConnectionSdpSemanticsPlanB": { + "message": "P̂ĺâń B̂ ŚD̂Ṕ ŝém̂án̂t́îćŝ, ẃĥíĉh́ îś ûśêd́ ŵh́êń ĉón̂śt̂ŕûćt̂ín̂ǵ âń `RTCPeerConnection` ŵít̂h́ `{sdpSemantics:plan-b}`, îś â ĺêǵâćŷ ńôń-ŝt́âńd̂ár̂d́ v̂ér̂śîón̂ óf̂ t́ĥé Ŝéŝśîón̂ D́êśĉŕîṕt̂íôń P̂ŕôt́ôćôĺ t̂h́ât́ ĥáŝ b́êén̂ ṕêŕm̂án̂én̂t́l̂ý d̂él̂ét̂éd̂ f́r̂óm̂ t́ĥé Ŵéb̂ Ṕl̂át̂f́ôŕm̂. Ít̂ íŝ śt̂íl̂ĺ âv́âíl̂áb̂ĺê ẃĥén̂ b́ûíl̂d́îńĝ ẃît́ĥ ÍŜ_F́ÛĆĤŚÎÁ, b̂út̂ ẃê ín̂t́êńd̂ t́ô d́êĺêt́ê ít̂ áŝ śôón̂ áŝ ṕôśŝíb̂ĺê. Śt̂óp̂ d́êṕêńd̂ín̂ǵ ôń ît́. Ŝéê h́t̂t́p̂ś://ĉŕb̂úĝ.ćôḿ/1302249 f̂ór̂ śt̂át̂úŝ." + }, + "lighthouse-core/audits/deprecations.js | rtcpMuxPolicyNegotiate": { + "message": "T̂h́ê `rtcpMuxPolicy` óp̂t́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." + }, + "lighthouse-core/audits/deprecations.js | rtpDataChannel": { + "message": "R̂T́P̂ d́ât́â ćĥán̂ńêĺŝ ár̂é n̂ó l̂ón̂ǵêŕ ŝúp̂ṕôŕt̂éd̂. T́ĥé `RtpDataChannels` ĉón̂śt̂ŕâín̂t́ îś ĉúr̂ŕêńt̂ĺŷ íĝńôŕêd́, âńd̂ ḿâý ĉáûśê án̂ ér̂ŕôŕ ât́ â ĺât́êŕ d̂át̂é." + }, + "lighthouse-core/audits/deprecations.js | selectionAddRangeIntersect": { + "message": "T̂h́ê b́êh́âv́îór̂ t́ĥát̂ `Selection.addRange()` ḿêŕĝéŝ éx̂íŝt́îńĝ Ŕâńĝé âńd̂ t́ĥé ŝṕêćîf́îéd̂ Ŕâńĝé ŵáŝ ŕêḿôv́êd́." + }, + "lighthouse-core/audits/deprecations.js | sharedArrayBufferConstructedWithoutIsolation": { + "message": "`SharedArrayBuffer` ŵíl̂ĺ r̂éq̂úîŕê ćr̂óŝś-ôŕîǵîń îśôĺât́îón̂. Śêé ĥt́t̂ṕŝ://d́êv́êĺôṕêŕ.ĉh́r̂óm̂é.ĉóm̂/b́l̂óĝ/én̂áb̂ĺîńĝ-śĥár̂éd̂-ár̂ŕâý-b̂úf̂f́êŕ/ f̂ór̂ ḿôŕê d́êt́âíl̂ś." + }, + "lighthouse-core/audits/deprecations.js | textToSpeech_DisallowedByAutoplay": { + "message": "`speechSynthesis.speak()` ŵít̂h́ôút̂ úŝér̂ áĉt́îv́ât́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." + }, "lighthouse-core/audits/deprecations.js | title": { "message": "Âv́ôíd̂ś d̂ép̂ŕêćât́êd́ ÂṔÎś" }, + "lighthouse-core/audits/deprecations.js | unknownDeprecation": { + "message": "..." + }, + "lighthouse-core/audits/deprecations.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { + "message": "Êx́t̂én̂śîón̂ś ŝh́ôúl̂d́ ôṕt̂ ín̂t́ô ćr̂óŝś-ôŕîǵîń îśôĺât́îón̂ t́ô ćôńt̂ín̂úê úŝín̂ǵ `SharedArrayBuffer`. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/d̂óĉś/êx́t̂én̂śîón̂ś/m̂v́3/ĉŕôśŝ-ór̂íĝín̂-íŝól̂át̂íôń/." + }, + "lighthouse-core/audits/deprecations.js | webCodecsVideoFrameDefaultTimestamp": { + "message": "Ĉón̂śt̂ŕûćt̂ín̂ǵ â `VideoFrame` ẃît́ĥóût́ â t́îḿêśt̂ám̂ṕ îś d̂ép̂ŕêćât́êd́ âńd̂ śûṕp̂ór̂t́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê ṕr̂óv̂íd̂é â t́îḿêśt̂ám̂ṕ v̂íâ `VideoFrameInit`." + }, + "lighthouse-core/audits/deprecations.js | xhrJSONEncodingDetection": { + "message": "ÛT́F̂-16 íŝ ńôt́ ŝúp̂ṕôŕt̂éd̂ b́ŷ ŕêśp̂ón̂śê j́ŝón̂ ín̂ `XMLHttpRequest`" + }, + "lighthouse-core/audits/deprecations.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { + "message": "Ŝýn̂ćĥŕôńôúŝ `XMLHttpRequest` ón̂ t́ĥé m̂áîń t̂h́r̂éâd́ îś d̂ép̂ŕêćât́êd́ b̂éĉáûśê óf̂ ít̂ś d̂ét̂ŕîḿêńt̂ál̂ éf̂f́êćt̂ś t̂ó t̂h́ê én̂d́ ûśêŕ’ŝ éx̂ṕêŕîén̂ćê. F́ôŕ m̂ór̂é ĥél̂ṕ, ĉh́êćk̂ h́t̂t́p̂ś://x̂h́r̂.śp̂éĉ.ẃĥát̂ẃĝ.ór̂ǵ/." + }, + "lighthouse-core/audits/deprecations.js | xrSupportsSession": { + "message": "`supportsSession()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `isSessionSupported()` án̂d́ ĉh́êćk̂ t́ĥé r̂éŝól̂v́êd́ b̂óôĺêán̂ v́âĺûé îńŝt́êád̂." + }, "lighthouse-core/audits/dobetterweb/charset.js | description": { "message": "Â ćĥár̂áĉt́êŕ êńĉód̂ín̂ǵ d̂éĉĺâŕât́îón̂ íŝ ŕêq́ûír̂éd̂. Ít̂ ćâń b̂é d̂ón̂é ŵít̂h́ â `` t́âǵ îń t̂h́ê f́îŕŝt́ 1024 b̂ýt̂éŝ óf̂ t́ĥé ĤT́M̂Ĺ ôŕ îń t̂h́ê Ćôńt̂én̂t́-T̂ýp̂é ĤT́T̂Ṕ r̂éŝṕôńŝé ĥéâd́êŕ. [L̂éâŕn̂ ḿôŕê](https://web.dev/charset/)." }, diff --git a/yarn.lock b/yarn.lock index 33c52d61be96..e337c7b5b57e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3196,10 +3196,10 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -devtools-protocol@0.0.981744, devtools-protocol@0.0.995287: - version "0.0.995287" - resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.995287.tgz#843a846cff79d0f76a74818ec2d604a4fe90c2d0" - integrity sha512-HvTDDBKzY5ojCNmxAF+N+kZGQsl+hPZPIaWpG0q1BMuvUHdRwL4IrGKIH+avNLzCrImi/kKYDnsmZi7jjm0xlw== +devtools-protocol@0.0.981744, devtools-protocol@0.0.999451: + version "0.0.999451" + resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.999451.tgz#7113f2a34beb69c688e5e247980a54b5589a62d2" + integrity sha512-6TGLxJjCO2Ap+YWukCriwuFGwEmKayZ5b4oGEYnHQv1rXgaJAhBIpTWJWwsv/EBQlyPVDBxYuz3SVRs7Heq3RA== diff-sequences@^27.4.0: version "27.4.0" From b5882beb29ea8f84ed73f9ac764b1fdb2de5e7f4 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Wed, 8 Jun 2022 17:43:16 -0700 Subject: [PATCH 2/6] update to use cdt code more directly --- build/build-cdt-strings.js | 83 +++ .../audits/deprecations-strings.js | 510 +++++++++++++++ lighthouse-core/audits/deprecations.js | 593 +----------------- .../scripts/i18n/collect-strings.js | 9 - package.json | 2 +- shared/localization/locales/en-US.json | 198 +++--- shared/localization/locales/en-XL.json | 198 +++--- yarn.lock | 8 +- 8 files changed, 754 insertions(+), 847 deletions(-) create mode 100644 build/build-cdt-strings.js create mode 100644 lighthouse-core/audits/deprecations-strings.js diff --git a/build/build-cdt-strings.js b/build/build-cdt-strings.js new file mode 100644 index 000000000000..338dc194476a --- /dev/null +++ b/build/build-cdt-strings.js @@ -0,0 +1,83 @@ +/** + * @license Copyright 2022 The Lighthouse Authors. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + */ + +import fs from 'fs'; + +import {LH_ROOT} from '../root.js'; + +// eslint-disable-next-line max-len +const inFile = `${LH_ROOT}/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/DeprecationIssue.ts`; +const outFile = `${LH_ROOT}/lighthouse-core/audits/deprecations-strings.js`; + +const code = fs.readFileSync(inFile, 'utf-8'); + +/** + * @param {string} text + * @param {string|RegExp} searchValue + * @param {string} replaceValue + */ +function doReplacement(text, searchValue, replaceValue) { + const newValue = text.replace(searchValue, replaceValue); + if (newValue === text) throw new Error(`could not find: ${searchValue}`); + return newValue; +} + +/** + * @param {string} text + * @param {string} needle + * @param {string} endNeedle + * @param {[string|RegExp, string][]} replacements + */ +function extract(text, needle, endNeedle, replacements = []) { + const startIndex = text.indexOf(needle); + if (startIndex === -1) throw new Error(`could not find: ${needle}`); + const endIndex = text.indexOf(endNeedle, startIndex); + if (endIndex === -1) throw new Error(`could not find: ${endNeedle}`); + + let subText = text.substring(startIndex, endIndex + endNeedle.length); + for (const replacement of replacements) { + subText = doReplacement(subText, replacement[0], replacement[1]); + } + return subText; +} + +const uiStringsDeclare = extract(code, 'const UIStrings', '};', [ + // Some patterns are supported in DevTools UIStrings, but not ours. + [/\\\\/g, ''], + [`\\'plan-b\\'`, 'plan-b'], +]); +const getDescriptionDeclare = + extract(code, 'getDescription(): MarkdownIssueDescription', '});\n }', [ + ['getDescription(): MarkdownIssueDescription', 'function getDescription(issueDetails)'], + ['this.#issueDetails', 'issueDetails'], + [`let messageFunction = (): string => '';`, `let message;`], + [/messageFunction/g, 'message'], + [/i18nLazyString/g, 'str_'], + ['resolveLazyDescription', ''], + ['links,', 'links, message,'], + [/Protocol\.Audits\.DeprecationIssueType\.(\w+)/g, `'$1'`], + ]); + +fs.writeFileSync(outFile, `// auto-generated by build/build-cdt-strings.js +/* eslint-disable */ +'use strict'; + +const i18n = require('../lib/i18n/i18n.js'); + +${uiStringsDeclare} + +const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings); + +/** + * @param {LH.Crdp.Audits.DeprecationIssueDetails} issueDetails + */ +${getDescriptionDeclare} + +module.exports = { + getIssueDetailDescription: getDescription, + UIStrings, +}; +`); diff --git a/lighthouse-core/audits/deprecations-strings.js b/lighthouse-core/audits/deprecations-strings.js new file mode 100644 index 000000000000..4eaab0f8ff09 --- /dev/null +++ b/lighthouse-core/audits/deprecations-strings.js @@ -0,0 +1,510 @@ +// auto-generated by build/build-cdt-strings.js +/* eslint-disable */ +'use strict'; + +const i18n = require('../lib/i18n/i18n.js'); + +const UIStrings = { + // Store strings used across messages in this block. + /** + * @description This links to the chrome feature status page when one exists. + */ + feature: 'Check the feature status page for more details.', + /** + * @description This links to the chromium dash schedule when a milestone is set. + * @example {100} milestone + */ + milestone: 'This change will go into effect with milestone {milestone}.', + /** + * @description Title of issue raised when a deprecated feature is used + */ + title: 'Deprecated Feature Used', + + // Store alphabetized messages per DeprecationIssueType in this block. + /** + * @description TODO(crbug.com/1318846): Description needed for translation + */ + authorizationCoveredByWildcard: + 'Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling.', + /** + * @description This warning occurs when a page attempts to request a resource + * whose URL contained both a newline character (`\n` or `\r`), and a + * less-than character (`<`). These resources are blocked. + */ + canRequestURLHTTPContainingNewline: + 'Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources.', + /** + * @description TODO(crbug.com/1320335): Description needed for translation + */ + chromeLoadTimesConnectionInfo: + '`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2.', + /** + * @description TODO(crbug.com/1320336): Description needed for translation + */ + chromeLoadTimesFirstPaintAfterLoadTime: + '`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing.', + /** + * @description TODO(crbug.com/1320337): Description needed for translation + */ + chromeLoadTimesWasAlternateProtocolAvailable: + '`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2.', + /** + * @description TODO(crbug.com/1318847): Description needed for translation + */ + cookieWithTruncatingChar: 'Cookies containing a `(0|r|n)` character will be rejected instead of truncated.', + /** + * @description This warning occurs when a frame accesses another frame's + * data after having set `document.domain` without having set the + * `Origin-Agent-Cluster` http header. This is a companion warning to + * `documentDomainSettingWithoutOriginAgentClusterHeader`, where that + * warning occurs when `document.domain` is set, and this warning + * occurs when an access has been made, based on that previous + * `document.domain` setting. + */ + crossOriginAccessBasedOnDocumentDomain: + 'Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting `document.domain`.', + /** + * @description Issue text shown when the web page uses a deprecated web API. The placeholder is + * the deprecated web API function. + * @example {window.alert} PH1 + */ + crossOriginWindowApi: 'Triggering {PH1} from cross origin iframes has been deprecated and will be removed in the future.', + /** + * @description TODO(crbug.com/1320339): Description needed for translation + */ + cssSelectorInternalMediaControlsOverlayCastButton: + 'The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector.', + /** + * @description This message is shown when the example deprecated feature is used + */ + deprecationExample: 'This is an example of a translated deprecation issue message.', + /** + * @description This warning occurs when a script modifies `document.domain` + * without having set on `Origin-Agent-Cluster` http header. In other + * words, when a script relies on the default behaviour of + * `Origin-Agent-Cluster` when setting document.domain. + */ + documentDomainSettingWithoutOriginAgentClusterHeader: + 'Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details.', + /** + * @description Warning displayed to developers when the non-standard `Event.path` API is used to notify them that this API is deprecated. + */ + eventPath: '`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` instead.', + /** + * @description Warning displayed to developers when the Geolocation API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is no longer supported. + */ + geolocationInsecureOrigin: + '`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', + /** + * @description Warning displayed to developers when the Geolocation API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is deprecated. + */ + geolocationInsecureOriginDeprecatedNotRemoved: + '`getCurrentPosition()` and `watchPosition()` are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', + /** + * @description TODO(crbug.com/1318858): Description needed for translation + */ + getUserMediaInsecureOrigin: + '`getUserMedia()` no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', + /** + * @description A deprecation warning shown to developers in the DevTools Issues tab when code tries to use the deprecated hostCandidate field, guiding developers to use the the equivalent information in the .address and .port fields instead. + */ + hostCandidateAttributeGetter: + '`RTCPeerConnectionIceErrorEvent.hostCandidate` is deprecated. Please use `RTCPeerConnectionIceErrorEvent.address` or `RTCPeerConnectionIceErrorEvent.port` instead.', + /** + * @description TODO(crbug.com/1320343): Description needed for translation + */ + insecurePrivateNetworkSubresourceRequest: + 'The website requested a subresource from a network that it could only access because of its users\' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them.', + /** + * @description A deprecation warning shown in the DevTools Issues tab. + * It's shown when a video conferencing website attempts to disable + * use of IPv6 addresses with a non-standard API. + */ + legacyConstraintGoogIPv6: + 'IPv6 is enabled-by-default and the ability to disable it using `googIPv6` is targeted to be removed in M108, after which it will be ignored. Please stop using this legacy constraint.', + /** + * @description TODO(crbug.com/1318865): Description needed for translation + */ + localCSSFileExtensionRejected: + 'CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension.', + /** + * @description TODO(crbug.com/1320345): Description needed for translation + */ + mediaSourceAbortRemove: + 'Using `SourceBuffer.abort()` to abort `remove()`\'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should listen to the `updateend` event instead. `abort()` is intended to only abort an asynchronous media append or reset parser state.', + /** + * @description TODO(crbug.com/1320346): Description needed for translation + */ + mediaSourceDurationTruncatingBuffered: + 'Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`.', + /** + * @description TODO(crbug.com/1320347): Description needed for translation + */ + noSysexWebMIDIWithoutPermission: + 'Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`.', + /** + * @description Warning displayed to developers when the Notification API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is no longer supported. + */ + notificationInsecureOrigin: + 'The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', + /** + * @description Warning displayed to developers when permission to use notifications has been requested by a cross-origin iframe, to notify them that this use is no longer supported. + */ + notificationPermissionRequestedIframe: + 'Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead.', + /** + * @description TODO(crbug.com/1318867): Description needed for translation + */ + obsoleteWebRtcCipherSuite: + 'Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed.', + /** + * @description This issue indicates that a `` element with a `` parent was using an `src` attribute, which is not valid and is ignored by the browser. The `srcset` attribute should be used instead. + */ + pictureSourceSrc: + '`` with a `` parent is invalid and therefore ignored. Please use `` instead.', + /** + * @description Warning displayed to developers when the vendor-prefixed method is used rather than the equivalent unprefixed method. + * Both placeholders are Web API functions (single words). + * @example {webkitCancelAnimationFrame} PH1 + * @example {cancelAnimationFrame} PH2 + */ + vendorSpecificApi: '{PH1} is vendor-specific. Please use the standard {PH2} instead.', + /** + * @description Warning displayed to developers when `window.webkitStorageInfo` is used to notify that the API is deprecated. + */ + prefixedStorageInfo: + '`window.webkitStorageInfo` is deprecated. Please use `navigator.webkitTemporaryStorage` or `navigator.webkitPersistentStorage` instead.', + /** + * @description Standard message when one web API is deprecated in favor of another. Both + * placeholders are always web API functions. + * @example {HTMLVideoElement.webkitDisplayingFullscreen} PH1 + * @example {Document.fullscreenElement} PH2 + */ + deprecatedWithReplacement: '{PH1} is deprecated. Please use {PH2} instead.', + /** + * @description TODO(crbug.com/1320357): Description needed for translation + */ + requestedSubresourceWithEmbeddedCredentials: + 'Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked.', + /** + * @description A deprecation warning shown in the DevTools Issues tab. + * It's shown when a video conferencing website attempts to use a + * non-standard crypto method when performing a handshake to set up a + * connection with another endpoint. + */ + rtcConstraintEnableDtlsSrtpFalse: + 'The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES key negotiation` method. This functionality is removed; use a service that supports `DTLS key negotiation` instead.', + /** + * @description A deprecation warning shown in the DevTools Issues tab. + * It's shown when a video conferencing website uses a non-standard + * API for controlling the crypto method used, but is not having an + * effect because the desired behavior is already enabled-by-default. + */ + rtcConstraintEnableDtlsSrtpTrue: + 'The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness.', + /** + * @description A deprecation warning shown in the DevTools Issues tab. + * The `Session Description Protocol`, or `SDP` for short, is a + * protocol used by video conferencing websites to establish the + * number of audio and/or video streams to send and/or receive. This + * warning is emitted when a web site attempts to use a deprecated + * version of the protocol, called `Plan B`, that is no longer + * supported. The spec compliant version of the protocol is called + * `Unified Plan`. + */ + rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics: + '`Complex Plan B SDP` detected. This dialect of the `Session Description Protocol` is no longer supported. Please use `Unified Plan SDP` instead.', + /** + * @description A deprecation warning shown in the DevTools Issues tab. + * The `Session Description Protocol`, or `SDP` for short, is a + * protocol used by video conferencing websites to establish the + * number of audio and/or video streams to send and/or receive. This + * warning is emitted when a web site attempts to use a deprecated + * version of the protocol, called `Plan B`, that is no longer + * supported. The spec compliant version of the protocol is called + * `Unified Plan`. + */ + rtcPeerConnectionSdpSemanticsPlanB: + '`Plan B SDP semantics`, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the `Session Description Protocol` that has been permanently deleted from the Web Platform. It is still available when building with `IS_FUCHSIA`, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status.', + /** + * @description A deprecation warning shown in the DevTools Issues tab. + * It's shown then a video conferencing website attempts to use the + * `RTCP MUX` policy. + */ + rtcpMuxPolicyNegotiate: 'The `rtcpMuxPolicy` option is deprecated and will be removed.', + /** + * @description TODO(crbug.com/1318878): Description needed for translation + */ + sharedArrayBufferConstructedWithoutIsolation: + '`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.', + /** + * @description A deprecation warning shown in the DevTools Issues tab. + * It's shown when the speech synthesis API is called before the page + * receives a user activation. + */ + textToSpeech_DisallowedByAutoplay: + '`speechSynthesis.speak()` without user activation is deprecated and will be removed.', + /** + * @description TODO(crbug.com/1318879): Description needed for translation + */ + v8SharedArrayBufferConstructedInExtensionWithoutIsolation: + 'Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.', + /** + * @description TODO(crbug.com/1318881): Description needed for translation + */ + xhrJSONEncodingDetection: 'UTF-16 is not supported by response json in `XMLHttpRequest`', + /** + * @description TODO(crbug.com/1318882): Description needed for translation + */ + xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: + 'Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user\u2019s experience. For more help, check https://xhr.spec.whatwg.org/.', + /** + * @description Warning displayed to developers that instead of using + * `supportsSession()`, which returns a promise that resolves if + * the XR session can be supported and rejects if not, they should + * use `isSessionSupported()` which will return a promise which + * resolves to a boolean indicating if the XR session can be + * supported or not, but may reject to throw an exception. + */ + xrSupportsSession: + '`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead.', +}; + +const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings); + +/** + * @param {LH.Crdp.Audits.DeprecationIssueDetails} issueDetails + */ +function getDescription(issueDetails) { + let message; + let feature = 0; + let milestone = 0; + // Keep case statements alphabetized per DeprecationIssueType. + switch (issueDetails.type) { + case 'AuthorizationCoveredByWildcard': + message = str_(UIStrings.authorizationCoveredByWildcard); + milestone = 97; + break; + case 'CanRequestURLHTTPContainingNewline': + message = str_(UIStrings.canRequestURLHTTPContainingNewline); + feature = 5735596811091968; + break; + case 'ChromeLoadTimesConnectionInfo': + message = str_(UIStrings.chromeLoadTimesConnectionInfo); + feature = 5637885046816768; + break; + case 'ChromeLoadTimesFirstPaintAfterLoadTime': + message = str_(UIStrings.chromeLoadTimesFirstPaintAfterLoadTime); + feature = 5637885046816768; + break; + case 'ChromeLoadTimesWasAlternateProtocolAvailable': + message = str_(UIStrings.chromeLoadTimesWasAlternateProtocolAvailable); + feature = 5637885046816768; + break; + case 'CookieWithTruncatingChar': + message = str_(UIStrings.cookieWithTruncatingChar); + milestone = 103; + break; + case 'CrossOriginAccessBasedOnDocumentDomain': + message = str_(UIStrings.crossOriginAccessBasedOnDocumentDomain); + milestone = 106; + break; + case 'CrossOriginWindowAlert': + message = str_(UIStrings.crossOriginWindowApi, {PH1: 'window.alert'}); + break; + case 'CrossOriginWindowConfirm': + message = str_(UIStrings.crossOriginWindowApi, {PH1: 'window.confirm'}); + break; + case 'CSSSelectorInternalMediaControlsOverlayCastButton': + message = str_(UIStrings.cssSelectorInternalMediaControlsOverlayCastButton); + feature = 5714245488476160; + break; + case 'DeprecationExample': + message = str_(UIStrings.deprecationExample); + feature = 5684289032159232; + milestone = 100; + break; + case 'DocumentDomainSettingWithoutOriginAgentClusterHeader': + message = str_(UIStrings.documentDomainSettingWithoutOriginAgentClusterHeader); + milestone = 106; + break; + case 'EventPath': + message = str_(UIStrings.eventPath); + feature = 5726124632965120; + milestone = 109; + break; + case 'GeolocationInsecureOrigin': + message = str_(UIStrings.geolocationInsecureOrigin); + break; + case 'GeolocationInsecureOriginDeprecatedNotRemoved': + message = str_(UIStrings.geolocationInsecureOriginDeprecatedNotRemoved); + break; + case 'GetUserMediaInsecureOrigin': + message = str_(UIStrings.getUserMediaInsecureOrigin); + break; + case 'HostCandidateAttributeGetter': + message = str_(UIStrings.hostCandidateAttributeGetter); + break; + case 'InsecurePrivateNetworkSubresourceRequest': + message = str_(UIStrings.insecurePrivateNetworkSubresourceRequest); + feature = 5436853517811712; + milestone = 92; + break; + case 'LegacyConstraintGoogIPv6': + message = str_(UIStrings.legacyConstraintGoogIPv6); + milestone = 103; + break; + case 'LocalCSSFileExtensionRejected': + message = str_(UIStrings.localCSSFileExtensionRejected); + milestone = 64; + break; + case 'MediaSourceAbortRemove': + message = str_(UIStrings.mediaSourceAbortRemove); + feature = 6107495151960064; + break; + case 'MediaSourceDurationTruncatingBuffered': + message = str_(UIStrings.mediaSourceDurationTruncatingBuffered); + feature = 6107495151960064; + break; + case 'NoSysexWebMIDIWithoutPermission': + message = str_(UIStrings.noSysexWebMIDIWithoutPermission); + feature = 5138066234671104; + milestone = 82; + break; + case 'NotificationInsecureOrigin': + message = str_(UIStrings.notificationInsecureOrigin); + break; + case 'NotificationPermissionRequestedIframe': + message = str_(UIStrings.notificationPermissionRequestedIframe); + feature = 6451284559265792; + break; + case 'ObsoleteWebRtcCipherSuite': + message = str_(UIStrings.obsoleteWebRtcCipherSuite); + milestone = 81; + break; + case 'PictureSourceSrc': + message = str_(UIStrings.pictureSourceSrc); + break; + case 'PrefixedCancelAnimationFrame': + message = str_( + UIStrings.vendorSpecificApi, {PH1: 'webkitCancelAnimationFrame', PH2: 'cancelAnimationFrame'}); + break; + case 'PrefixedRequestAnimationFrame': + message = str_( + UIStrings.vendorSpecificApi, {PH1: 'webkitRequestAnimationFrame', PH2: 'requestAnimationFrame'}); + break; + case 'PrefixedStorageInfo': + message = str_(UIStrings.prefixedStorageInfo); + break; + case 'PrefixedVideoDisplayingFullscreen': + message = str_( + UIStrings.deprecatedWithReplacement, + {PH1: 'HTMLVideoElement.webkitDisplayingFullscreen', PH2: 'Document.fullscreenElement'}); + break; + case 'PrefixedVideoEnterFullScreen': + message = str_( + UIStrings.deprecatedWithReplacement, + {PH1: 'HTMLVideoElement.webkitEnterFullScreen()', PH2: 'Element.requestFullscreen()'}); + break; + case 'PrefixedVideoEnterFullscreen': + message = str_( + UIStrings.deprecatedWithReplacement, + {PH1: 'HTMLVideoElement.webkitEnterFullscreen()', PH2: 'Element.requestFullscreen()'}); + break; + case 'PrefixedVideoExitFullScreen': + message = str_( + UIStrings.deprecatedWithReplacement, + {PH1: 'HTMLVideoElement.webkitExitFullScreen()', PH2: 'Document.exitFullscreen()'}); + break; + case 'PrefixedVideoExitFullscreen': + message = str_( + UIStrings.deprecatedWithReplacement, + {PH1: 'HTMLVideoElement.webkitExitFullscreen()', PH2: 'Document.exitFullscreen()'}); + break; + case 'PrefixedVideoSupportsFullscreen': + message = str_( + UIStrings.deprecatedWithReplacement, + {PH1: 'HTMLVideoElement.webkitSupportsFullscreen', PH2: 'Document.fullscreenEnabled'}); + break; + case 'RangeExpand': + message = + str_(UIStrings.deprecatedWithReplacement, {PH1: 'Range.expand()', PH2: 'Selection.modify()'}); + break; + case 'RequestedSubresourceWithEmbeddedCredentials': + message = str_(UIStrings.requestedSubresourceWithEmbeddedCredentials); + feature = 5669008342777856; + break; + case 'RTCConstraintEnableDtlsSrtpFalse': + message = str_(UIStrings.rtcConstraintEnableDtlsSrtpFalse); + milestone = 97; + break; + case 'RTCConstraintEnableDtlsSrtpTrue': + message = str_(UIStrings.rtcConstraintEnableDtlsSrtpTrue); + milestone = 97; + break; + case 'RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics': + message = str_(UIStrings.rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics); + milestone = 72; + break; + case 'RTCPeerConnectionSdpSemanticsPlanB': + message = str_(UIStrings.rtcPeerConnectionSdpSemanticsPlanB); + feature = 5823036655665152; + milestone = 93; + break; + case 'RtcpMuxPolicyNegotiate': + message = str_(UIStrings.rtcpMuxPolicyNegotiate); + feature = 5654810086866944; + milestone = 62; + break; + case 'SharedArrayBufferConstructedWithoutIsolation': + message = str_(UIStrings.sharedArrayBufferConstructedWithoutIsolation); + milestone = 106; + break; + case 'TextToSpeech_DisallowedByAutoplay': + message = str_(UIStrings.textToSpeech_DisallowedByAutoplay); + feature = 5687444770914304; + milestone = 71; + break; + case 'V8SharedArrayBufferConstructedInExtensionWithoutIsolation': + message = str_(UIStrings.v8SharedArrayBufferConstructedInExtensionWithoutIsolation); + milestone = 96; + break; + case 'XHRJSONEncodingDetection': + message = str_(UIStrings.xhrJSONEncodingDetection); + milestone = 93; + break; + case 'XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload': + message = str_(UIStrings.xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload); + break; + case 'XRSupportsSession': + message = str_(UIStrings.xrSupportsSession); + milestone = 80; + break; + } + const links = []; + if (feature !== 0) { + links.push({ + link: `https://chromestatus.com/feature/${feature}`, + linkTitle: str_(UIStrings.feature), + }); + } + if (milestone !== 0) { + links.push({ + link: 'https://chromiumdash.appspot.com/schedule', + linkTitle: str_(UIStrings.milestone, {milestone}), + }); + } + return ({ + file: 'deprecation.md', + substitutions: new Map([ + ['PLACEHOLDER_title', str_(UIStrings.title)], + ['PLACEHOLDER_message', message], + ]), + links, message, + }); + } + +module.exports = { + getIssueDetailDescription: getDescription, + UIStrings, +}; diff --git a/lighthouse-core/audits/deprecations.js b/lighthouse-core/audits/deprecations.js index 7a0747d37049..f36cdc00366e 100644 --- a/lighthouse-core/audits/deprecations.js +++ b/lighthouse-core/audits/deprecations.js @@ -12,6 +12,7 @@ const Audit = require('./audit.js'); const JsBundles = require('../computed/js-bundles.js'); const i18n = require('../lib/i18n/i18n.js'); +const {getIssueDetailDescription} = require('./deprecations-strings.js'); /* eslint-disable max-len */ const UIStrings = { @@ -31,572 +32,11 @@ const UIStrings = { columnDeprecate: 'Deprecation / Warning', /** Table column header for line of code (eg. 432) that is using a deprecated API. */ columnLine: 'Line', - - /** This links to the chrome feature status page when one exists. */ - feature: 'Check the feature status page for more details.', - /** - * @description This links to the chromium dash schedule when a milestone is set. - * @example {100} milestone - */ - milestone: 'This change will go into effect with milestone {milestone}.', - - /** - * @description TODO(crbug.com/1318846): Description needed for translation - */ - authorizationCoveredByWildcard: - 'Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling.', - /** - *@description TODO(crbug.com/1320334): Description needed for translation - */ - canRequestURLHTTPContainingNewline: - 'Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources.', - /** - *@description TODO(crbug.com/1320335): Description needed for translation - */ - chromeLoadTimesConnectionInfo: - '`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2.', - /** - *@description TODO(crbug.com/1320336): Description needed for translation - */ - chromeLoadTimesFirstPaintAfterLoadTime: - '`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing.', - /** - *@description TODO(crbug.com/1320337): Description needed for translation - */ - chromeLoadTimesWasAlternateProtocolAvailable: - '`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2.', - /** - *@description TODO(crbug.com/1318847): Description needed for translation - */ - cookieWithTruncatingChar: 'Cookies containing a `(0|r|n)` character will be rejected instead of truncated.', - /** - *@description This warning occurs when a frame accesses another frame's - * data after having set `document.domain` without having set the - * `Origin-Agent-Cluster` http header. This is a companion warning to - * `documentDomainSettingWithoutOriginAgentClusterHeader`, where that - * warning occurs when `document.domain` is set, and this warning - * occurs when an access has been made, based on that previous - * `document.domain` setting. - */ - crossOriginAccessBasedOnDocumentDomain: - 'Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting `document.domain`.', - /** - *@description TODO(crbug.com/1318850): Description needed for translation - */ - crossOriginWindowAlert: - 'Triggering `window.alert` from cross origin iframes has been deprecated and will be removed in the future.', - /** - *@description TODO(crbug.com/1318851): Description needed for translation - */ - crossOriginWindowConfirm: - 'Triggering `window.confirm` from cross origin iframes has been deprecated and will be removed in the future.', - /** - *@description TODO(crbug.com/1320339): Description needed for translation - */ - cssSelectorInternalMediaControlsOverlayCastButton: - 'The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector.', - /** - *@description TODO(crbug.com/1320340): Description needed for translation - */ - customCursorIntersectsViewport: - 'Custom cursors with size greater than 32x32 DIP intersecting native UI is deprecated and will be removed.', - /** - *@description This warning occurs when a script modifies `document.domain` - * without having set on `Origin-Agent-Cluster` http header. In other - * words, when a script relies on the default behaviour of - * `Origin-Agent-Cluster` when setting document.domain. - */ - documentDomainSettingWithoutOriginAgentClusterHeader: - 'Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details.', - /** - *@description Warning displayed to developers when the non-standard `Event.path` API is used to notify them that this API is deprecated. - */ - eventPath: '`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` instead.', - /** - *@description Warning displayed to developers when the Geolocation API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is no longer supported. - */ - geolocationInsecureOrigin: - '`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', - /** - *@description Warning displayed to developers when the Geolocation API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is deprecated. - */ - geolocationInsecureOriginDeprecatedNotRemoved: - '`getCurrentPosition()` and `watchPosition()` are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', - /** - *@description TODO(crbug.com/1318858): Description needed for translation - */ - getUserMediaInsecureOrigin: - '`getUserMedia()` no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', - /** - *@description TODO(crbug.com/1320342): Description needed for translation - */ - hostCandidateAttributeGetter: - '`RTCPeerConnectionIceErrorEvent.hostCandidate` is deprecated. Please use `RTCPeerConnectionIceErrorEvent.address` or `RTCPeerConnectionIceErrorEvent.port` instead.', - /** - *@description TODO(crbug.com/1320343): Description needed for translation - */ - insecurePrivateNetworkSubresourceRequest: - 'The website requested a subresource from a network that it could only access because of its users\' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them.', - /** - *@description TODO(crbug.com/1318860): Description needed for translation - */ - legacyConstraintGoogCpuOveruseDetection: - 'CPU overuse detection is enabled-by-default and the ability to disable it using `googCpuOveruseDetection` will soon be removed. Please stop using this legacy constraint.', - /** - *@description TODO(crbug.com/1318861): Description needed for translation - */ - legacyConstraintGoogIPv6: - 'IPv6 is enabled-by-default and the ability to disable it using `googIPv6` will soon be removed. Please stop using this legacy constraint.', - /** - *@description TODO(crbug.com/1318863): Description needed for translation - */ - legacyConstraintGoogScreencastMinBitrate: - 'Screencast min bitrate is now set to 100 kbps by default and `googScreencastMinBitrate` will soon be ignored in favor of this new default. Please stop using this legacy constraint.', - /** - *@description TODO(crbug.com/1318864): Description needed for translation - */ - legacyConstraintGoogSuspendBelowMinBitrate: - 'Support for the `googSuspendBelowMinBitrate` constraint is about to be removed. Please stop using this legacy constraint.', - /** - *@description TODO(crbug.com/1318865): Description needed for translation - */ - localCSSFileExtensionRejected: - 'CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension.', - /** - *@description TODO(crbug.com/1320344): Description needed for translation - */ - mediaElementAudioSourceNode: - 'Creating a `MediaElementAudioSourceNode` on an `OfflineAudioContext` is deprecated and will be removed.', - /** - *@description TODO(crbug.com/1320345): Description needed for translation - */ - mediaSourceAbortRemove: - 'Using `SourceBuffer.abort()` to abort `remove()`\'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should instead await `updateend`. `abort()` is intended to only abort an asynchronous media append or reset parser state.', - /** - *@description TODO(crbug.com/1320346): Description needed for translation - */ - mediaSourceDurationTruncatingBuffered: - 'Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`.', - /** - *@description TODO(crbug.com/1320347): Description needed for translation - */ - noSysexWebMIDIWithoutPermission: - 'Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`.', - /** - *@description Warning displayed to developers when the Notification API is used from an insecure origin (one that isn't localhost or doesn't use HTTPS) to notify them that this use is no longer supported. - */ - notificationInsecureOrigin: - 'The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details.', - /** - *@description Warning displayed to developers when permission to use notifications has been requested by a cross-origin iframe, to notify them that this use is no longer supported. - */ - notificationPermissionRequestedIframe: - 'Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead.', - /** - *@description TODO(crbug.com/1318867): Description needed for translation - */ - obsoleteWebRtcCipherSuite: - 'Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed.', - /** - *@description TODO(crbug.com/1320349): Description needed for translation - */ - paymentRequestBasicCard: 'The `basic-card` payment method is deprecated and will be removed.', - /** - *@description TODO(crbug.com/1320350): Description needed for translation - */ - paymentRequestShowWithoutGesture: - 'Calling `PaymentRequest.show()` without user activation is deprecated and will be removed.', - /** - *@description This issue indicates that a `` element with a `` parent was using an `src` attribute, which is not valid and is ignored by the browser. The `srcset` attribute should be used instead. - */ - pictureSourceSrc: - '`` with a `` parent is invalid and therefore ignored. Please use `` instead.', - /** - *@description Warning displayed to developers when the vendor-prefixed method is used rather than the equivalent unprefixed method. - */ - prefixedCancelAnimationFrame: - '`webkitCancelAnimationFrame` is vendor-specific. Please use the standard `cancelAnimationFrame` instead.', - /** - *@description Warning displayed to developers when the vendor-prefixed method is used rather than the equivalent unprefixed method. - */ - prefixedRequestAnimationFrame: - '`webkitRequestAnimationFrame` is vendor-specific. Please use the standard `requestAnimationFrame` instead.', - /** - *@description TODO(crbug.com/1320351): Description needed for translation - */ - prefixedStorageInfo: - '`window.webkitStorageInfo` is deprecated. Please use `navigator.webkitTemporaryStorage` or `navigator.webkitPersistentStorage` instead.', - /** - *@description TODO(crbug.com/1320352): Description needed for translation - */ - prefixedVideoDisplayingFullscreen: - '`HTMLVideoElement.webkitDisplayingFullscreen` is deprecated. Please use `Document.fullscreenElement` instead.', - /** - *@description TODO(crbug.com/1320353): Description needed for translation - */ - prefixedVideoEnterFullScreen: - '`HTMLVideoElement.webkitEnterFullScreen()` is deprecated. Please use `Element.requestFullscreen()` instead.', - /** - *@description TODO(crbug.com/1320353): Description needed for translation - */ - prefixedVideoEnterFullscreen: - '`HTMLVideoElement.webkitEnterFullscreen()` is deprecated. Please use `Element.requestFullscreen()` instead.', - /** - *@description TODO(crbug.com/1320354): Description needed for translation - */ - prefixedVideoExitFullScreen: - '`HTMLVideoElement.webkitExitFullsSreen()` is deprecated. Please use `Document.exitFullscreen()` instead.', - /** - *@description TODO(crbug.com/1320354): Description needed for translation - */ - prefixedVideoExitFullscreen: - '`HTMLVideoElement.webkitExitFullscreen()` is deprecated. Please use `Document.exitFullscreen()` instead.', - /** - *@description TODO(crbug.com/1320355): Description needed for translation - */ - prefixedVideoSupportsFullscreen: - '`HTMLVideoElement.webkitSupportsFullscreen` is deprecated. Please use `Document.fullscreenEnabled` instead.', - /** - *@description TODO(crbug.com/1320356): Description needed for translation - */ - rangeExpand: '`Range.expand()` is deprecated. Please use `Selection.modify()` instead.', - /** - *@description TODO(crbug.com/1320357): Description needed for translation - */ - requestedSubresourceWithEmbeddedCredentials: - 'Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked.', - /** - *@description TODO(crbug.com/1318872): Description needed for translation - */ - rtcConstraintEnableDtlsSrtpFalse: - 'The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES` key negotiation method. This functionality is removed; use a service that supports DTLS key negotiation instead.', - /** - *@description TODO(crbug.com/1318873): Description needed for translation - */ - rtcConstraintEnableDtlsSrtpTrue: - 'The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness.', - /** - *@description TODO(crbug.com/1318874): Description needed for translation - */ - rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics: - 'Complex Plan B SDP detected! Chrome will switch the default `sdpSemantics` from `plan-b` to the standardized `unified-plan` format and this peer connection is relying on the default `sdpSemantics`. This SDP is not compatible with Unified Plan and will be rejected by clients expecting Unified Plan. For more information about how to prepare for the switch, see https://webrtc.org/web-apis/chrome/unified-plan/.', - /** - *@description TODO(crbug.com/1318875): Description needed for translation - */ - rtcPeerConnectionLegacyCreateWithMediaConstraints: - 'The `mediaConstraints` version of `RTCOfferOptions/RTCAnswerOptions` are deprecated and will soon be removed, please migrate to the promise-based `createOffer`/`createAnswer` instead.', - /** - *@description TODO(crbug.com/1320358): Description needed for translation - */ - rtcPeerConnectionSdpSemanticsPlanB: - 'Plan B SDP semantics, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the Session Description Protocol that has been permanently deleted from the Web Platform. It is still available when building with IS_FUCHSIA, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status.', - /** - *@description TODO(crbug.com/1320360): Description needed for translation - */ - rtcpMuxPolicyNegotiate: 'The `rtcpMuxPolicy` option is deprecated and will be removed.', - /** - *@description TODO(crbug.com/1318876): Description needed for translation - */ - rtpDataChannel: - 'RTP data channels are no longer supported. The `RtpDataChannels` constraint is currently ignored, and may cause an error at a later date.', - /** - *@description TODO(crbug.com/1320361): Description needed for translation - */ - selectionAddRangeIntersect: - 'The behavior that `Selection.addRange()` merges existing Range and the specified Range was removed.', - /** - *@description TODO(crbug.com/1318878): Description needed for translation - */ - sharedArrayBufferConstructedWithoutIsolation: - '`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details.', - /** - *@description TODO(crbug.com/1320363): Description needed for translation - */ - textToSpeech_DisallowedByAutoplay: - '`speechSynthesis.speak()` without user activation is deprecated and will be removed.', - /** - *@description TODO(crbug.com/1318879): Description needed for translation - */ - v8SharedArrayBufferConstructedInExtensionWithoutIsolation: - 'Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/.', - /** - *@description TODO(crbug.com/1318880): Description needed for translation - */ - webCodecsVideoFrameDefaultTimestamp: - 'Constructing a `VideoFrame` without a timestamp is deprecated and support will be removed. Please provide a timestamp via `VideoFrameInit`.', - /** - *@description TODO(crbug.com/1318881): Description needed for translation - */ - xhrJSONEncodingDetection: 'UTF-16 is not supported by response json in `XMLHttpRequest`', - /** - *@description TODO(crbug.com/1318882): Description needed for translation - */ - xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload: - 'Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user\u2019s experience. For more help, check https://xhr.spec.whatwg.org/.', - /** - *@description TODO(crbug.com/1320365): Description needed for translation - */ - xrSupportsSession: - '`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead.', - /** ... */ - unknownDeprecation: '...', }; /* eslint-enable max-len */ const str_ = i18n.createMessageInstanceIdFn(__filename, UIStrings); -/** - * @param {LH.Crdp.Audits.DeprecationIssueDetails} deprecation - */ -function getMeta(deprecation) { - let message; - let feature = 0; - let milestone = 0; - // @ts-expect-error - const legacyMessage = /** @type {string=} */ (deprecation.message); - - switch (deprecation.type) { - case 'AuthorizationCoveredByWildcard': - message = str_(UIStrings.authorizationCoveredByWildcard); - milestone = 97; - break; - case 'CanRequestURLHTTPContainingNewline': - message = str_(UIStrings.canRequestURLHTTPContainingNewline); - feature = 5735596811091968; - break; - case 'ChromeLoadTimesConnectionInfo': - message = str_(UIStrings.chromeLoadTimesConnectionInfo); - feature = 5637885046816768; - break; - case 'ChromeLoadTimesFirstPaintAfterLoadTime': - message = str_(UIStrings.chromeLoadTimesFirstPaintAfterLoadTime); - feature = 5637885046816768; - break; - case 'ChromeLoadTimesWasAlternateProtocolAvailable': - message = str_(UIStrings.chromeLoadTimesWasAlternateProtocolAvailable); - feature = 5637885046816768; - break; - case 'CookieWithTruncatingChar': - message = str_(UIStrings.cookieWithTruncatingChar); - milestone = 103; - break; - case 'CrossOriginAccessBasedOnDocumentDomain': - message = str_(UIStrings.crossOriginAccessBasedOnDocumentDomain); - milestone = 106; - break; - case 'CrossOriginWindowAlert': - message = str_(UIStrings.crossOriginWindowAlert); - break; - case 'CrossOriginWindowConfirm': - message = str_(UIStrings.crossOriginWindowConfirm); - break; - case 'CSSSelectorInternalMediaControlsOverlayCastButton': - message = str_(UIStrings.cssSelectorInternalMediaControlsOverlayCastButton); - feature = 5714245488476160; - break; - case 'CustomCursorIntersectsViewport': - message = str_(UIStrings.customCursorIntersectsViewport); - feature = 5825971391299584; - milestone = 75; - break; - case 'DocumentDomainSettingWithoutOriginAgentClusterHeader': - message = str_(UIStrings.documentDomainSettingWithoutOriginAgentClusterHeader); - milestone = 106; - break; - case 'EventPath': - message = str_(UIStrings.eventPath); - feature = 5726124632965120; - milestone = 109; - break; - case 'GeolocationInsecureOrigin': - message = str_(UIStrings.geolocationInsecureOrigin); - break; - case 'GeolocationInsecureOriginDeprecatedNotRemoved': - message = str_(UIStrings.geolocationInsecureOriginDeprecatedNotRemoved); - break; - case 'GetUserMediaInsecureOrigin': - message = str_(UIStrings.getUserMediaInsecureOrigin); - break; - case 'HostCandidateAttributeGetter': - message = str_(UIStrings.hostCandidateAttributeGetter); - break; - case 'InsecurePrivateNetworkSubresourceRequest': - message = str_(UIStrings.insecurePrivateNetworkSubresourceRequest); - feature = 5436853517811712; - milestone = 92; - break; - case 'LegacyConstraintGoogCpuOveruseDetection': - message = str_(UIStrings.legacyConstraintGoogCpuOveruseDetection); - milestone = 103; - break; - case 'LegacyConstraintGoogIPv6': - message = str_(UIStrings.legacyConstraintGoogIPv6); - milestone = 103; - break; - case 'LegacyConstraintGoogScreencastMinBitrate': - message = str_(UIStrings.legacyConstraintGoogScreencastMinBitrate); - milestone = 103; - break; - case 'LegacyConstraintGoogSuspendBelowMinBitrate': - message = str_(UIStrings.legacyConstraintGoogSuspendBelowMinBitrate); - milestone = 103; - break; - case 'LocalCSSFileExtensionRejected': - message = str_(UIStrings.localCSSFileExtensionRejected); - milestone = 64; - break; - case 'MediaElementAudioSourceNode': - message = str_(UIStrings.mediaElementAudioSourceNode); - feature = 5258622686724096; - milestone = 71; - break; - case 'MediaSourceAbortRemove': - message = str_(UIStrings.mediaSourceAbortRemove); - feature = 6107495151960064; - break; - case 'MediaSourceDurationTruncatingBuffered': - message = str_(UIStrings.mediaSourceDurationTruncatingBuffered); - feature = 6107495151960064; - break; - case 'NoSysexWebMIDIWithoutPermission': - message = str_(UIStrings.noSysexWebMIDIWithoutPermission); - feature = 5138066234671104; - milestone = 82; - break; - case 'NotificationInsecureOrigin': - message = str_(UIStrings.notificationInsecureOrigin); - break; - case 'NotificationPermissionRequestedIframe': - message = str_(UIStrings.notificationPermissionRequestedIframe); - feature = 6451284559265792; - break; - case 'ObsoleteWebRtcCipherSuite': - message = str_(UIStrings.obsoleteWebRtcCipherSuite); - milestone = 81; - break; - case 'PaymentRequestBasicCard': - message = str_(UIStrings.paymentRequestBasicCard); - feature = 5730051011117056; - milestone = 100; - break; - case 'PaymentRequestShowWithoutGesture': - message = str_(UIStrings.paymentRequestShowWithoutGesture); - feature = 5948593429020672; - milestone = 102; - break; - case 'PictureSourceSrc': - message = str_(UIStrings.pictureSourceSrc); - break; - case 'PrefixedCancelAnimationFrame': - message = str_(UIStrings.prefixedCancelAnimationFrame); - break; - case 'PrefixedRequestAnimationFrame': - message = str_(UIStrings.prefixedRequestAnimationFrame); - break; - case 'PrefixedStorageInfo': - message = str_(UIStrings.prefixedStorageInfo); - break; - case 'PrefixedVideoDisplayingFullscreen': - message = str_(UIStrings.prefixedVideoDisplayingFullscreen); - break; - case 'PrefixedVideoEnterFullScreen': - message = str_(UIStrings.prefixedVideoEnterFullScreen); - break; - case 'PrefixedVideoEnterFullscreen': - message = str_(UIStrings.prefixedVideoEnterFullscreen); - break; - case 'PrefixedVideoExitFullScreen': - message = str_(UIStrings.prefixedVideoExitFullScreen); - break; - case 'PrefixedVideoExitFullscreen': - message = str_(UIStrings.prefixedVideoExitFullscreen); - break; - case 'PrefixedVideoSupportsFullscreen': - message = str_(UIStrings.prefixedVideoSupportsFullscreen); - break; - case 'RangeExpand': - message = str_(UIStrings.rangeExpand); - break; - case 'RequestedSubresourceWithEmbeddedCredentials': - message = str_(UIStrings.requestedSubresourceWithEmbeddedCredentials); - feature = 5669008342777856; - break; - case 'RTCConstraintEnableDtlsSrtpFalse': - message = str_(UIStrings.rtcConstraintEnableDtlsSrtpFalse); - milestone = 97; - break; - case 'RTCConstraintEnableDtlsSrtpTrue': - message = str_(UIStrings.rtcConstraintEnableDtlsSrtpTrue); - milestone = 97; - break; - case 'RTCPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics': - message = str_(UIStrings.rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics); - milestone = 72; - break; - case 'RTCPeerConnectionLegacyCreateWithMediaConstraints': - message = str_(UIStrings.rtcPeerConnectionLegacyCreateWithMediaConstraints); - milestone = 103; - break; - case 'RTCPeerConnectionSdpSemanticsPlanB': - message = str_(UIStrings.rtcPeerConnectionSdpSemanticsPlanB); - feature = 5823036655665152; - milestone = 93; - break; - case 'RtcpMuxPolicyNegotiate': - message = str_(UIStrings.rtcpMuxPolicyNegotiate); - feature = 5654810086866944; - milestone = 62; - break; - case 'RTPDataChannel': - message = str_(UIStrings.rtpDataChannel); - milestone = 88; - break; - case 'SelectionAddRangeIntersect': - message = str_(UIStrings.selectionAddRangeIntersect); - feature = 6680566019653632; - break; - case 'SharedArrayBufferConstructedWithoutIsolation': - message = str_(UIStrings.sharedArrayBufferConstructedWithoutIsolation); - milestone = 106; - break; - case 'TextToSpeech_DisallowedByAutoplay': - message = str_(UIStrings.textToSpeech_DisallowedByAutoplay); - feature = 5687444770914304; - milestone = 71; - break; - case 'V8SharedArrayBufferConstructedInExtensionWithoutIsolation': - message = str_(UIStrings.v8SharedArrayBufferConstructedInExtensionWithoutIsolation); - milestone = 96; - break; - // @ts-expect-error ??? - case 'WebCodecsVideoFrameDefaultTimestamp': - message = str_(UIStrings.webCodecsVideoFrameDefaultTimestamp); - feature = 5667793157488640; - milestone = 99; - break; - case 'XHRJSONEncodingDetection': - message = str_(UIStrings.xhrJSONEncodingDetection); - milestone = 93; - break; - case 'XMLHttpRequestSynchronousInNonWorkerOutsideBeforeUnload': - message = str_(UIStrings.xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload); - break; - case 'XRSupportsSession': - message = str_(UIStrings.xrSupportsSession); - milestone = 80; - break; - default: - message = legacyMessage || str_(UIStrings.unknownDeprecation); - break; - } - - return { - message, - milestone, - feature, - }; -} - class Deprecations extends Audit { /** * @return {LH.Audit.Meta} @@ -623,36 +63,27 @@ class Deprecations extends Audit { .map(deprecation => { const {scriptId, url, lineNumber, columnNumber} = deprecation.sourceCodeLocation; const bundle = bundles.find(bundle => bundle.script.scriptId === scriptId); - const deprecationMeta = getMeta(deprecation); - - const links = []; - if (deprecationMeta.feature) { - links.push({ - type: 'link', - url: `https://chromestatus.com/feature/${deprecationMeta.feature}`, - text: str_(UIStrings.feature), - }); - } - if (deprecationMeta.milestone) { - links.push({ - type: 'link', - url: 'https://chromiumdash.appspot.com/schedule', - text: str_(UIStrings.milestone, {milestone: deprecationMeta.milestone}), - }); - } + const deprecationMeta = getIssueDetailDescription(deprecation); /** @type {LH.Audit.Details.TableSubItems=} */ let subItems = undefined; - if (links.length) { + if (deprecationMeta.links.length) { subItems = { type: 'subitems', - items: links, + items: deprecationMeta.links.map(link => ({ + type: 'link', + url: link.link, + text: link.linkTitle, + })), }; } + // @ts-expect-error: The english string used to be included on the protocol, but no longer is. + const legacyMessage = deprecation.message; + /** @type {LH.Audit.Details.TableItem} */ const item = { - value: deprecationMeta.message || '', + value: deprecationMeta.message || legacyMessage || deprecation.type, // Protocol.Audits.SourceCodeLocation.columnNumber is 1-indexed, but we use 0-indexed. source: Audit.makeSourceLocation(url, lineNumber, columnNumber - 1, bundle), subItems, diff --git a/lighthouse-core/scripts/i18n/collect-strings.js b/lighthouse-core/scripts/i18n/collect-strings.js index d8479038b0fb..1eebe0da29d0 100644 --- a/lighthouse-core/scripts/i18n/collect-strings.js +++ b/lighthouse-core/scripts/i18n/collect-strings.js @@ -652,13 +652,6 @@ function resolveMessageCollisions(strings) { try { expect(collidingMessages).toEqual([ - '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', - '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', - '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', - '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', - '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', - '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', - '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ instead.', '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ or $MARKDOWN_SNIPPET_2$ instead.', '$MARKDOWN_SNIPPET_0$ is deprecated. Please use $MARKDOWN_SNIPPET_1$ or $MARKDOWN_SNIPPET_2$ instead.', 'ARIA $MARKDOWN_SNIPPET_0$ elements do not have accessible names.', @@ -682,8 +675,6 @@ function resolveMessageCollisions(strings) { 'Name', 'Potential Savings', 'Potential Savings', - 'Triggering $MARKDOWN_SNIPPET_0$ from cross origin iframes has been deprecated and will be removed in the future.', - 'Triggering $MARKDOWN_SNIPPET_0$ from cross origin iframes has been deprecated and will be removed in the future.', 'Use the $MARKDOWN_SNIPPET_0$ component and set the appropriate $MARKDOWN_SNIPPET_1$. $LINK_START_0$Learn more$LINK_END_0$.', 'Use the $MARKDOWN_SNIPPET_0$ component and set the appropriate $MARKDOWN_SNIPPET_1$. $LINK_START_0$Learn more$LINK_END_0$.', ]); diff --git a/package.json b/package.json index b69a6746e95b..564e8601886d 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "archiver": "^3.0.0", "c8": "^7.4.0", "chalk": "^2.4.1", - "chrome-devtools-frontend": "1.0.922924", + "chrome-devtools-frontend": "1.0.1011873", "concurrently": "^6.4.0", "conventional-changelog-cli": "^2.1.1", "cpy": "^8.1.2", diff --git a/shared/localization/locales/en-US.json b/shared/localization/locales/en-US.json index db28db85d5f9..80401757dc56 100644 --- a/shared/localization/locales/en-US.json +++ b/shared/localization/locales/en-US.json @@ -746,210 +746,156 @@ "lighthouse-core/audits/csp-xss.js | title": { "message": "Ensure CSP is effective against XSS attacks" }, - "lighthouse-core/audits/deprecations.js | authorizationCoveredByWildcard": { + "lighthouse-core/audits/deprecations-strings.js | authorizationCoveredByWildcard": { "message": "Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling." }, - "lighthouse-core/audits/deprecations.js | canRequestURLHTTPContainingNewline": { + "lighthouse-core/audits/deprecations-strings.js | canRequestURLHTTPContainingNewline": { "message": "Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources." }, - "lighthouse-core/audits/deprecations.js | chromeLoadTimesConnectionInfo": { + "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesConnectionInfo": { "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2." }, - "lighthouse-core/audits/deprecations.js | chromeLoadTimesFirstPaintAfterLoadTime": { + "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesFirstPaintAfterLoadTime": { "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing." }, - "lighthouse-core/audits/deprecations.js | chromeLoadTimesWasAlternateProtocolAvailable": { + "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesWasAlternateProtocolAvailable": { "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2." }, - "lighthouse-core/audits/deprecations.js | columnDeprecate": { - "message": "Deprecation / Warning" - }, - "lighthouse-core/audits/deprecations.js | columnLine": { - "message": "Line" - }, - "lighthouse-core/audits/deprecations.js | cookieWithTruncatingChar": { + "lighthouse-core/audits/deprecations-strings.js | cookieWithTruncatingChar": { "message": "Cookies containing a `(0|r|n)` character will be rejected instead of truncated." }, - "lighthouse-core/audits/deprecations.js | crossOriginAccessBasedOnDocumentDomain": { + "lighthouse-core/audits/deprecations-strings.js | crossOriginAccessBasedOnDocumentDomain": { "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting `document.domain`." }, - "lighthouse-core/audits/deprecations.js | crossOriginWindowAlert": { - "message": "Triggering `window.alert` from cross origin iframes has been deprecated and will be removed in the future." - }, - "lighthouse-core/audits/deprecations.js | crossOriginWindowConfirm": { - "message": "Triggering `window.confirm` from cross origin iframes has been deprecated and will be removed in the future." + "lighthouse-core/audits/deprecations-strings.js | crossOriginWindowApi": { + "message": "Triggering {PH1} from cross origin iframes has been deprecated and will be removed in the future." }, - "lighthouse-core/audits/deprecations.js | cssSelectorInternalMediaControlsOverlayCastButton": { + "lighthouse-core/audits/deprecations-strings.js | cssSelectorInternalMediaControlsOverlayCastButton": { "message": "The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector." }, - "lighthouse-core/audits/deprecations.js | customCursorIntersectsViewport": { - "message": "Custom cursors with size greater than 32x32 DIP intersecting native UI is deprecated and will be removed." + "lighthouse-core/audits/deprecations-strings.js | deprecatedWithReplacement": { + "message": "{PH1} is deprecated. Please use {PH2} instead." }, - "lighthouse-core/audits/deprecations.js | description": { - "message": "Deprecated APIs will eventually be removed from the browser. [Learn more](https://web.dev/deprecations/)." + "lighthouse-core/audits/deprecations-strings.js | deprecationExample": { + "message": "This is an example of a translated deprecation issue message." }, - "lighthouse-core/audits/deprecations.js | displayValue": { - "message": "{itemCount, plural,\n =1 {1 warning found}\n other {# warnings found}\n }" - }, - "lighthouse-core/audits/deprecations.js | documentDomainSettingWithoutOriginAgentClusterHeader": { + "lighthouse-core/audits/deprecations-strings.js | documentDomainSettingWithoutOriginAgentClusterHeader": { "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details." }, - "lighthouse-core/audits/deprecations.js | eventPath": { + "lighthouse-core/audits/deprecations-strings.js | eventPath": { "message": "`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` instead." }, - "lighthouse-core/audits/deprecations.js | failureTitle": { - "message": "Uses deprecated APIs" - }, - "lighthouse-core/audits/deprecations.js | feature": { + "lighthouse-core/audits/deprecations-strings.js | feature": { "message": "Check the feature status page for more details." }, - "lighthouse-core/audits/deprecations.js | geolocationInsecureOrigin": { + "lighthouse-core/audits/deprecations-strings.js | geolocationInsecureOrigin": { "message": "`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." }, - "lighthouse-core/audits/deprecations.js | geolocationInsecureOriginDeprecatedNotRemoved": { + "lighthouse-core/audits/deprecations-strings.js | geolocationInsecureOriginDeprecatedNotRemoved": { "message": "`getCurrentPosition()` and `watchPosition()` are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." }, - "lighthouse-core/audits/deprecations.js | getUserMediaInsecureOrigin": { + "lighthouse-core/audits/deprecations-strings.js | getUserMediaInsecureOrigin": { "message": "`getUserMedia()` no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." }, - "lighthouse-core/audits/deprecations.js | hostCandidateAttributeGetter": { + "lighthouse-core/audits/deprecations-strings.js | hostCandidateAttributeGetter": { "message": "`RTCPeerConnectionIceErrorEvent.hostCandidate` is deprecated. Please use `RTCPeerConnectionIceErrorEvent.address` or `RTCPeerConnectionIceErrorEvent.port` instead." }, - "lighthouse-core/audits/deprecations.js | insecurePrivateNetworkSubresourceRequest": { + "lighthouse-core/audits/deprecations-strings.js | insecurePrivateNetworkSubresourceRequest": { "message": "The website requested a subresource from a network that it could only access because of its users' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them." }, - "lighthouse-core/audits/deprecations.js | legacyConstraintGoogCpuOveruseDetection": { - "message": "CPU overuse detection is enabled-by-default and the ability to disable it using `googCpuOveruseDetection` will soon be removed. Please stop using this legacy constraint." - }, - "lighthouse-core/audits/deprecations.js | legacyConstraintGoogIPv6": { - "message": "IPv6 is enabled-by-default and the ability to disable it using `googIPv6` will soon be removed. Please stop using this legacy constraint." - }, - "lighthouse-core/audits/deprecations.js | legacyConstraintGoogScreencastMinBitrate": { - "message": "Screencast min bitrate is now set to 100 kbps by default and `googScreencastMinBitrate` will soon be ignored in favor of this new default. Please stop using this legacy constraint." - }, - "lighthouse-core/audits/deprecations.js | legacyConstraintGoogSuspendBelowMinBitrate": { - "message": "Support for the `googSuspendBelowMinBitrate` constraint is about to be removed. Please stop using this legacy constraint." + "lighthouse-core/audits/deprecations-strings.js | legacyConstraintGoogIPv6": { + "message": "IPv6 is enabled-by-default and the ability to disable it using `googIPv6` is targeted to be removed in M108, after which it will be ignored. Please stop using this legacy constraint." }, - "lighthouse-core/audits/deprecations.js | localCSSFileExtensionRejected": { + "lighthouse-core/audits/deprecations-strings.js | localCSSFileExtensionRejected": { "message": "CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension." }, - "lighthouse-core/audits/deprecations.js | mediaElementAudioSourceNode": { - "message": "Creating a `MediaElementAudioSourceNode` on an `OfflineAudioContext` is deprecated and will be removed." + "lighthouse-core/audits/deprecations-strings.js | mediaSourceAbortRemove": { + "message": "Using `SourceBuffer.abort()` to abort `remove()`'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should listen to the `updateend` event instead. `abort()` is intended to only abort an asynchronous media append or reset parser state." }, - "lighthouse-core/audits/deprecations.js | mediaSourceAbortRemove": { - "message": "Using `SourceBuffer.abort()` to abort `remove()`'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should instead await `updateend`. `abort()` is intended to only abort an asynchronous media append or reset parser state." - }, - "lighthouse-core/audits/deprecations.js | mediaSourceDurationTruncatingBuffered": { + "lighthouse-core/audits/deprecations-strings.js | mediaSourceDurationTruncatingBuffered": { "message": "Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`." }, - "lighthouse-core/audits/deprecations.js | milestone": { + "lighthouse-core/audits/deprecations-strings.js | milestone": { "message": "This change will go into effect with milestone {milestone}." }, - "lighthouse-core/audits/deprecations.js | noSysexWebMIDIWithoutPermission": { + "lighthouse-core/audits/deprecations-strings.js | noSysexWebMIDIWithoutPermission": { "message": "Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`." }, - "lighthouse-core/audits/deprecations.js | notificationInsecureOrigin": { + "lighthouse-core/audits/deprecations-strings.js | notificationInsecureOrigin": { "message": "The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." }, - "lighthouse-core/audits/deprecations.js | notificationPermissionRequestedIframe": { + "lighthouse-core/audits/deprecations-strings.js | notificationPermissionRequestedIframe": { "message": "Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead." }, - "lighthouse-core/audits/deprecations.js | obsoleteWebRtcCipherSuite": { + "lighthouse-core/audits/deprecations-strings.js | obsoleteWebRtcCipherSuite": { "message": "Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed." }, - "lighthouse-core/audits/deprecations.js | paymentRequestBasicCard": { - "message": "The `basic-card` payment method is deprecated and will be removed." - }, - "lighthouse-core/audits/deprecations.js | paymentRequestShowWithoutGesture": { - "message": "Calling `PaymentRequest.show()` without user activation is deprecated and will be removed." - }, - "lighthouse-core/audits/deprecations.js | pictureSourceSrc": { + "lighthouse-core/audits/deprecations-strings.js | pictureSourceSrc": { "message": "`` with a `` parent is invalid and therefore ignored. Please use `` instead." }, - "lighthouse-core/audits/deprecations.js | prefixedCancelAnimationFrame": { - "message": "`webkitCancelAnimationFrame` is vendor-specific. Please use the standard `cancelAnimationFrame` instead." - }, - "lighthouse-core/audits/deprecations.js | prefixedRequestAnimationFrame": { - "message": "`webkitRequestAnimationFrame` is vendor-specific. Please use the standard `requestAnimationFrame` instead." - }, - "lighthouse-core/audits/deprecations.js | prefixedStorageInfo": { + "lighthouse-core/audits/deprecations-strings.js | prefixedStorageInfo": { "message": "`window.webkitStorageInfo` is deprecated. Please use `navigator.webkitTemporaryStorage` or `navigator.webkitPersistentStorage` instead." }, - "lighthouse-core/audits/deprecations.js | prefixedVideoDisplayingFullscreen": { - "message": "`HTMLVideoElement.webkitDisplayingFullscreen` is deprecated. Please use `Document.fullscreenElement` instead." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoEnterFullscreen": { - "message": "`HTMLVideoElement.webkitEnterFullscreen()` is deprecated. Please use `Element.requestFullscreen()` instead." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoEnterFullScreen": { - "message": "`HTMLVideoElement.webkitEnterFullScreen()` is deprecated. Please use `Element.requestFullscreen()` instead." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoExitFullscreen": { - "message": "`HTMLVideoElement.webkitExitFullscreen()` is deprecated. Please use `Document.exitFullscreen()` instead." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoExitFullScreen": { - "message": "`HTMLVideoElement.webkitExitFullsSreen()` is deprecated. Please use `Document.exitFullscreen()` instead." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoSupportsFullscreen": { - "message": "`HTMLVideoElement.webkitSupportsFullscreen` is deprecated. Please use `Document.fullscreenEnabled` instead." - }, - "lighthouse-core/audits/deprecations.js | rangeExpand": { - "message": "`Range.expand()` is deprecated. Please use `Selection.modify()` instead." - }, - "lighthouse-core/audits/deprecations.js | requestedSubresourceWithEmbeddedCredentials": { + "lighthouse-core/audits/deprecations-strings.js | requestedSubresourceWithEmbeddedCredentials": { "message": "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked." }, - "lighthouse-core/audits/deprecations.js | rtcConstraintEnableDtlsSrtpFalse": { - "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES` key negotiation method. This functionality is removed; use a service that supports DTLS key negotiation instead." + "lighthouse-core/audits/deprecations-strings.js | rtcConstraintEnableDtlsSrtpFalse": { + "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES key negotiation` method. This functionality is removed; use a service that supports `DTLS key negotiation` instead." }, - "lighthouse-core/audits/deprecations.js | rtcConstraintEnableDtlsSrtpTrue": { + "lighthouse-core/audits/deprecations-strings.js | rtcConstraintEnableDtlsSrtpTrue": { "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness." }, - "lighthouse-core/audits/deprecations.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { - "message": "Complex Plan B SDP detected! Chrome will switch the default `sdpSemantics` from `plan-b` to the standardized `unified-plan` format and this peer connection is relying on the default `sdpSemantics`. This SDP is not compatible with Unified Plan and will be rejected by clients expecting Unified Plan. For more information about how to prepare for the switch, see https://webrtc.org/web-apis/chrome/unified-plan/." - }, - "lighthouse-core/audits/deprecations.js | rtcPeerConnectionLegacyCreateWithMediaConstraints": { - "message": "The `mediaConstraints` version of `RTCOfferOptions/RTCAnswerOptions` are deprecated and will soon be removed, please migrate to the promise-based `createOffer`/`createAnswer` instead." + "lighthouse-core/audits/deprecations-strings.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { + "message": "`Complex Plan B SDP` detected. This dialect of the `Session Description Protocol` is no longer supported. Please use `Unified Plan SDP` instead." }, - "lighthouse-core/audits/deprecations.js | rtcPeerConnectionSdpSemanticsPlanB": { - "message": "Plan B SDP semantics, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the Session Description Protocol that has been permanently deleted from the Web Platform. It is still available when building with IS_FUCHSIA, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status." + "lighthouse-core/audits/deprecations-strings.js | rtcPeerConnectionSdpSemanticsPlanB": { + "message": "`Plan B SDP semantics`, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the `Session Description Protocol` that has been permanently deleted from the Web Platform. It is still available when building with `IS_FUCHSIA`, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status." }, - "lighthouse-core/audits/deprecations.js | rtcpMuxPolicyNegotiate": { + "lighthouse-core/audits/deprecations-strings.js | rtcpMuxPolicyNegotiate": { "message": "The `rtcpMuxPolicy` option is deprecated and will be removed." }, - "lighthouse-core/audits/deprecations.js | rtpDataChannel": { - "message": "RTP data channels are no longer supported. The `RtpDataChannels` constraint is currently ignored, and may cause an error at a later date." - }, - "lighthouse-core/audits/deprecations.js | selectionAddRangeIntersect": { - "message": "The behavior that `Selection.addRange()` merges existing Range and the specified Range was removed." - }, - "lighthouse-core/audits/deprecations.js | sharedArrayBufferConstructedWithoutIsolation": { + "lighthouse-core/audits/deprecations-strings.js | sharedArrayBufferConstructedWithoutIsolation": { "message": "`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details." }, - "lighthouse-core/audits/deprecations.js | textToSpeech_DisallowedByAutoplay": { + "lighthouse-core/audits/deprecations-strings.js | textToSpeech_DisallowedByAutoplay": { "message": "`speechSynthesis.speak()` without user activation is deprecated and will be removed." }, - "lighthouse-core/audits/deprecations.js | title": { - "message": "Avoids deprecated APIs" - }, - "lighthouse-core/audits/deprecations.js | unknownDeprecation": { - "message": "..." + "lighthouse-core/audits/deprecations-strings.js | title": { + "message": "Deprecated Feature Used" }, - "lighthouse-core/audits/deprecations.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { + "lighthouse-core/audits/deprecations-strings.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { "message": "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/." }, - "lighthouse-core/audits/deprecations.js | webCodecsVideoFrameDefaultTimestamp": { - "message": "Constructing a `VideoFrame` without a timestamp is deprecated and support will be removed. Please provide a timestamp via `VideoFrameInit`." + "lighthouse-core/audits/deprecations-strings.js | vendorSpecificApi": { + "message": "{PH1} is vendor-specific. Please use the standard {PH2} instead." }, - "lighthouse-core/audits/deprecations.js | xhrJSONEncodingDetection": { + "lighthouse-core/audits/deprecations-strings.js | xhrJSONEncodingDetection": { "message": "UTF-16 is not supported by response json in `XMLHttpRequest`" }, - "lighthouse-core/audits/deprecations.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { + "lighthouse-core/audits/deprecations-strings.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { "message": "Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help, check https://xhr.spec.whatwg.org/." }, - "lighthouse-core/audits/deprecations.js | xrSupportsSession": { + "lighthouse-core/audits/deprecations-strings.js | xrSupportsSession": { "message": "`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead." }, + "lighthouse-core/audits/deprecations.js | columnDeprecate": { + "message": "Deprecation / Warning" + }, + "lighthouse-core/audits/deprecations.js | columnLine": { + "message": "Line" + }, + "lighthouse-core/audits/deprecations.js | description": { + "message": "Deprecated APIs will eventually be removed from the browser. [Learn more](https://web.dev/deprecations/)." + }, + "lighthouse-core/audits/deprecations.js | displayValue": { + "message": "{itemCount, plural,\n =1 {1 warning found}\n other {# warnings found}\n }" + }, + "lighthouse-core/audits/deprecations.js | failureTitle": { + "message": "Uses deprecated APIs" + }, + "lighthouse-core/audits/deprecations.js | title": { + "message": "Avoids deprecated APIs" + }, "lighthouse-core/audits/dobetterweb/charset.js | description": { "message": "A character encoding declaration is required. It can be done with a `` tag in the first 1024 bytes of the HTML or in the Content-Type HTTP response header. [Learn more](https://web.dev/charset/)." }, diff --git a/shared/localization/locales/en-XL.json b/shared/localization/locales/en-XL.json index 49b5ef7ee4bb..8cb983be958c 100644 --- a/shared/localization/locales/en-XL.json +++ b/shared/localization/locales/en-XL.json @@ -746,210 +746,156 @@ "lighthouse-core/audits/csp-xss.js | title": { "message": "Êńŝúr̂é ĈŚP̂ íŝ éf̂f́êćt̂ív̂é âǵâín̂śt̂ X́ŜŚ ât́t̂áĉḱŝ" }, - "lighthouse-core/audits/deprecations.js | authorizationCoveredByWildcard": { + "lighthouse-core/audits/deprecations-strings.js | authorizationCoveredByWildcard": { "message": "Âút̂h́ôŕîźât́îón̂ ẃîĺl̂ ńôt́ b̂é ĉóv̂ér̂éd̂ b́ŷ t́ĥé ŵíl̂d́ĉár̂d́ ŝým̂b́ôĺ (*) îń ĈÓR̂Ś `Access-Control-Allow-Headers` ĥán̂d́l̂ín̂ǵ." }, - "lighthouse-core/audits/deprecations.js | canRequestURLHTTPContainingNewline": { + "lighthouse-core/audits/deprecations-strings.js | canRequestURLHTTPContainingNewline": { "message": "R̂éŝóûŕĉé r̂éq̂úêśt̂ś ŵh́ôśê ÚR̂Ĺŝ ćôńt̂áîńêd́ b̂ót̂h́ r̂ém̂óv̂éd̂ ẃĥít̂éŝṕâćê `(n|r|t)` ćĥár̂áĉt́êŕŝ án̂d́ l̂éŝś-t̂h́âń ĉh́âŕâćt̂ér̂ś (`<`) âŕê b́l̂óĉḱêd́. P̂ĺêáŝé r̂ém̂óv̂é n̂éŵĺîńêś âńd̂ én̂ćôd́ê ĺêśŝ-t́ĥán̂ ćĥár̂áĉt́êŕŝ f́r̂óm̂ ṕl̂áĉéŝ ĺîḱê él̂ém̂én̂t́ ât́t̂ŕîb́ût́ê v́âĺûéŝ ín̂ ór̂d́êŕ t̂ó l̂óâd́ t̂h́êśê ŕêśôúr̂ćêś." }, - "lighthouse-core/audits/deprecations.js | chromeLoadTimesConnectionInfo": { + "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesConnectionInfo": { "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: Ńâv́îǵât́îón̂ T́îḿîńĝ 2." }, - "lighthouse-core/audits/deprecations.js | chromeLoadTimesFirstPaintAfterLoadTime": { + "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesFirstPaintAfterLoadTime": { "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: Ṕâín̂t́ T̂ím̂ín̂ǵ." }, - "lighthouse-core/audits/deprecations.js | chromeLoadTimesWasAlternateProtocolAvailable": { + "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesWasAlternateProtocolAvailable": { "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: `nextHopProtocol` ín̂ Ńâv́îǵât́îón̂ T́îḿîńĝ 2." }, - "lighthouse-core/audits/deprecations.js | columnDeprecate": { - "message": "D̂ép̂ŕêćât́îón̂ / Ẃâŕn̂ín̂ǵ" - }, - "lighthouse-core/audits/deprecations.js | columnLine": { - "message": "L̂ín̂é" - }, - "lighthouse-core/audits/deprecations.js | cookieWithTruncatingChar": { + "lighthouse-core/audits/deprecations-strings.js | cookieWithTruncatingChar": { "message": "Ĉóôḱîéŝ ćôńt̂áîńîńĝ á `(0|r|n)` ĉh́âŕâćt̂ér̂ ẃîĺl̂ b́ê ŕêj́êćt̂éd̂ ín̂śt̂éâd́ ôf́ t̂ŕûńĉát̂éd̂." }, - "lighthouse-core/audits/deprecations.js | crossOriginAccessBasedOnDocumentDomain": { + "lighthouse-core/audits/deprecations-strings.js | crossOriginAccessBasedOnDocumentDomain": { "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂h́îś d̂ép̂ŕêćât́îón̂ ẃâŕn̂ín̂ǵ îś f̂ór̂ á ĉŕôśŝ-ór̂íĝín̂ áĉćêśŝ t́ĥát̂ ẃâś êńâb́l̂éd̂ b́ŷ śêt́t̂ín̂ǵ `document.domain`." }, - "lighthouse-core/audits/deprecations.js | crossOriginWindowAlert": { - "message": "T̂ŕîǵĝér̂ín̂ǵ `window.alert` f̂ŕôḿ ĉŕôśŝ ór̂íĝín̂ íf̂ŕâḿêś ĥáŝ b́êén̂ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é." - }, - "lighthouse-core/audits/deprecations.js | crossOriginWindowConfirm": { - "message": "T̂ŕîǵĝér̂ín̂ǵ `window.confirm` f̂ŕôḿ ĉŕôśŝ ór̂íĝín̂ íf̂ŕâḿêś ĥáŝ b́êén̂ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é." + "lighthouse-core/audits/deprecations-strings.js | crossOriginWindowApi": { + "message": "T̂ŕîǵĝér̂ín̂ǵ {PH1} f̂ŕôḿ ĉŕôśŝ ór̂íĝín̂ íf̂ŕâḿêś ĥáŝ b́êén̂ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é." }, - "lighthouse-core/audits/deprecations.js | cssSelectorInternalMediaControlsOverlayCastButton": { + "lighthouse-core/audits/deprecations-strings.js | cssSelectorInternalMediaControlsOverlayCastButton": { "message": "T̂h́ê `disableRemotePlayback` át̂t́r̂íb̂út̂é ŝh́ôúl̂d́ b̂é ûśêd́ îń ôŕd̂ér̂ t́ô d́îśâb́l̂é t̂h́ê d́êf́âúl̂t́ Ĉáŝt́ îńt̂éĝŕât́îón̂ ín̂śt̂éâd́ ôf́ ûśîńĝ `-internal-media-controls-overlay-cast-button` śêĺêćt̂ór̂." }, - "lighthouse-core/audits/deprecations.js | customCursorIntersectsViewport": { - "message": "Ĉúŝt́ôḿ ĉúr̂śôŕŝ ẃît́ĥ śîźê ǵr̂éât́êŕ t̂h́âń 32x̂32 D́ÎṔ îńt̂ér̂śêćt̂ín̂ǵ n̂át̂ív̂é ÛÍ îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́." + "lighthouse-core/audits/deprecations-strings.js | deprecatedWithReplacement": { + "message": "{PH1} îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê {PH2} ín̂śt̂éâd́." }, - "lighthouse-core/audits/deprecations.js | description": { - "message": "D̂ép̂ŕêćât́êd́ ÂṔÎś ŵíl̂ĺ êv́êńt̂úâĺl̂ý b̂é r̂ém̂óv̂éd̂ f́r̂óm̂ t́ĥé b̂ŕôẃŝér̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/deprecations/)." + "lighthouse-core/audits/deprecations-strings.js | deprecationExample": { + "message": "T̂h́îś îś âń êx́âḿp̂ĺê óf̂ á t̂ŕâńŝĺât́êd́ d̂ép̂ŕêćât́îón̂ íŝśûé m̂éŝśâǵê." }, - "lighthouse-core/audits/deprecations.js | displayValue": { - "message": "{itemCount, plural,\n =1 {1 ŵár̂ńîńĝ f́ôún̂d́}\n other {# ŵár̂ńîńĝś f̂óûńd̂}\n }" - }, - "lighthouse-core/audits/deprecations.js | documentDomainSettingWithoutOriginAgentClusterHeader": { + "lighthouse-core/audits/deprecations-strings.js | documentDomainSettingWithoutOriginAgentClusterHeader": { "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂ó ĉón̂t́îńûé ûśîńĝ t́ĥíŝ f́êát̂úr̂é, p̂ĺêáŝé ôṕt̂-óût́ ôf́ ôŕîǵîń-k̂éŷéd̂ áĝén̂t́ ĉĺûśt̂ér̂ś b̂ý ŝén̂d́îńĝ án̂ `Origin-Agent-Cluster: ?0` h́êád̂ér̂ ál̂ón̂ǵ ŵít̂h́ t̂h́ê H́T̂T́P̂ ŕêśp̂ón̂śê f́ôŕ t̂h́ê d́ôćûḿêńt̂ án̂d́ f̂ŕâḿêś. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/b̂ĺôǵ/îḿm̂út̂áb̂ĺê-d́ôćûḿêńt̂-d́ôḿâín̂/ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." }, - "lighthouse-core/audits/deprecations.js | eventPath": { + "lighthouse-core/audits/deprecations-strings.js | eventPath": { "message": "`Event.path` îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́. P̂ĺêáŝé ûśê `Event.composedPath()` ín̂śt̂éâd́." }, - "lighthouse-core/audits/deprecations.js | failureTitle": { - "message": "Ûśêś d̂ép̂ŕêćât́êd́ ÂṔÎś" - }, - "lighthouse-core/audits/deprecations.js | feature": { + "lighthouse-core/audits/deprecations-strings.js | feature": { "message": "Ĉh́êćk̂ t́ĥé f̂éât́ûŕê śt̂át̂úŝ ṕâǵê f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." }, - "lighthouse-core/audits/deprecations.js | geolocationInsecureOrigin": { + "lighthouse-core/audits/deprecations-strings.js | geolocationInsecureOrigin": { "message": "`getCurrentPosition()` âńd̂ `watchPosition()` ńô ĺôńĝér̂ ẃôŕk̂ ón̂ ín̂śêćûŕê ór̂íĝín̂ś. T̂ó ûśê t́ĥíŝ f́êát̂úr̂é, ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." }, - "lighthouse-core/audits/deprecations.js | geolocationInsecureOriginDeprecatedNotRemoved": { + "lighthouse-core/audits/deprecations-strings.js | geolocationInsecureOriginDeprecatedNotRemoved": { "message": "`getCurrentPosition()` âńd̂ `watchPosition()` ár̂é d̂ép̂ŕêćât́êd́ ôń îńŝéĉúr̂é ôŕîǵîńŝ. T́ô úŝé t̂h́îś f̂éât́ûŕê, ýôú ŝh́ôúl̂d́ ĉón̂śîd́êŕ ŝẃît́ĉh́îńĝ ýôúr̂ áp̂ṕl̂íĉát̂íôń t̂ó â śêćûŕê ór̂íĝín̂, śûćĥ áŝ H́T̂T́P̂Ś. Ŝéê h́t̂t́p̂ś://ĝóô.ǵl̂é/ĉh́r̂óm̂é-îńŝéĉúr̂é-ôŕîǵîńŝ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." }, - "lighthouse-core/audits/deprecations.js | getUserMediaInsecureOrigin": { + "lighthouse-core/audits/deprecations-strings.js | getUserMediaInsecureOrigin": { "message": "`getUserMedia()` n̂ó l̂ón̂ǵêŕ ŵór̂ḱŝ ón̂ ín̂śêćûŕê ór̂íĝín̂ś. T̂ó ûśê t́ĥíŝ f́êát̂úr̂é, ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." }, - "lighthouse-core/audits/deprecations.js | hostCandidateAttributeGetter": { + "lighthouse-core/audits/deprecations-strings.js | hostCandidateAttributeGetter": { "message": "`RTCPeerConnectionIceErrorEvent.hostCandidate` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `RTCPeerConnectionIceErrorEvent.address` ór̂ `RTCPeerConnectionIceErrorEvent.port` ín̂śt̂éâd́." }, - "lighthouse-core/audits/deprecations.js | insecurePrivateNetworkSubresourceRequest": { + "lighthouse-core/audits/deprecations-strings.js | insecurePrivateNetworkSubresourceRequest": { "message": "T̂h́ê ẃêb́ŝít̂é r̂éq̂úêśt̂éd̂ á ŝúb̂ŕêśôúr̂ćê f́r̂óm̂ á n̂ét̂ẃôŕk̂ t́ĥát̂ ít̂ ćôúl̂d́ ôńl̂ý âćĉéŝś b̂éĉáûśê óf̂ ít̂ś ûśêŕŝ' ṕr̂ív̂íl̂éĝéd̂ ńêt́ŵór̂ḱ p̂óŝít̂íôń. T̂h́êśê ŕêq́ûéŝt́ŝ éx̂ṕôśê ńôń-p̂úb̂ĺîć d̂év̂íĉéŝ án̂d́ ŝér̂v́êŕŝ t́ô t́ĥé îńt̂ér̂ńêt́, îńĉŕêáŝín̂ǵ t̂h́ê ŕîśk̂ óf̂ á ĉŕôśŝ-śît́ê ŕêq́ûéŝt́ f̂ór̂ǵêŕŷ (ĆŜŔF̂) át̂t́âćk̂, án̂d́/ôŕ îńf̂ór̂ḿât́îón̂ ĺêák̂áĝé. T̂ó m̂ít̂íĝát̂é t̂h́êśê ŕîśk̂ś, Ĉh́r̂óm̂é d̂ép̂ŕêćât́êś r̂éq̂úêśt̂ś t̂ó n̂ón̂-ṕûb́l̂íĉ śûb́r̂éŝóûŕĉéŝ ẃĥén̂ ín̂ít̂íât́êd́ f̂ŕôḿ n̂ón̂-śêćûŕê ćôńt̂éx̂t́ŝ, án̂d́ ŵíl̂ĺ ŝt́âŕt̂ b́l̂óĉḱîńĝ t́ĥém̂." }, - "lighthouse-core/audits/deprecations.js | legacyConstraintGoogCpuOveruseDetection": { - "message": "ĈṔÛ óv̂ér̂úŝé d̂ét̂éĉt́îón̂ íŝ én̂áb̂ĺêd́-b̂ý-d̂éf̂áûĺt̂ án̂d́ t̂h́ê áb̂íl̂ít̂ý t̂ó d̂íŝáb̂ĺê ít̂ úŝín̂ǵ `googCpuOveruseDetection` ŵíl̂ĺ ŝóôń b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." - }, - "lighthouse-core/audits/deprecations.js | legacyConstraintGoogIPv6": { - "message": "ÎṔv̂6 íŝ én̂áb̂ĺêd́-b̂ý-d̂éf̂áûĺt̂ án̂d́ t̂h́ê áb̂íl̂ít̂ý t̂ó d̂íŝáb̂ĺê ít̂ úŝín̂ǵ `googIPv6` ŵíl̂ĺ ŝóôń b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." - }, - "lighthouse-core/audits/deprecations.js | legacyConstraintGoogScreencastMinBitrate": { - "message": "Ŝćr̂éêńĉáŝt́ m̂ín̂ b́ît́r̂át̂é îś n̂óŵ śêt́ t̂ó 100 k̂b́p̂ś b̂ý d̂éf̂áûĺt̂ án̂d́ `googScreencastMinBitrate` ŵíl̂ĺ ŝóôń b̂é îǵn̂ór̂éd̂ ín̂ f́âv́ôŕ ôf́ t̂h́îś n̂éŵ d́êf́âúl̂t́. P̂ĺêáŝé ŝt́ôṕ ûśîńĝ t́ĥíŝ ĺêǵâćŷ ćôńŝt́r̂áîńt̂." - }, - "lighthouse-core/audits/deprecations.js | legacyConstraintGoogSuspendBelowMinBitrate": { - "message": "Ŝúp̂ṕôŕt̂ f́ôŕ t̂h́ê `googSuspendBelowMinBitrate` ćôńŝt́r̂áîńt̂ íŝ áb̂óût́ t̂ó b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." + "lighthouse-core/audits/deprecations-strings.js | legacyConstraintGoogIPv6": { + "message": "ÎṔv̂6 íŝ én̂áb̂ĺêd́-b̂ý-d̂éf̂áûĺt̂ án̂d́ t̂h́ê áb̂íl̂ít̂ý t̂ó d̂íŝáb̂ĺê ít̂ úŝín̂ǵ `googIPv6` îś t̂ár̂ǵêt́êd́ t̂ó b̂é r̂ém̂óv̂éd̂ ín̂ Ḿ108, âf́t̂ér̂ ẃĥíĉh́ ît́ ŵíl̂ĺ b̂é îǵn̂ór̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." }, - "lighthouse-core/audits/deprecations.js | localCSSFileExtensionRejected": { + "lighthouse-core/audits/deprecations-strings.js | localCSSFileExtensionRejected": { "message": "ĈŚŜ ćâńn̂ót̂ b́ê ĺôád̂éd̂ f́r̂óm̂ `file:` ÚR̂Ĺŝ ún̂ĺêśŝ t́ĥéŷ én̂d́ îń â `.css` f́îĺê éx̂t́êńŝíôń." }, - "lighthouse-core/audits/deprecations.js | mediaElementAudioSourceNode": { - "message": "Ĉŕêát̂ín̂ǵ â `MediaElementAudioSourceNode` ón̂ án̂ `OfflineAudioContext` íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." + "lighthouse-core/audits/deprecations-strings.js | mediaSourceAbortRemove": { + "message": "Ûśîńĝ `SourceBuffer.abort()` t́ô áb̂ór̂t́ `remove()`'ŝ áŝýn̂ćĥŕôńôúŝ ŕâńĝé r̂ém̂óv̂ál̂ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ĺîśt̂én̂ t́ô t́ĥé `updateend` êv́êńt̂ ín̂śt̂éâd́. `abort()` îś îńt̂én̂d́êd́ t̂ó ôńl̂ý âb́ôŕt̂ án̂ áŝýn̂ćĥŕôńôúŝ ḿêd́îá âṕp̂én̂d́ ôŕ r̂éŝét̂ ṕâŕŝér̂ śt̂át̂é." }, - "lighthouse-core/audits/deprecations.js | mediaSourceAbortRemove": { - "message": "Ûśîńĝ `SourceBuffer.abort()` t́ô áb̂ór̂t́ `remove()`'ŝ áŝýn̂ćĥŕôńôúŝ ŕâńĝé r̂ém̂óv̂ál̂ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ín̂śt̂éâd́ âẃâít̂ `updateend`. `abort()` íŝ ín̂t́êńd̂éd̂ t́ô ón̂ĺŷ áb̂ór̂t́ âń âśŷńĉh́r̂ón̂óûś m̂éd̂íâ áp̂ṕêńd̂ ór̂ ŕêśêt́ p̂ár̂śêŕ ŝt́ât́ê." - }, - "lighthouse-core/audits/deprecations.js | mediaSourceDurationTruncatingBuffered": { + "lighthouse-core/audits/deprecations-strings.js | mediaSourceDurationTruncatingBuffered": { "message": "Ŝét̂t́îńĝ `MediaSource.duration` b́êĺôẃ t̂h́ê h́îǵĥéŝt́ p̂ŕêśêńt̂át̂íôń t̂ím̂éŝt́âḿp̂ óf̂ án̂ý b̂úf̂f́êŕêd́ ĉód̂éd̂ f́r̂ám̂éŝ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ f̂ór̂ ím̂ṕl̂íĉít̂ ŕêḿôv́âĺ ôf́ t̂ŕûńĉát̂éd̂ b́ûf́f̂ér̂éd̂ ḿêd́îá ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ín̂śt̂éâd́ p̂ér̂f́ôŕm̂ éx̂ṕl̂íĉít̂ `remove(newDuration, oldDuration)` ón̂ ál̂ĺ `sourceBuffers`, ŵh́êŕê `newDuration < oldDuration`." }, - "lighthouse-core/audits/deprecations.js | milestone": { + "lighthouse-core/audits/deprecations-strings.js | milestone": { "message": "T̂h́îś ĉh́âńĝé ŵíl̂ĺ ĝó îńt̂ó êf́f̂éĉt́ ŵít̂h́ m̂íl̂éŝt́ôńê {milestone}." }, - "lighthouse-core/audits/deprecations.js | noSysexWebMIDIWithoutPermission": { + "lighthouse-core/audits/deprecations-strings.js | noSysexWebMIDIWithoutPermission": { "message": "Ŵéb̂ ḾÎD́Î ẃîĺl̂ áŝḱ â ṕêŕm̂íŝśîón̂ t́ô úŝé êv́êń îf́ t̂h́ê śŷśêx́ îś n̂ót̂ śp̂éĉíf̂íêd́ îń t̂h́ê `MIDIOptions`." }, - "lighthouse-core/audits/deprecations.js | notificationInsecureOrigin": { + "lighthouse-core/audits/deprecations-strings.js | notificationInsecureOrigin": { "message": "T̂h́ê Ńôt́îf́îćât́îón̂ ÁP̂Í m̂áŷ ńô ĺôńĝér̂ b́ê úŝéd̂ f́r̂óm̂ ín̂śêćûŕê ór̂íĝín̂ś. Ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." }, - "lighthouse-core/audits/deprecations.js | notificationPermissionRequestedIframe": { + "lighthouse-core/audits/deprecations-strings.js | notificationPermissionRequestedIframe": { "message": "P̂ér̂ḿîśŝíôń f̂ór̂ t́ĥé N̂ót̂íf̂íĉát̂íôń ÂṔÎ ḿâý n̂ó l̂ón̂ǵêŕ b̂é r̂éq̂úêśt̂éd̂ f́r̂óm̂ á ĉŕôśŝ-ór̂íĝín̂ íf̂ŕâḿê. Ýôú ŝh́ôúl̂d́ ĉón̂śîd́êŕ r̂éq̂úêśt̂ín̂ǵ p̂ér̂ḿîśŝíôń f̂ŕôḿ â t́ôṕ-l̂év̂él̂ f́r̂ám̂é ôŕ ôṕêńîńĝ á n̂éŵ ẃîńd̂óŵ ín̂śt̂éâd́." }, - "lighthouse-core/audits/deprecations.js | obsoleteWebRtcCipherSuite": { + "lighthouse-core/audits/deprecations-strings.js | obsoleteWebRtcCipherSuite": { "message": "Ŷóûŕ p̂ár̂t́n̂ér̂ íŝ ńêǵôt́îát̂ín̂ǵ âń ôb́ŝól̂ét̂é (D̂)T́L̂Ś v̂ér̂śîón̂. Ṕl̂éâśê ćĥéĉḱ ŵít̂h́ ŷóûŕ p̂ár̂t́n̂ér̂ t́ô h́âv́ê t́ĥíŝ f́îx́êd́." }, - "lighthouse-core/audits/deprecations.js | paymentRequestBasicCard": { - "message": "T̂h́ê `basic-card` ṕâým̂én̂t́ m̂ét̂h́ôd́ îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́." - }, - "lighthouse-core/audits/deprecations.js | paymentRequestShowWithoutGesture": { - "message": "Ĉál̂ĺîńĝ `PaymentRequest.show()` ẃît́ĥóût́ ûśêŕ âćt̂ív̂át̂íôń îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́." - }, - "lighthouse-core/audits/deprecations.js | pictureSourceSrc": { + "lighthouse-core/audits/deprecations-strings.js | pictureSourceSrc": { "message": "`` ŵít̂h́ â `` ṕâŕêńt̂ íŝ ín̂v́âĺîd́ âńd̂ t́ĥér̂éf̂ór̂é îǵn̂ór̂éd̂. Ṕl̂éâśê úŝé `` îńŝt́êád̂." }, - "lighthouse-core/audits/deprecations.js | prefixedCancelAnimationFrame": { - "message": "`webkitCancelAnimationFrame` îś v̂én̂d́ôŕ-ŝṕêćîf́îć. P̂ĺêáŝé ûśê t́ĥé ŝt́âńd̂ár̂d́ `cancelAnimationFrame` îńŝt́êád̂." - }, - "lighthouse-core/audits/deprecations.js | prefixedRequestAnimationFrame": { - "message": "`webkitRequestAnimationFrame` îś v̂én̂d́ôŕ-ŝṕêćîf́îć. P̂ĺêáŝé ûśê t́ĥé ŝt́âńd̂ár̂d́ `requestAnimationFrame` îńŝt́êád̂." - }, - "lighthouse-core/audits/deprecations.js | prefixedStorageInfo": { + "lighthouse-core/audits/deprecations-strings.js | prefixedStorageInfo": { "message": "`window.webkitStorageInfo` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `navigator.webkitTemporaryStorage` ór̂ `navigator.webkitPersistentStorage` ín̂śt̂éâd́." }, - "lighthouse-core/audits/deprecations.js | prefixedVideoDisplayingFullscreen": { - "message": "`HTMLVideoElement.webkitDisplayingFullscreen` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Document.fullscreenElement` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoEnterFullscreen": { - "message": "`HTMLVideoElement.webkitEnterFullscreen()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Element.requestFullscreen()` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoEnterFullScreen": { - "message": "`HTMLVideoElement.webkitEnterFullScreen()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Element.requestFullscreen()` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoExitFullscreen": { - "message": "`HTMLVideoElement.webkitExitFullscreen()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Document.exitFullscreen()` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoExitFullScreen": { - "message": "`HTMLVideoElement.webkitExitFullsSreen()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Document.exitFullscreen()` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations.js | prefixedVideoSupportsFullscreen": { - "message": "`HTMLVideoElement.webkitSupportsFullscreen` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Document.fullscreenEnabled` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations.js | rangeExpand": { - "message": "`Range.expand()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `Selection.modify()` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations.js | requestedSubresourceWithEmbeddedCredentials": { + "lighthouse-core/audits/deprecations-strings.js | requestedSubresourceWithEmbeddedCredentials": { "message": "Ŝúb̂ŕêśôúr̂ćê ŕêq́ûéŝt́ŝ ẃĥóŝé ÛŔL̂ś ĉón̂t́âín̂ ém̂b́êd́d̂éd̂ ćr̂éd̂én̂t́îál̂ś (ê.ǵ. `https://user:pass@host/`) âŕê b́l̂óĉḱêd́." }, - "lighthouse-core/audits/deprecations.js | rtcConstraintEnableDtlsSrtpFalse": { - "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `false` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ îś îńt̂ér̂ṕr̂ét̂éd̂ áŝ án̂ át̂t́êḿp̂t́ t̂ó ûśê t́ĥé r̂ém̂óv̂éd̂ `SDES` ḱêý n̂éĝót̂íât́îón̂ ḿêt́ĥód̂. T́ĥíŝ f́ûńĉt́îón̂ál̂ít̂ý îś r̂ém̂óv̂éd̂; úŝé â śêŕv̂íĉé t̂h́ât́ ŝúp̂ṕôŕt̂ś D̂T́L̂Ś k̂éŷ ńêǵôt́îát̂íôń îńŝt́êád̂." + "lighthouse-core/audits/deprecations-strings.js | rtcConstraintEnableDtlsSrtpFalse": { + "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `false` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ îś îńt̂ér̂ṕr̂ét̂éd̂ áŝ án̂ át̂t́êḿp̂t́ t̂ó ûśê t́ĥé r̂ém̂óv̂éd̂ `SDES key negotiation` ḿêt́ĥód̂. T́ĥíŝ f́ûńĉt́îón̂ál̂ít̂ý îś r̂ém̂óv̂éd̂; úŝé â śêŕv̂íĉé t̂h́ât́ ŝúp̂ṕôŕt̂ś `DTLS key negotiation` îńŝt́êád̂." }, - "lighthouse-core/audits/deprecations.js | rtcConstraintEnableDtlsSrtpTrue": { + "lighthouse-core/audits/deprecations-strings.js | rtcConstraintEnableDtlsSrtpTrue": { "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `true` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ ĥád̂ ńô éf̂f́êćt̂, b́ût́ ŷóû ćâń r̂ém̂óv̂é t̂h́îś ĉón̂śt̂ŕâín̂t́ f̂ór̂ t́îd́îńêśŝ." }, - "lighthouse-core/audits/deprecations.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { - "message": "Ĉóm̂ṕl̂éx̂ Ṕl̂án̂ B́ ŜD́P̂ d́êt́êćt̂éd̂! Ćĥŕôḿê ẃîĺl̂ śŵít̂ćĥ t́ĥé d̂éf̂áûĺt̂ `sdpSemantics` f́r̂óm̂ `plan-b` t́ô t́ĥé ŝt́âńd̂ár̂d́îźêd́ `unified-plan` f̂ór̂ḿât́ âńd̂ t́ĥíŝ ṕêér̂ ćôńn̂éĉt́îón̂ íŝ ŕêĺŷín̂ǵ ôń t̂h́ê d́êf́âúl̂t́ `sdpSemantics`. T̂h́îś ŜD́P̂ íŝ ńôt́ ĉóm̂ṕât́îb́l̂é ŵít̂h́ Ûńîf́îéd̂ Ṕl̂án̂ án̂d́ ŵíl̂ĺ b̂é r̂éĵéĉt́êd́ b̂ý ĉĺîén̂t́ŝ éx̂ṕêćt̂ín̂ǵ Ûńîf́îéd̂ Ṕl̂án̂. F́ôŕ m̂ór̂é îńf̂ór̂ḿât́îón̂ áb̂óût́ ĥóŵ t́ô ṕr̂ép̂ár̂é f̂ór̂ t́ĥé ŝẃît́ĉh́, ŝéê h́t̂t́p̂ś://ŵéb̂ŕt̂ć.ôŕĝ/ẃêb́-âṕîś/ĉh́r̂óm̂é/ûńîf́îéd̂-ṕl̂án̂/." - }, - "lighthouse-core/audits/deprecations.js | rtcPeerConnectionLegacyCreateWithMediaConstraints": { - "message": "T̂h́ê `mediaConstraints` v́êŕŝíôń ôf́ `RTCOfferOptions/RTCAnswerOptions` âŕê d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ ŝóôń b̂é r̂ém̂óv̂éd̂, ṕl̂éâśê ḿîǵr̂át̂é t̂ó t̂h́ê ṕr̂óm̂íŝé-b̂áŝéd̂ `createOffer`/`createAnswer` ín̂śt̂éâd́." + "lighthouse-core/audits/deprecations-strings.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { + "message": "`Complex Plan B SDP` d̂ét̂éĉt́êd́. T̂h́îś d̂íâĺêćt̂ óf̂ t́ĥé `Session Description Protocol` îś n̂ó l̂ón̂ǵêŕ ŝúp̂ṕôŕt̂éd̂. Ṕl̂éâśê úŝé `Unified Plan SDP` îńŝt́êád̂." }, - "lighthouse-core/audits/deprecations.js | rtcPeerConnectionSdpSemanticsPlanB": { - "message": "P̂ĺâń B̂ ŚD̂Ṕ ŝém̂án̂t́îćŝ, ẃĥíĉh́ îś ûśêd́ ŵh́êń ĉón̂śt̂ŕûćt̂ín̂ǵ âń `RTCPeerConnection` ŵít̂h́ `{sdpSemantics:plan-b}`, îś â ĺêǵâćŷ ńôń-ŝt́âńd̂ár̂d́ v̂ér̂śîón̂ óf̂ t́ĥé Ŝéŝśîón̂ D́êśĉŕîṕt̂íôń P̂ŕôt́ôćôĺ t̂h́ât́ ĥáŝ b́êén̂ ṕêŕm̂án̂én̂t́l̂ý d̂él̂ét̂éd̂ f́r̂óm̂ t́ĥé Ŵéb̂ Ṕl̂át̂f́ôŕm̂. Ít̂ íŝ śt̂íl̂ĺ âv́âíl̂áb̂ĺê ẃĥén̂ b́ûíl̂d́îńĝ ẃît́ĥ ÍŜ_F́ÛĆĤŚÎÁ, b̂út̂ ẃê ín̂t́êńd̂ t́ô d́êĺêt́ê ít̂ áŝ śôón̂ áŝ ṕôśŝíb̂ĺê. Śt̂óp̂ d́êṕêńd̂ín̂ǵ ôń ît́. Ŝéê h́t̂t́p̂ś://ĉŕb̂úĝ.ćôḿ/1302249 f̂ór̂ śt̂át̂úŝ." + "lighthouse-core/audits/deprecations-strings.js | rtcPeerConnectionSdpSemanticsPlanB": { + "message": "`Plan B SDP semantics`, ŵh́îćĥ íŝ úŝéd̂ ẃĥén̂ ćôńŝt́r̂úĉt́îńĝ án̂ `RTCPeerConnection` ẃît́ĥ `{sdpSemantics:plan-b}`, íŝ á l̂éĝáĉý n̂ón̂-śt̂án̂d́âŕd̂ v́êŕŝíôń ôf́ t̂h́ê `Session Description Protocol` t́ĥát̂ h́âś b̂éêń p̂ér̂ḿâńêńt̂ĺŷ d́êĺêt́êd́ f̂ŕôḿ t̂h́ê Ẃêb́ P̂ĺât́f̂ór̂ḿ. Ît́ îś ŝt́îĺl̂ áv̂áîĺâb́l̂é ŵh́êń b̂úîĺd̂ín̂ǵ ŵít̂h́ `IS_FUCHSIA`, b̂út̂ ẃê ín̂t́êńd̂ t́ô d́êĺêt́ê ít̂ áŝ śôón̂ áŝ ṕôśŝíb̂ĺê. Śt̂óp̂ d́êṕêńd̂ín̂ǵ ôń ît́. Ŝéê h́t̂t́p̂ś://ĉŕb̂úĝ.ćôḿ/1302249 f̂ór̂ śt̂át̂úŝ." }, - "lighthouse-core/audits/deprecations.js | rtcpMuxPolicyNegotiate": { + "lighthouse-core/audits/deprecations-strings.js | rtcpMuxPolicyNegotiate": { "message": "T̂h́ê `rtcpMuxPolicy` óp̂t́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." }, - "lighthouse-core/audits/deprecations.js | rtpDataChannel": { - "message": "R̂T́P̂ d́ât́â ćĥán̂ńêĺŝ ár̂é n̂ó l̂ón̂ǵêŕ ŝúp̂ṕôŕt̂éd̂. T́ĥé `RtpDataChannels` ĉón̂śt̂ŕâín̂t́ îś ĉúr̂ŕêńt̂ĺŷ íĝńôŕêd́, âńd̂ ḿâý ĉáûśê án̂ ér̂ŕôŕ ât́ â ĺât́êŕ d̂át̂é." - }, - "lighthouse-core/audits/deprecations.js | selectionAddRangeIntersect": { - "message": "T̂h́ê b́êh́âv́îór̂ t́ĥát̂ `Selection.addRange()` ḿêŕĝéŝ éx̂íŝt́îńĝ Ŕâńĝé âńd̂ t́ĥé ŝṕêćîf́îéd̂ Ŕâńĝé ŵáŝ ŕêḿôv́êd́." - }, - "lighthouse-core/audits/deprecations.js | sharedArrayBufferConstructedWithoutIsolation": { + "lighthouse-core/audits/deprecations-strings.js | sharedArrayBufferConstructedWithoutIsolation": { "message": "`SharedArrayBuffer` ŵíl̂ĺ r̂éq̂úîŕê ćr̂óŝś-ôŕîǵîń îśôĺât́îón̂. Śêé ĥt́t̂ṕŝ://d́êv́êĺôṕêŕ.ĉh́r̂óm̂é.ĉóm̂/b́l̂óĝ/én̂áb̂ĺîńĝ-śĥár̂éd̂-ár̂ŕâý-b̂úf̂f́êŕ/ f̂ór̂ ḿôŕê d́êt́âíl̂ś." }, - "lighthouse-core/audits/deprecations.js | textToSpeech_DisallowedByAutoplay": { + "lighthouse-core/audits/deprecations-strings.js | textToSpeech_DisallowedByAutoplay": { "message": "`speechSynthesis.speak()` ŵít̂h́ôút̂ úŝér̂ áĉt́îv́ât́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." }, - "lighthouse-core/audits/deprecations.js | title": { - "message": "Âv́ôíd̂ś d̂ép̂ŕêćât́êd́ ÂṔÎś" - }, - "lighthouse-core/audits/deprecations.js | unknownDeprecation": { - "message": "..." + "lighthouse-core/audits/deprecations-strings.js | title": { + "message": "D̂ép̂ŕêćât́êd́ F̂éât́ûŕê Úŝéd̂" }, - "lighthouse-core/audits/deprecations.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { + "lighthouse-core/audits/deprecations-strings.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { "message": "Êx́t̂én̂śîón̂ś ŝh́ôúl̂d́ ôṕt̂ ín̂t́ô ćr̂óŝś-ôŕîǵîń îśôĺât́îón̂ t́ô ćôńt̂ín̂úê úŝín̂ǵ `SharedArrayBuffer`. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/d̂óĉś/êx́t̂én̂śîón̂ś/m̂v́3/ĉŕôśŝ-ór̂íĝín̂-íŝól̂át̂íôń/." }, - "lighthouse-core/audits/deprecations.js | webCodecsVideoFrameDefaultTimestamp": { - "message": "Ĉón̂śt̂ŕûćt̂ín̂ǵ â `VideoFrame` ẃît́ĥóût́ â t́îḿêśt̂ám̂ṕ îś d̂ép̂ŕêćât́êd́ âńd̂ śûṕp̂ór̂t́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂. Ṕl̂éâśê ṕr̂óv̂íd̂é â t́îḿêśt̂ám̂ṕ v̂íâ `VideoFrameInit`." + "lighthouse-core/audits/deprecations-strings.js | vendorSpecificApi": { + "message": "{PH1} îś v̂én̂d́ôŕ-ŝṕêćîf́îć. P̂ĺêáŝé ûśê t́ĥé ŝt́âńd̂ár̂d́ {PH2} îńŝt́êád̂." }, - "lighthouse-core/audits/deprecations.js | xhrJSONEncodingDetection": { + "lighthouse-core/audits/deprecations-strings.js | xhrJSONEncodingDetection": { "message": "ÛT́F̂-16 íŝ ńôt́ ŝúp̂ṕôŕt̂éd̂ b́ŷ ŕêśp̂ón̂śê j́ŝón̂ ín̂ `XMLHttpRequest`" }, - "lighthouse-core/audits/deprecations.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { + "lighthouse-core/audits/deprecations-strings.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { "message": "Ŝýn̂ćĥŕôńôúŝ `XMLHttpRequest` ón̂ t́ĥé m̂áîń t̂h́r̂éâd́ îś d̂ép̂ŕêćât́êd́ b̂éĉáûśê óf̂ ít̂ś d̂ét̂ŕîḿêńt̂ál̂ éf̂f́êćt̂ś t̂ó t̂h́ê én̂d́ ûśêŕ’ŝ éx̂ṕêŕîén̂ćê. F́ôŕ m̂ór̂é ĥél̂ṕ, ĉh́êćk̂ h́t̂t́p̂ś://x̂h́r̂.śp̂éĉ.ẃĥát̂ẃĝ.ór̂ǵ/." }, - "lighthouse-core/audits/deprecations.js | xrSupportsSession": { + "lighthouse-core/audits/deprecations-strings.js | xrSupportsSession": { "message": "`supportsSession()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `isSessionSupported()` án̂d́ ĉh́êćk̂ t́ĥé r̂éŝól̂v́êd́ b̂óôĺêán̂ v́âĺûé îńŝt́êád̂." }, + "lighthouse-core/audits/deprecations.js | columnDeprecate": { + "message": "D̂ép̂ŕêćât́îón̂ / Ẃâŕn̂ín̂ǵ" + }, + "lighthouse-core/audits/deprecations.js | columnLine": { + "message": "L̂ín̂é" + }, + "lighthouse-core/audits/deprecations.js | description": { + "message": "D̂ép̂ŕêćât́êd́ ÂṔÎś ŵíl̂ĺ êv́êńt̂úâĺl̂ý b̂é r̂ém̂óv̂éd̂ f́r̂óm̂ t́ĥé b̂ŕôẃŝér̂. [Ĺêár̂ń m̂ór̂é](https://web.dev/deprecations/)." + }, + "lighthouse-core/audits/deprecations.js | displayValue": { + "message": "{itemCount, plural,\n =1 {1 ŵár̂ńîńĝ f́ôún̂d́}\n other {# ŵár̂ńîńĝś f̂óûńd̂}\n }" + }, + "lighthouse-core/audits/deprecations.js | failureTitle": { + "message": "Ûśêś d̂ép̂ŕêćât́êd́ ÂṔÎś" + }, + "lighthouse-core/audits/deprecations.js | title": { + "message": "Âv́ôíd̂ś d̂ép̂ŕêćât́êd́ ÂṔÎś" + }, "lighthouse-core/audits/dobetterweb/charset.js | description": { "message": "Â ćĥár̂áĉt́êŕ êńĉód̂ín̂ǵ d̂éĉĺâŕât́îón̂ íŝ ŕêq́ûír̂éd̂. Ít̂ ćâń b̂é d̂ón̂é ŵít̂h́ â `` t́âǵ îń t̂h́ê f́îŕŝt́ 1024 b̂ýt̂éŝ óf̂ t́ĥé ĤT́M̂Ĺ ôŕ îń t̂h́ê Ćôńt̂én̂t́-T̂ýp̂é ĤT́T̂Ṕ r̂éŝṕôńŝé ĥéâd́êŕ. [L̂éâŕn̂ ḿôŕê](https://web.dev/charset/)." }, diff --git a/yarn.lock b/yarn.lock index 2a611988cdd0..150418c665c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2557,10 +2557,10 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -chrome-devtools-frontend@1.0.922924: - version "1.0.922924" - resolved "https://registry.yarnpkg.com/chrome-devtools-frontend/-/chrome-devtools-frontend-1.0.922924.tgz#ef05c7f1af8045aa9b2b52e10525daf9d58e5721" - integrity sha512-Ha9vpN3uo7rQFFcZLOzR5WO6JrSpCqLYBo0cPMuXQpsn6bsnIfwtrQZVHPY7kDt2+c8O4m9jVt24XQrhKGngmw== +chrome-devtools-frontend@1.0.1011873: + version "1.0.1011873" + resolved "https://registry.yarnpkg.com/chrome-devtools-frontend/-/chrome-devtools-frontend-1.0.1011873.tgz#cc8962fc2bec009bee6f7a7e759edef30e945091" + integrity sha512-OQkTyDR5QK8f7ksUUkv7eau47Lo/IT5mAnP7JBn6B9fjAKeCdlUw16vqR10ktnoI4tU0g9lF8rXwGZU7zUQY7Q== chrome-launcher@^0.15.1: version "0.15.1" From 035a364e921a3988b0786627a5d42fa9731474cc Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 7 Jul 2022 11:57:44 -0700 Subject: [PATCH 3/6] another test --- lighthouse-core/test/audits/deprecations-test.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lighthouse-core/test/audits/deprecations-test.js b/lighthouse-core/test/audits/deprecations-test.js index d1959390c7fa..b2e5b57db42a 100644 --- a/lighthouse-core/test/audits/deprecations-test.js +++ b/lighthouse-core/test/audits/deprecations-test.js @@ -51,6 +51,14 @@ describe('Deprecations audit', () => { columnNumber: 100, }, }, + { + type: 'PrefixedVideoDisplayingFullscreen', + sourceCodeLocation: { + url: URL, + lineNumber: 101, + columnNumber: 100, + }, + }, ], }, SourceMaps: [], @@ -58,8 +66,8 @@ describe('Deprecations audit', () => { }, context); assert.equal(auditResult.score, 0); - expect(auditResult.displayValue).toBeDisplayString('3 warnings found'); - assert.equal(auditResult.details.items.length, 3); + expect(auditResult.displayValue).toBeDisplayString('4 warnings found'); + assert.equal(auditResult.details.items.length, 4); assert.equal(auditResult.details.items[0].value, 'Deprecation message 123'); assert.equal(auditResult.details.items[0].source.url, URL); assert.equal(auditResult.details.items[0].source.line, 123); @@ -75,5 +83,8 @@ describe('Deprecations audit', () => { text: expect.toBeDisplayString('This change will go into effect with milestone 109.'), url: 'https://chromiumdash.appspot.com/schedule', }); + expect(auditResult.details.items[3].value).toBeDisplayString( + // eslint-disable-next-line max-len + 'HTMLVideoElement.webkitDisplayingFullscreen is deprecated. Please use Document.fullscreenElement instead.'); }); }); From 35e4692a8434bdf1fba2077deb719d6119947e2a Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 7 Jul 2022 11:59:36 -0700 Subject: [PATCH 4/6] docs --- docs/releasing.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/releasing.md b/docs/releasing.md index cf722b67daac..fac43402abee 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -47,6 +47,8 @@ In general, Lighthouse should be using the latest version of all of these depend 1. `axe-core` 1. `js-library-detector` 1. `chrome-launcher` +1. `chrome-devtools-frontend` +1. `devtools-protocol` ### On the scheduled release date From 3ef25d2c2c2a70fafc8cdfef1d6e6a4ef8d5c357 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 7 Jul 2022 12:20:25 -0700 Subject: [PATCH 5/6] fix smoke --- .../test/smokehouse/test-definitions/dobetterweb.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb.js b/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb.js index edc8e4fefe4f..a5da83031a62 100644 --- a/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb.js +++ b/lighthouse-cli/test/smokehouse/test-definitions/dobetterweb.js @@ -311,7 +311,7 @@ const expectations = { details: { items: [ { - value: /'window.webkitStorageInfo' is deprecated/, + value: /`window.webkitStorageInfo` is deprecated/, source: { type: 'source-location', url: 'http://localhost:10200/dobetterweb/dbw_tester.js', @@ -322,7 +322,7 @@ const expectations = { subItems: undefined, }, { - value: /Synchronous XMLHttpRequest on the main thread is deprecated/, + value: /Synchronous `XMLHttpRequest` on the main thread is deprecated/, source: { type: 'source-location', url: 'http://localhost:10200/dobetterweb/dbw_tester.html', From 5dc0bf4e252cb53ad8e5ac8694eb871608353fc2 Mon Sep 17 00:00:00 2001 From: Connor Clark Date: Thu, 7 Jul 2022 13:23:04 -0700 Subject: [PATCH 6/6] move to lib --- build/build-cdt-strings.js | 2 +- lighthouse-core/audits/deprecations.js | 2 +- .../{audits => lib}/deprecations-strings.js | 0 shared/localization/locales/en-US.json | 264 +++++++++--------- shared/localization/locales/en-XL.json | 264 +++++++++--------- 5 files changed, 266 insertions(+), 266 deletions(-) rename lighthouse-core/{audits => lib}/deprecations-strings.js (100%) diff --git a/build/build-cdt-strings.js b/build/build-cdt-strings.js index 338dc194476a..0e6ae6909866 100644 --- a/build/build-cdt-strings.js +++ b/build/build-cdt-strings.js @@ -10,7 +10,7 @@ import {LH_ROOT} from '../root.js'; // eslint-disable-next-line max-len const inFile = `${LH_ROOT}/node_modules/chrome-devtools-frontend/front_end/models/issues_manager/DeprecationIssue.ts`; -const outFile = `${LH_ROOT}/lighthouse-core/audits/deprecations-strings.js`; +const outFile = `${LH_ROOT}/lighthouse-core/lib/deprecations-strings.js`; const code = fs.readFileSync(inFile, 'utf-8'); diff --git a/lighthouse-core/audits/deprecations.js b/lighthouse-core/audits/deprecations.js index f36cdc00366e..4da0ef584015 100644 --- a/lighthouse-core/audits/deprecations.js +++ b/lighthouse-core/audits/deprecations.js @@ -12,7 +12,7 @@ const Audit = require('./audit.js'); const JsBundles = require('../computed/js-bundles.js'); const i18n = require('../lib/i18n/i18n.js'); -const {getIssueDetailDescription} = require('./deprecations-strings.js'); +const {getIssueDetailDescription} = require('../lib/deprecations-strings.js'); /* eslint-disable max-len */ const UIStrings = { diff --git a/lighthouse-core/audits/deprecations-strings.js b/lighthouse-core/lib/deprecations-strings.js similarity index 100% rename from lighthouse-core/audits/deprecations-strings.js rename to lighthouse-core/lib/deprecations-strings.js diff --git a/shared/localization/locales/en-US.json b/shared/localization/locales/en-US.json index 4c40868eedcd..a19ace62c2fc 100644 --- a/shared/localization/locales/en-US.json +++ b/shared/localization/locales/en-US.json @@ -746,138 +746,6 @@ "lighthouse-core/audits/csp-xss.js | title": { "message": "Ensure CSP is effective against XSS attacks" }, - "lighthouse-core/audits/deprecations-strings.js | authorizationCoveredByWildcard": { - "message": "Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling." - }, - "lighthouse-core/audits/deprecations-strings.js | canRequestURLHTTPContainingNewline": { - "message": "Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources." - }, - "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesConnectionInfo": { - "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2." - }, - "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesFirstPaintAfterLoadTime": { - "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing." - }, - "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesWasAlternateProtocolAvailable": { - "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2." - }, - "lighthouse-core/audits/deprecations-strings.js | cookieWithTruncatingChar": { - "message": "Cookies containing a `(0|r|n)` character will be rejected instead of truncated." - }, - "lighthouse-core/audits/deprecations-strings.js | crossOriginAccessBasedOnDocumentDomain": { - "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting `document.domain`." - }, - "lighthouse-core/audits/deprecations-strings.js | crossOriginWindowApi": { - "message": "Triggering {PH1} from cross origin iframes has been deprecated and will be removed in the future." - }, - "lighthouse-core/audits/deprecations-strings.js | cssSelectorInternalMediaControlsOverlayCastButton": { - "message": "The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector." - }, - "lighthouse-core/audits/deprecations-strings.js | deprecatedWithReplacement": { - "message": "{PH1} is deprecated. Please use {PH2} instead." - }, - "lighthouse-core/audits/deprecations-strings.js | deprecationExample": { - "message": "This is an example of a translated deprecation issue message." - }, - "lighthouse-core/audits/deprecations-strings.js | documentDomainSettingWithoutOriginAgentClusterHeader": { - "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details." - }, - "lighthouse-core/audits/deprecations-strings.js | eventPath": { - "message": "`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` instead." - }, - "lighthouse-core/audits/deprecations-strings.js | feature": { - "message": "Check the feature status page for more details." - }, - "lighthouse-core/audits/deprecations-strings.js | geolocationInsecureOrigin": { - "message": "`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." - }, - "lighthouse-core/audits/deprecations-strings.js | geolocationInsecureOriginDeprecatedNotRemoved": { - "message": "`getCurrentPosition()` and `watchPosition()` are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." - }, - "lighthouse-core/audits/deprecations-strings.js | getUserMediaInsecureOrigin": { - "message": "`getUserMedia()` no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." - }, - "lighthouse-core/audits/deprecations-strings.js | hostCandidateAttributeGetter": { - "message": "`RTCPeerConnectionIceErrorEvent.hostCandidate` is deprecated. Please use `RTCPeerConnectionIceErrorEvent.address` or `RTCPeerConnectionIceErrorEvent.port` instead." - }, - "lighthouse-core/audits/deprecations-strings.js | insecurePrivateNetworkSubresourceRequest": { - "message": "The website requested a subresource from a network that it could only access because of its users' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them." - }, - "lighthouse-core/audits/deprecations-strings.js | legacyConstraintGoogIPv6": { - "message": "IPv6 is enabled-by-default and the ability to disable it using `googIPv6` is targeted to be removed in M108, after which it will be ignored. Please stop using this legacy constraint." - }, - "lighthouse-core/audits/deprecations-strings.js | localCSSFileExtensionRejected": { - "message": "CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension." - }, - "lighthouse-core/audits/deprecations-strings.js | mediaSourceAbortRemove": { - "message": "Using `SourceBuffer.abort()` to abort `remove()`'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should listen to the `updateend` event instead. `abort()` is intended to only abort an asynchronous media append or reset parser state." - }, - "lighthouse-core/audits/deprecations-strings.js | mediaSourceDurationTruncatingBuffered": { - "message": "Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`." - }, - "lighthouse-core/audits/deprecations-strings.js | milestone": { - "message": "This change will go into effect with milestone {milestone}." - }, - "lighthouse-core/audits/deprecations-strings.js | noSysexWebMIDIWithoutPermission": { - "message": "Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`." - }, - "lighthouse-core/audits/deprecations-strings.js | notificationInsecureOrigin": { - "message": "The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." - }, - "lighthouse-core/audits/deprecations-strings.js | notificationPermissionRequestedIframe": { - "message": "Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead." - }, - "lighthouse-core/audits/deprecations-strings.js | obsoleteWebRtcCipherSuite": { - "message": "Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed." - }, - "lighthouse-core/audits/deprecations-strings.js | pictureSourceSrc": { - "message": "`` with a `` parent is invalid and therefore ignored. Please use `` instead." - }, - "lighthouse-core/audits/deprecations-strings.js | prefixedStorageInfo": { - "message": "`window.webkitStorageInfo` is deprecated. Please use `navigator.webkitTemporaryStorage` or `navigator.webkitPersistentStorage` instead." - }, - "lighthouse-core/audits/deprecations-strings.js | requestedSubresourceWithEmbeddedCredentials": { - "message": "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcConstraintEnableDtlsSrtpFalse": { - "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES key negotiation` method. This functionality is removed; use a service that supports `DTLS key negotiation` instead." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcConstraintEnableDtlsSrtpTrue": { - "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { - "message": "`Complex Plan B SDP` detected. This dialect of the `Session Description Protocol` is no longer supported. Please use `Unified Plan SDP` instead." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcPeerConnectionSdpSemanticsPlanB": { - "message": "`Plan B SDP semantics`, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the `Session Description Protocol` that has been permanently deleted from the Web Platform. It is still available when building with `IS_FUCHSIA`, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcpMuxPolicyNegotiate": { - "message": "The `rtcpMuxPolicy` option is deprecated and will be removed." - }, - "lighthouse-core/audits/deprecations-strings.js | sharedArrayBufferConstructedWithoutIsolation": { - "message": "`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details." - }, - "lighthouse-core/audits/deprecations-strings.js | textToSpeech_DisallowedByAutoplay": { - "message": "`speechSynthesis.speak()` without user activation is deprecated and will be removed." - }, - "lighthouse-core/audits/deprecations-strings.js | title": { - "message": "Deprecated Feature Used" - }, - "lighthouse-core/audits/deprecations-strings.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { - "message": "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/." - }, - "lighthouse-core/audits/deprecations-strings.js | vendorSpecificApi": { - "message": "{PH1} is vendor-specific. Please use the standard {PH2} instead." - }, - "lighthouse-core/audits/deprecations-strings.js | xhrJSONEncodingDetection": { - "message": "UTF-16 is not supported by response json in `XMLHttpRequest`" - }, - "lighthouse-core/audits/deprecations-strings.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { - "message": "Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help, check https://xhr.spec.whatwg.org/." - }, - "lighthouse-core/audits/deprecations-strings.js | xrSupportsSession": { - "message": "`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead." - }, "lighthouse-core/audits/deprecations.js | columnDeprecate": { "message": "Deprecation / Warning" }, @@ -2033,6 +1901,138 @@ "lighthouse-core/lib/csp-evaluator.js | unsafeInlineFallback": { "message": "Consider adding 'unsafe-inline' (ignored by browsers supporting nonces/hashes) to be backward compatible with older browsers." }, + "lighthouse-core/lib/deprecations-strings.js | authorizationCoveredByWildcard": { + "message": "Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling." + }, + "lighthouse-core/lib/deprecations-strings.js | canRequestURLHTTPContainingNewline": { + "message": "Resource requests whose URLs contained both removed whitespace `(n|r|t)` characters and less-than characters (`<`) are blocked. Please remove newlines and encode less-than characters from places like element attribute values in order to load these resources." + }, + "lighthouse-core/lib/deprecations-strings.js | chromeLoadTimesConnectionInfo": { + "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: Navigation Timing 2." + }, + "lighthouse-core/lib/deprecations-strings.js | chromeLoadTimesFirstPaintAfterLoadTime": { + "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: Paint Timing." + }, + "lighthouse-core/lib/deprecations-strings.js | chromeLoadTimesWasAlternateProtocolAvailable": { + "message": "`chrome.loadTimes()` is deprecated, instead use standardized API: `nextHopProtocol` in Navigation Timing 2." + }, + "lighthouse-core/lib/deprecations-strings.js | cookieWithTruncatingChar": { + "message": "Cookies containing a `(0|r|n)` character will be rejected instead of truncated." + }, + "lighthouse-core/lib/deprecations-strings.js | crossOriginAccessBasedOnDocumentDomain": { + "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. This deprecation warning is for a cross-origin access that was enabled by setting `document.domain`." + }, + "lighthouse-core/lib/deprecations-strings.js | crossOriginWindowApi": { + "message": "Triggering {PH1} from cross origin iframes has been deprecated and will be removed in the future." + }, + "lighthouse-core/lib/deprecations-strings.js | cssSelectorInternalMediaControlsOverlayCastButton": { + "message": "The `disableRemotePlayback` attribute should be used in order to disable the default Cast integration instead of using `-internal-media-controls-overlay-cast-button` selector." + }, + "lighthouse-core/lib/deprecations-strings.js | deprecatedWithReplacement": { + "message": "{PH1} is deprecated. Please use {PH2} instead." + }, + "lighthouse-core/lib/deprecations-strings.js | deprecationExample": { + "message": "This is an example of a translated deprecation issue message." + }, + "lighthouse-core/lib/deprecations-strings.js | documentDomainSettingWithoutOriginAgentClusterHeader": { + "message": "Relaxing the same-origin policy by setting `document.domain` is deprecated, and will be disabled by default. To continue using this feature, please opt-out of origin-keyed agent clusters by sending an `Origin-Agent-Cluster: ?0` header along with the HTTP response for the document and frames. See https://developer.chrome.com/blog/immutable-document-domain/ for more details." + }, + "lighthouse-core/lib/deprecations-strings.js | eventPath": { + "message": "`Event.path` is deprecated and will be removed. Please use `Event.composedPath()` instead." + }, + "lighthouse-core/lib/deprecations-strings.js | feature": { + "message": "Check the feature status page for more details." + }, + "lighthouse-core/lib/deprecations-strings.js | geolocationInsecureOrigin": { + "message": "`getCurrentPosition()` and `watchPosition()` no longer work on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." + }, + "lighthouse-core/lib/deprecations-strings.js | geolocationInsecureOriginDeprecatedNotRemoved": { + "message": "`getCurrentPosition()` and `watchPosition()` are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." + }, + "lighthouse-core/lib/deprecations-strings.js | getUserMediaInsecureOrigin": { + "message": "`getUserMedia()` no longer works on insecure origins. To use this feature, you should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." + }, + "lighthouse-core/lib/deprecations-strings.js | hostCandidateAttributeGetter": { + "message": "`RTCPeerConnectionIceErrorEvent.hostCandidate` is deprecated. Please use `RTCPeerConnectionIceErrorEvent.address` or `RTCPeerConnectionIceErrorEvent.port` instead." + }, + "lighthouse-core/lib/deprecations-strings.js | insecurePrivateNetworkSubresourceRequest": { + "message": "The website requested a subresource from a network that it could only access because of its users' privileged network position. These requests expose non-public devices and servers to the internet, increasing the risk of a cross-site request forgery (CSRF) attack, and/or information leakage. To mitigate these risks, Chrome deprecates requests to non-public subresources when initiated from non-secure contexts, and will start blocking them." + }, + "lighthouse-core/lib/deprecations-strings.js | legacyConstraintGoogIPv6": { + "message": "IPv6 is enabled-by-default and the ability to disable it using `googIPv6` is targeted to be removed in M108, after which it will be ignored. Please stop using this legacy constraint." + }, + "lighthouse-core/lib/deprecations-strings.js | localCSSFileExtensionRejected": { + "message": "CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension." + }, + "lighthouse-core/lib/deprecations-strings.js | mediaSourceAbortRemove": { + "message": "Using `SourceBuffer.abort()` to abort `remove()`'s asynchronous range removal is deprecated due to specification change. Support will be removed in the future. You should listen to the `updateend` event instead. `abort()` is intended to only abort an asynchronous media append or reset parser state." + }, + "lighthouse-core/lib/deprecations-strings.js | mediaSourceDurationTruncatingBuffered": { + "message": "Setting `MediaSource.duration` below the highest presentation timestamp of any buffered coded frames is deprecated due to specification change. Support for implicit removal of truncated buffered media will be removed in the future. You should instead perform explicit `remove(newDuration, oldDuration)` on all `sourceBuffers`, where `newDuration < oldDuration`." + }, + "lighthouse-core/lib/deprecations-strings.js | milestone": { + "message": "This change will go into effect with milestone {milestone}." + }, + "lighthouse-core/lib/deprecations-strings.js | noSysexWebMIDIWithoutPermission": { + "message": "Web MIDI will ask a permission to use even if the sysex is not specified in the `MIDIOptions`." + }, + "lighthouse-core/lib/deprecations-strings.js | notificationInsecureOrigin": { + "message": "The Notification API may no longer be used from insecure origins. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gle/chrome-insecure-origins for more details." + }, + "lighthouse-core/lib/deprecations-strings.js | notificationPermissionRequestedIframe": { + "message": "Permission for the Notification API may no longer be requested from a cross-origin iframe. You should consider requesting permission from a top-level frame or opening a new window instead." + }, + "lighthouse-core/lib/deprecations-strings.js | obsoleteWebRtcCipherSuite": { + "message": "Your partner is negotiating an obsolete (D)TLS version. Please check with your partner to have this fixed." + }, + "lighthouse-core/lib/deprecations-strings.js | pictureSourceSrc": { + "message": "`` with a `` parent is invalid and therefore ignored. Please use `` instead." + }, + "lighthouse-core/lib/deprecations-strings.js | prefixedStorageInfo": { + "message": "`window.webkitStorageInfo` is deprecated. Please use `navigator.webkitTemporaryStorage` or `navigator.webkitPersistentStorage` instead." + }, + "lighthouse-core/lib/deprecations-strings.js | requestedSubresourceWithEmbeddedCredentials": { + "message": "Subresource requests whose URLs contain embedded credentials (e.g. `https://user:pass@host/`) are blocked." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcConstraintEnableDtlsSrtpFalse": { + "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `false` value for this constraint, which is interpreted as an attempt to use the removed `SDES key negotiation` method. This functionality is removed; use a service that supports `DTLS key negotiation` instead." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcConstraintEnableDtlsSrtpTrue": { + "message": "The constraint `DtlsSrtpKeyAgreement` is removed. You have specified a `true` value for this constraint, which had no effect, but you can remove this constraint for tidiness." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { + "message": "`Complex Plan B SDP` detected. This dialect of the `Session Description Protocol` is no longer supported. Please use `Unified Plan SDP` instead." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcPeerConnectionSdpSemanticsPlanB": { + "message": "`Plan B SDP semantics`, which is used when constructing an `RTCPeerConnection` with `{sdpSemantics:plan-b}`, is a legacy non-standard version of the `Session Description Protocol` that has been permanently deleted from the Web Platform. It is still available when building with `IS_FUCHSIA`, but we intend to delete it as soon as possible. Stop depending on it. See https://crbug.com/1302249 for status." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcpMuxPolicyNegotiate": { + "message": "The `rtcpMuxPolicy` option is deprecated and will be removed." + }, + "lighthouse-core/lib/deprecations-strings.js | sharedArrayBufferConstructedWithoutIsolation": { + "message": "`SharedArrayBuffer` will require cross-origin isolation. See https://developer.chrome.com/blog/enabling-shared-array-buffer/ for more details." + }, + "lighthouse-core/lib/deprecations-strings.js | textToSpeech_DisallowedByAutoplay": { + "message": "`speechSynthesis.speak()` without user activation is deprecated and will be removed." + }, + "lighthouse-core/lib/deprecations-strings.js | title": { + "message": "Deprecated Feature Used" + }, + "lighthouse-core/lib/deprecations-strings.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { + "message": "Extensions should opt into cross-origin isolation to continue using `SharedArrayBuffer`. See https://developer.chrome.com/docs/extensions/mv3/cross-origin-isolation/." + }, + "lighthouse-core/lib/deprecations-strings.js | vendorSpecificApi": { + "message": "{PH1} is vendor-specific. Please use the standard {PH2} instead." + }, + "lighthouse-core/lib/deprecations-strings.js | xhrJSONEncodingDetection": { + "message": "UTF-16 is not supported by response json in `XMLHttpRequest`" + }, + "lighthouse-core/lib/deprecations-strings.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { + "message": "Synchronous `XMLHttpRequest` on the main thread is deprecated because of its detrimental effects to the end user’s experience. For more help, check https://xhr.spec.whatwg.org/." + }, + "lighthouse-core/lib/deprecations-strings.js | xrSupportsSession": { + "message": "`supportsSession()` is deprecated. Please use `isSessionSupported()` and check the resolved boolean value instead." + }, "lighthouse-core/lib/i18n/i18n.js | columnBlockingTime": { "message": "Main-Thread Blocking Time" }, diff --git a/shared/localization/locales/en-XL.json b/shared/localization/locales/en-XL.json index 80fa94fdde19..a07b2a2129e9 100644 --- a/shared/localization/locales/en-XL.json +++ b/shared/localization/locales/en-XL.json @@ -746,138 +746,6 @@ "lighthouse-core/audits/csp-xss.js | title": { "message": "Êńŝúr̂é ĈŚP̂ íŝ éf̂f́êćt̂ív̂é âǵâín̂śt̂ X́ŜŚ ât́t̂áĉḱŝ" }, - "lighthouse-core/audits/deprecations-strings.js | authorizationCoveredByWildcard": { - "message": "Âút̂h́ôŕîźât́îón̂ ẃîĺl̂ ńôt́ b̂é ĉóv̂ér̂éd̂ b́ŷ t́ĥé ŵíl̂d́ĉár̂d́ ŝým̂b́ôĺ (*) îń ĈÓR̂Ś `Access-Control-Allow-Headers` ĥán̂d́l̂ín̂ǵ." - }, - "lighthouse-core/audits/deprecations-strings.js | canRequestURLHTTPContainingNewline": { - "message": "R̂éŝóûŕĉé r̂éq̂úêśt̂ś ŵh́ôśê ÚR̂Ĺŝ ćôńt̂áîńêd́ b̂ót̂h́ r̂ém̂óv̂éd̂ ẃĥít̂éŝṕâćê `(n|r|t)` ćĥár̂áĉt́êŕŝ án̂d́ l̂éŝś-t̂h́âń ĉh́âŕâćt̂ér̂ś (`<`) âŕê b́l̂óĉḱêd́. P̂ĺêáŝé r̂ém̂óv̂é n̂éŵĺîńêś âńd̂ én̂ćôd́ê ĺêśŝ-t́ĥán̂ ćĥár̂áĉt́êŕŝ f́r̂óm̂ ṕl̂áĉéŝ ĺîḱê él̂ém̂én̂t́ ât́t̂ŕîb́ût́ê v́âĺûéŝ ín̂ ór̂d́êŕ t̂ó l̂óâd́ t̂h́êśê ŕêśôúr̂ćêś." - }, - "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesConnectionInfo": { - "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: Ńâv́îǵât́îón̂ T́îḿîńĝ 2." - }, - "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesFirstPaintAfterLoadTime": { - "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: Ṕâín̂t́ T̂ím̂ín̂ǵ." - }, - "lighthouse-core/audits/deprecations-strings.js | chromeLoadTimesWasAlternateProtocolAvailable": { - "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: `nextHopProtocol` ín̂ Ńâv́îǵât́îón̂ T́îḿîńĝ 2." - }, - "lighthouse-core/audits/deprecations-strings.js | cookieWithTruncatingChar": { - "message": "Ĉóôḱîéŝ ćôńt̂áîńîńĝ á `(0|r|n)` ĉh́âŕâćt̂ér̂ ẃîĺl̂ b́ê ŕêj́êćt̂éd̂ ín̂śt̂éâd́ ôf́ t̂ŕûńĉát̂éd̂." - }, - "lighthouse-core/audits/deprecations-strings.js | crossOriginAccessBasedOnDocumentDomain": { - "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂h́îś d̂ép̂ŕêćât́îón̂ ẃâŕn̂ín̂ǵ îś f̂ór̂ á ĉŕôśŝ-ór̂íĝín̂ áĉćêśŝ t́ĥát̂ ẃâś êńâb́l̂éd̂ b́ŷ śêt́t̂ín̂ǵ `document.domain`." - }, - "lighthouse-core/audits/deprecations-strings.js | crossOriginWindowApi": { - "message": "T̂ŕîǵĝér̂ín̂ǵ {PH1} f̂ŕôḿ ĉŕôśŝ ór̂íĝín̂ íf̂ŕâḿêś ĥáŝ b́êén̂ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é." - }, - "lighthouse-core/audits/deprecations-strings.js | cssSelectorInternalMediaControlsOverlayCastButton": { - "message": "T̂h́ê `disableRemotePlayback` át̂t́r̂íb̂út̂é ŝh́ôúl̂d́ b̂é ûśêd́ îń ôŕd̂ér̂ t́ô d́îśâb́l̂é t̂h́ê d́êf́âúl̂t́ Ĉáŝt́ îńt̂éĝŕât́îón̂ ín̂śt̂éâd́ ôf́ ûśîńĝ `-internal-media-controls-overlay-cast-button` śêĺêćt̂ór̂." - }, - "lighthouse-core/audits/deprecations-strings.js | deprecatedWithReplacement": { - "message": "{PH1} îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê {PH2} ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations-strings.js | deprecationExample": { - "message": "T̂h́îś îś âń êx́âḿp̂ĺê óf̂ á t̂ŕâńŝĺât́êd́ d̂ép̂ŕêćât́îón̂ íŝśûé m̂éŝśâǵê." - }, - "lighthouse-core/audits/deprecations-strings.js | documentDomainSettingWithoutOriginAgentClusterHeader": { - "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂ó ĉón̂t́îńûé ûśîńĝ t́ĥíŝ f́êát̂úr̂é, p̂ĺêáŝé ôṕt̂-óût́ ôf́ ôŕîǵîń-k̂éŷéd̂ áĝén̂t́ ĉĺûśt̂ér̂ś b̂ý ŝén̂d́îńĝ án̂ `Origin-Agent-Cluster: ?0` h́êád̂ér̂ ál̂ón̂ǵ ŵít̂h́ t̂h́ê H́T̂T́P̂ ŕêśp̂ón̂śê f́ôŕ t̂h́ê d́ôćûḿêńt̂ án̂d́ f̂ŕâḿêś. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/b̂ĺôǵ/îḿm̂út̂áb̂ĺê-d́ôćûḿêńt̂-d́ôḿâín̂/ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." - }, - "lighthouse-core/audits/deprecations-strings.js | eventPath": { - "message": "`Event.path` îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́. P̂ĺêáŝé ûśê `Event.composedPath()` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations-strings.js | feature": { - "message": "Ĉh́êćk̂ t́ĥé f̂éât́ûŕê śt̂át̂úŝ ṕâǵê f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." - }, - "lighthouse-core/audits/deprecations-strings.js | geolocationInsecureOrigin": { - "message": "`getCurrentPosition()` âńd̂ `watchPosition()` ńô ĺôńĝér̂ ẃôŕk̂ ón̂ ín̂śêćûŕê ór̂íĝín̂ś. T̂ó ûśê t́ĥíŝ f́êát̂úr̂é, ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." - }, - "lighthouse-core/audits/deprecations-strings.js | geolocationInsecureOriginDeprecatedNotRemoved": { - "message": "`getCurrentPosition()` âńd̂ `watchPosition()` ár̂é d̂ép̂ŕêćât́êd́ ôń îńŝéĉúr̂é ôŕîǵîńŝ. T́ô úŝé t̂h́îś f̂éât́ûŕê, ýôú ŝh́ôúl̂d́ ĉón̂śîd́êŕ ŝẃît́ĉh́îńĝ ýôúr̂ áp̂ṕl̂íĉát̂íôń t̂ó â śêćûŕê ór̂íĝín̂, śûćĥ áŝ H́T̂T́P̂Ś. Ŝéê h́t̂t́p̂ś://ĝóô.ǵl̂é/ĉh́r̂óm̂é-îńŝéĉúr̂é-ôŕîǵîńŝ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." - }, - "lighthouse-core/audits/deprecations-strings.js | getUserMediaInsecureOrigin": { - "message": "`getUserMedia()` n̂ó l̂ón̂ǵêŕ ŵór̂ḱŝ ón̂ ín̂śêćûŕê ór̂íĝín̂ś. T̂ó ûśê t́ĥíŝ f́êát̂úr̂é, ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." - }, - "lighthouse-core/audits/deprecations-strings.js | hostCandidateAttributeGetter": { - "message": "`RTCPeerConnectionIceErrorEvent.hostCandidate` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `RTCPeerConnectionIceErrorEvent.address` ór̂ `RTCPeerConnectionIceErrorEvent.port` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations-strings.js | insecurePrivateNetworkSubresourceRequest": { - "message": "T̂h́ê ẃêb́ŝít̂é r̂éq̂úêśt̂éd̂ á ŝúb̂ŕêśôúr̂ćê f́r̂óm̂ á n̂ét̂ẃôŕk̂ t́ĥát̂ ít̂ ćôúl̂d́ ôńl̂ý âćĉéŝś b̂éĉáûśê óf̂ ít̂ś ûśêŕŝ' ṕr̂ív̂íl̂éĝéd̂ ńêt́ŵór̂ḱ p̂óŝít̂íôń. T̂h́êśê ŕêq́ûéŝt́ŝ éx̂ṕôśê ńôń-p̂úb̂ĺîć d̂év̂íĉéŝ án̂d́ ŝér̂v́êŕŝ t́ô t́ĥé îńt̂ér̂ńêt́, îńĉŕêáŝín̂ǵ t̂h́ê ŕîśk̂ óf̂ á ĉŕôśŝ-śît́ê ŕêq́ûéŝt́ f̂ór̂ǵêŕŷ (ĆŜŔF̂) át̂t́âćk̂, án̂d́/ôŕ îńf̂ór̂ḿât́îón̂ ĺêák̂áĝé. T̂ó m̂ít̂íĝát̂é t̂h́êśê ŕîśk̂ś, Ĉh́r̂óm̂é d̂ép̂ŕêćât́êś r̂éq̂úêśt̂ś t̂ó n̂ón̂-ṕûb́l̂íĉ śûb́r̂éŝóûŕĉéŝ ẃĥén̂ ín̂ít̂íât́êd́ f̂ŕôḿ n̂ón̂-śêćûŕê ćôńt̂éx̂t́ŝ, án̂d́ ŵíl̂ĺ ŝt́âŕt̂ b́l̂óĉḱîńĝ t́ĥém̂." - }, - "lighthouse-core/audits/deprecations-strings.js | legacyConstraintGoogIPv6": { - "message": "ÎṔv̂6 íŝ én̂áb̂ĺêd́-b̂ý-d̂éf̂áûĺt̂ án̂d́ t̂h́ê áb̂íl̂ít̂ý t̂ó d̂íŝáb̂ĺê ít̂ úŝín̂ǵ `googIPv6` îś t̂ár̂ǵêt́êd́ t̂ó b̂é r̂ém̂óv̂éd̂ ín̂ Ḿ108, âf́t̂ér̂ ẃĥíĉh́ ît́ ŵíl̂ĺ b̂é îǵn̂ór̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." - }, - "lighthouse-core/audits/deprecations-strings.js | localCSSFileExtensionRejected": { - "message": "ĈŚŜ ćâńn̂ót̂ b́ê ĺôád̂éd̂ f́r̂óm̂ `file:` ÚR̂Ĺŝ ún̂ĺêśŝ t́ĥéŷ én̂d́ îń â `.css` f́îĺê éx̂t́êńŝíôń." - }, - "lighthouse-core/audits/deprecations-strings.js | mediaSourceAbortRemove": { - "message": "Ûśîńĝ `SourceBuffer.abort()` t́ô áb̂ór̂t́ `remove()`'ŝ áŝýn̂ćĥŕôńôúŝ ŕâńĝé r̂ém̂óv̂ál̂ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ĺîśt̂én̂ t́ô t́ĥé `updateend` êv́êńt̂ ín̂śt̂éâd́. `abort()` îś îńt̂én̂d́êd́ t̂ó ôńl̂ý âb́ôŕt̂ án̂ áŝýn̂ćĥŕôńôúŝ ḿêd́îá âṕp̂én̂d́ ôŕ r̂éŝét̂ ṕâŕŝér̂ śt̂át̂é." - }, - "lighthouse-core/audits/deprecations-strings.js | mediaSourceDurationTruncatingBuffered": { - "message": "Ŝét̂t́îńĝ `MediaSource.duration` b́êĺôẃ t̂h́ê h́îǵĥéŝt́ p̂ŕêśêńt̂át̂íôń t̂ím̂éŝt́âḿp̂ óf̂ án̂ý b̂úf̂f́êŕêd́ ĉód̂éd̂ f́r̂ám̂éŝ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ f̂ór̂ ím̂ṕl̂íĉít̂ ŕêḿôv́âĺ ôf́ t̂ŕûńĉát̂éd̂ b́ûf́f̂ér̂éd̂ ḿêd́îá ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ín̂śt̂éâd́ p̂ér̂f́ôŕm̂ éx̂ṕl̂íĉít̂ `remove(newDuration, oldDuration)` ón̂ ál̂ĺ `sourceBuffers`, ŵh́êŕê `newDuration < oldDuration`." - }, - "lighthouse-core/audits/deprecations-strings.js | milestone": { - "message": "T̂h́îś ĉh́âńĝé ŵíl̂ĺ ĝó îńt̂ó êf́f̂éĉt́ ŵít̂h́ m̂íl̂éŝt́ôńê {milestone}." - }, - "lighthouse-core/audits/deprecations-strings.js | noSysexWebMIDIWithoutPermission": { - "message": "Ŵéb̂ ḾÎD́Î ẃîĺl̂ áŝḱ â ṕêŕm̂íŝśîón̂ t́ô úŝé êv́êń îf́ t̂h́ê śŷśêx́ îś n̂ót̂ śp̂éĉíf̂íêd́ îń t̂h́ê `MIDIOptions`." - }, - "lighthouse-core/audits/deprecations-strings.js | notificationInsecureOrigin": { - "message": "T̂h́ê Ńôt́îf́îćât́îón̂ ÁP̂Í m̂áŷ ńô ĺôńĝér̂ b́ê úŝéd̂ f́r̂óm̂ ín̂śêćûŕê ór̂íĝín̂ś. Ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." - }, - "lighthouse-core/audits/deprecations-strings.js | notificationPermissionRequestedIframe": { - "message": "P̂ér̂ḿîśŝíôń f̂ór̂ t́ĥé N̂ót̂íf̂íĉát̂íôń ÂṔÎ ḿâý n̂ó l̂ón̂ǵêŕ b̂é r̂éq̂úêśt̂éd̂ f́r̂óm̂ á ĉŕôśŝ-ór̂íĝín̂ íf̂ŕâḿê. Ýôú ŝh́ôúl̂d́ ĉón̂śîd́êŕ r̂éq̂úêśt̂ín̂ǵ p̂ér̂ḿîśŝíôń f̂ŕôḿ â t́ôṕ-l̂év̂él̂ f́r̂ám̂é ôŕ ôṕêńîńĝ á n̂éŵ ẃîńd̂óŵ ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations-strings.js | obsoleteWebRtcCipherSuite": { - "message": "Ŷóûŕ p̂ár̂t́n̂ér̂ íŝ ńêǵôt́îát̂ín̂ǵ âń ôb́ŝól̂ét̂é (D̂)T́L̂Ś v̂ér̂śîón̂. Ṕl̂éâśê ćĥéĉḱ ŵít̂h́ ŷóûŕ p̂ár̂t́n̂ér̂ t́ô h́âv́ê t́ĥíŝ f́îx́êd́." - }, - "lighthouse-core/audits/deprecations-strings.js | pictureSourceSrc": { - "message": "`` ŵít̂h́ â `` ṕâŕêńt̂ íŝ ín̂v́âĺîd́ âńd̂ t́ĥér̂éf̂ór̂é îǵn̂ór̂éd̂. Ṕl̂éâśê úŝé `` îńŝt́êád̂." - }, - "lighthouse-core/audits/deprecations-strings.js | prefixedStorageInfo": { - "message": "`window.webkitStorageInfo` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `navigator.webkitTemporaryStorage` ór̂ `navigator.webkitPersistentStorage` ín̂śt̂éâd́." - }, - "lighthouse-core/audits/deprecations-strings.js | requestedSubresourceWithEmbeddedCredentials": { - "message": "Ŝúb̂ŕêśôúr̂ćê ŕêq́ûéŝt́ŝ ẃĥóŝé ÛŔL̂ś ĉón̂t́âín̂ ém̂b́êd́d̂éd̂ ćr̂éd̂én̂t́îál̂ś (ê.ǵ. `https://user:pass@host/`) âŕê b́l̂óĉḱêd́." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcConstraintEnableDtlsSrtpFalse": { - "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `false` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ îś îńt̂ér̂ṕr̂ét̂éd̂ áŝ án̂ át̂t́êḿp̂t́ t̂ó ûśê t́ĥé r̂ém̂óv̂éd̂ `SDES key negotiation` ḿêt́ĥód̂. T́ĥíŝ f́ûńĉt́îón̂ál̂ít̂ý îś r̂ém̂óv̂éd̂; úŝé â śêŕv̂íĉé t̂h́ât́ ŝúp̂ṕôŕt̂ś `DTLS key negotiation` îńŝt́êád̂." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcConstraintEnableDtlsSrtpTrue": { - "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `true` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ ĥád̂ ńô éf̂f́êćt̂, b́ût́ ŷóû ćâń r̂ém̂óv̂é t̂h́îś ĉón̂śt̂ŕâín̂t́ f̂ór̂ t́îd́îńêśŝ." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { - "message": "`Complex Plan B SDP` d̂ét̂éĉt́êd́. T̂h́îś d̂íâĺêćt̂ óf̂ t́ĥé `Session Description Protocol` îś n̂ó l̂ón̂ǵêŕ ŝúp̂ṕôŕt̂éd̂. Ṕl̂éâśê úŝé `Unified Plan SDP` îńŝt́êád̂." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcPeerConnectionSdpSemanticsPlanB": { - "message": "`Plan B SDP semantics`, ŵh́îćĥ íŝ úŝéd̂ ẃĥén̂ ćôńŝt́r̂úĉt́îńĝ án̂ `RTCPeerConnection` ẃît́ĥ `{sdpSemantics:plan-b}`, íŝ á l̂éĝáĉý n̂ón̂-śt̂án̂d́âŕd̂ v́êŕŝíôń ôf́ t̂h́ê `Session Description Protocol` t́ĥát̂ h́âś b̂éêń p̂ér̂ḿâńêńt̂ĺŷ d́êĺêt́êd́ f̂ŕôḿ t̂h́ê Ẃêb́ P̂ĺât́f̂ór̂ḿ. Ît́ îś ŝt́îĺl̂ áv̂áîĺâb́l̂é ŵh́êń b̂úîĺd̂ín̂ǵ ŵít̂h́ `IS_FUCHSIA`, b̂út̂ ẃê ín̂t́êńd̂ t́ô d́êĺêt́ê ít̂ áŝ śôón̂ áŝ ṕôśŝíb̂ĺê. Śt̂óp̂ d́êṕêńd̂ín̂ǵ ôń ît́. Ŝéê h́t̂t́p̂ś://ĉŕb̂úĝ.ćôḿ/1302249 f̂ór̂ śt̂át̂úŝ." - }, - "lighthouse-core/audits/deprecations-strings.js | rtcpMuxPolicyNegotiate": { - "message": "T̂h́ê `rtcpMuxPolicy` óp̂t́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." - }, - "lighthouse-core/audits/deprecations-strings.js | sharedArrayBufferConstructedWithoutIsolation": { - "message": "`SharedArrayBuffer` ŵíl̂ĺ r̂éq̂úîŕê ćr̂óŝś-ôŕîǵîń îśôĺât́îón̂. Śêé ĥt́t̂ṕŝ://d́êv́êĺôṕêŕ.ĉh́r̂óm̂é.ĉóm̂/b́l̂óĝ/én̂áb̂ĺîńĝ-śĥár̂éd̂-ár̂ŕâý-b̂úf̂f́êŕ/ f̂ór̂ ḿôŕê d́êt́âíl̂ś." - }, - "lighthouse-core/audits/deprecations-strings.js | textToSpeech_DisallowedByAutoplay": { - "message": "`speechSynthesis.speak()` ŵít̂h́ôút̂ úŝér̂ áĉt́îv́ât́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." - }, - "lighthouse-core/audits/deprecations-strings.js | title": { - "message": "D̂ép̂ŕêćât́êd́ F̂éât́ûŕê Úŝéd̂" - }, - "lighthouse-core/audits/deprecations-strings.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { - "message": "Êx́t̂én̂śîón̂ś ŝh́ôúl̂d́ ôṕt̂ ín̂t́ô ćr̂óŝś-ôŕîǵîń îśôĺât́îón̂ t́ô ćôńt̂ín̂úê úŝín̂ǵ `SharedArrayBuffer`. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/d̂óĉś/êx́t̂én̂śîón̂ś/m̂v́3/ĉŕôśŝ-ór̂íĝín̂-íŝól̂át̂íôń/." - }, - "lighthouse-core/audits/deprecations-strings.js | vendorSpecificApi": { - "message": "{PH1} îś v̂én̂d́ôŕ-ŝṕêćîf́îć. P̂ĺêáŝé ûśê t́ĥé ŝt́âńd̂ár̂d́ {PH2} îńŝt́êád̂." - }, - "lighthouse-core/audits/deprecations-strings.js | xhrJSONEncodingDetection": { - "message": "ÛT́F̂-16 íŝ ńôt́ ŝúp̂ṕôŕt̂éd̂ b́ŷ ŕêśp̂ón̂śê j́ŝón̂ ín̂ `XMLHttpRequest`" - }, - "lighthouse-core/audits/deprecations-strings.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { - "message": "Ŝýn̂ćĥŕôńôúŝ `XMLHttpRequest` ón̂ t́ĥé m̂áîń t̂h́r̂éâd́ îś d̂ép̂ŕêćât́êd́ b̂éĉáûśê óf̂ ít̂ś d̂ét̂ŕîḿêńt̂ál̂ éf̂f́êćt̂ś t̂ó t̂h́ê én̂d́ ûśêŕ’ŝ éx̂ṕêŕîén̂ćê. F́ôŕ m̂ór̂é ĥél̂ṕ, ĉh́êćk̂ h́t̂t́p̂ś://x̂h́r̂.śp̂éĉ.ẃĥát̂ẃĝ.ór̂ǵ/." - }, - "lighthouse-core/audits/deprecations-strings.js | xrSupportsSession": { - "message": "`supportsSession()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `isSessionSupported()` án̂d́ ĉh́êćk̂ t́ĥé r̂éŝól̂v́êd́ b̂óôĺêán̂ v́âĺûé îńŝt́êád̂." - }, "lighthouse-core/audits/deprecations.js | columnDeprecate": { "message": "D̂ép̂ŕêćât́îón̂ / Ẃâŕn̂ín̂ǵ" }, @@ -2033,6 +1901,138 @@ "lighthouse-core/lib/csp-evaluator.js | unsafeInlineFallback": { "message": "Ĉón̂śîd́êŕ âd́d̂ín̂ǵ 'ûńŝáf̂é-îńl̂ín̂é' (îǵn̂ór̂éd̂ b́ŷ b́r̂óŵśêŕŝ śûṕp̂ór̂t́îńĝ ńôńĉéŝ/h́âśĥéŝ) t́ô b́ê b́âćk̂ẃâŕd̂ ćôḿp̂át̂íb̂ĺê ẃît́ĥ ól̂d́êŕ b̂ŕôẃŝér̂ś." }, + "lighthouse-core/lib/deprecations-strings.js | authorizationCoveredByWildcard": { + "message": "Âút̂h́ôŕîźât́îón̂ ẃîĺl̂ ńôt́ b̂é ĉóv̂ér̂éd̂ b́ŷ t́ĥé ŵíl̂d́ĉár̂d́ ŝým̂b́ôĺ (*) îń ĈÓR̂Ś `Access-Control-Allow-Headers` ĥán̂d́l̂ín̂ǵ." + }, + "lighthouse-core/lib/deprecations-strings.js | canRequestURLHTTPContainingNewline": { + "message": "R̂éŝóûŕĉé r̂éq̂úêśt̂ś ŵh́ôśê ÚR̂Ĺŝ ćôńt̂áîńêd́ b̂ót̂h́ r̂ém̂óv̂éd̂ ẃĥít̂éŝṕâćê `(n|r|t)` ćĥár̂áĉt́êŕŝ án̂d́ l̂éŝś-t̂h́âń ĉh́âŕâćt̂ér̂ś (`<`) âŕê b́l̂óĉḱêd́. P̂ĺêáŝé r̂ém̂óv̂é n̂éŵĺîńêś âńd̂ én̂ćôd́ê ĺêśŝ-t́ĥán̂ ćĥár̂áĉt́êŕŝ f́r̂óm̂ ṕl̂áĉéŝ ĺîḱê él̂ém̂én̂t́ ât́t̂ŕîb́ût́ê v́âĺûéŝ ín̂ ór̂d́êŕ t̂ó l̂óâd́ t̂h́êśê ŕêśôúr̂ćêś." + }, + "lighthouse-core/lib/deprecations-strings.js | chromeLoadTimesConnectionInfo": { + "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: Ńâv́îǵât́îón̂ T́îḿîńĝ 2." + }, + "lighthouse-core/lib/deprecations-strings.js | chromeLoadTimesFirstPaintAfterLoadTime": { + "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: Ṕâín̂t́ T̂ím̂ín̂ǵ." + }, + "lighthouse-core/lib/deprecations-strings.js | chromeLoadTimesWasAlternateProtocolAvailable": { + "message": "`chrome.loadTimes()` îś d̂ép̂ŕêćât́êd́, îńŝt́êád̂ úŝé ŝt́âńd̂ár̂d́îźêd́ ÂṔÎ: `nextHopProtocol` ín̂ Ńâv́îǵât́îón̂ T́îḿîńĝ 2." + }, + "lighthouse-core/lib/deprecations-strings.js | cookieWithTruncatingChar": { + "message": "Ĉóôḱîéŝ ćôńt̂áîńîńĝ á `(0|r|n)` ĉh́âŕâćt̂ér̂ ẃîĺl̂ b́ê ŕêj́êćt̂éd̂ ín̂śt̂éâd́ ôf́ t̂ŕûńĉát̂éd̂." + }, + "lighthouse-core/lib/deprecations-strings.js | crossOriginAccessBasedOnDocumentDomain": { + "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂h́îś d̂ép̂ŕêćât́îón̂ ẃâŕn̂ín̂ǵ îś f̂ór̂ á ĉŕôśŝ-ór̂íĝín̂ áĉćêśŝ t́ĥát̂ ẃâś êńâb́l̂éd̂ b́ŷ śêt́t̂ín̂ǵ `document.domain`." + }, + "lighthouse-core/lib/deprecations-strings.js | crossOriginWindowApi": { + "message": "T̂ŕîǵĝér̂ín̂ǵ {PH1} f̂ŕôḿ ĉŕôśŝ ór̂íĝín̂ íf̂ŕâḿêś ĥáŝ b́êén̂ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é." + }, + "lighthouse-core/lib/deprecations-strings.js | cssSelectorInternalMediaControlsOverlayCastButton": { + "message": "T̂h́ê `disableRemotePlayback` át̂t́r̂íb̂út̂é ŝh́ôúl̂d́ b̂é ûśêd́ îń ôŕd̂ér̂ t́ô d́îśâb́l̂é t̂h́ê d́êf́âúl̂t́ Ĉáŝt́ îńt̂éĝŕât́îón̂ ín̂śt̂éâd́ ôf́ ûśîńĝ `-internal-media-controls-overlay-cast-button` śêĺêćt̂ór̂." + }, + "lighthouse-core/lib/deprecations-strings.js | deprecatedWithReplacement": { + "message": "{PH1} îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê {PH2} ín̂śt̂éâd́." + }, + "lighthouse-core/lib/deprecations-strings.js | deprecationExample": { + "message": "T̂h́îś îś âń êx́âḿp̂ĺê óf̂ á t̂ŕâńŝĺât́êd́ d̂ép̂ŕêćât́îón̂ íŝśûé m̂éŝśâǵê." + }, + "lighthouse-core/lib/deprecations-strings.js | documentDomainSettingWithoutOriginAgentClusterHeader": { + "message": "R̂él̂áx̂ín̂ǵ t̂h́ê śâḿê-ór̂íĝín̂ ṕôĺîćŷ b́ŷ śêt́t̂ín̂ǵ `document.domain` îś d̂ép̂ŕêćât́êd́, âńd̂ ẃîĺl̂ b́ê d́îśâb́l̂éd̂ b́ŷ d́êf́âúl̂t́. T̂ó ĉón̂t́îńûé ûśîńĝ t́ĥíŝ f́êát̂úr̂é, p̂ĺêáŝé ôṕt̂-óût́ ôf́ ôŕîǵîń-k̂éŷéd̂ áĝén̂t́ ĉĺûśt̂ér̂ś b̂ý ŝén̂d́îńĝ án̂ `Origin-Agent-Cluster: ?0` h́êád̂ér̂ ál̂ón̂ǵ ŵít̂h́ t̂h́ê H́T̂T́P̂ ŕêśp̂ón̂śê f́ôŕ t̂h́ê d́ôćûḿêńt̂ án̂d́ f̂ŕâḿêś. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/b̂ĺôǵ/îḿm̂út̂áb̂ĺê-d́ôćûḿêńt̂-d́ôḿâín̂/ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." + }, + "lighthouse-core/lib/deprecations-strings.js | eventPath": { + "message": "`Event.path` îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́. P̂ĺêáŝé ûśê `Event.composedPath()` ín̂śt̂éâd́." + }, + "lighthouse-core/lib/deprecations-strings.js | feature": { + "message": "Ĉh́êćk̂ t́ĥé f̂éât́ûŕê śt̂át̂úŝ ṕâǵê f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." + }, + "lighthouse-core/lib/deprecations-strings.js | geolocationInsecureOrigin": { + "message": "`getCurrentPosition()` âńd̂ `watchPosition()` ńô ĺôńĝér̂ ẃôŕk̂ ón̂ ín̂śêćûŕê ór̂íĝín̂ś. T̂ó ûśê t́ĥíŝ f́êát̂úr̂é, ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." + }, + "lighthouse-core/lib/deprecations-strings.js | geolocationInsecureOriginDeprecatedNotRemoved": { + "message": "`getCurrentPosition()` âńd̂ `watchPosition()` ár̂é d̂ép̂ŕêćât́êd́ ôń îńŝéĉúr̂é ôŕîǵîńŝ. T́ô úŝé t̂h́îś f̂éât́ûŕê, ýôú ŝh́ôúl̂d́ ĉón̂śîd́êŕ ŝẃît́ĉh́îńĝ ýôúr̂ áp̂ṕl̂íĉát̂íôń t̂ó â śêćûŕê ór̂íĝín̂, śûćĥ áŝ H́T̂T́P̂Ś. Ŝéê h́t̂t́p̂ś://ĝóô.ǵl̂é/ĉh́r̂óm̂é-îńŝéĉúr̂é-ôŕîǵîńŝ f́ôŕ m̂ór̂é d̂ét̂áîĺŝ." + }, + "lighthouse-core/lib/deprecations-strings.js | getUserMediaInsecureOrigin": { + "message": "`getUserMedia()` n̂ó l̂ón̂ǵêŕ ŵór̂ḱŝ ón̂ ín̂śêćûŕê ór̂íĝín̂ś. T̂ó ûśê t́ĥíŝ f́êát̂úr̂é, ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." + }, + "lighthouse-core/lib/deprecations-strings.js | hostCandidateAttributeGetter": { + "message": "`RTCPeerConnectionIceErrorEvent.hostCandidate` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `RTCPeerConnectionIceErrorEvent.address` ór̂ `RTCPeerConnectionIceErrorEvent.port` ín̂śt̂éâd́." + }, + "lighthouse-core/lib/deprecations-strings.js | insecurePrivateNetworkSubresourceRequest": { + "message": "T̂h́ê ẃêb́ŝít̂é r̂éq̂úêśt̂éd̂ á ŝúb̂ŕêśôúr̂ćê f́r̂óm̂ á n̂ét̂ẃôŕk̂ t́ĥát̂ ít̂ ćôúl̂d́ ôńl̂ý âćĉéŝś b̂éĉáûśê óf̂ ít̂ś ûśêŕŝ' ṕr̂ív̂íl̂éĝéd̂ ńêt́ŵór̂ḱ p̂óŝít̂íôń. T̂h́êśê ŕêq́ûéŝt́ŝ éx̂ṕôśê ńôń-p̂úb̂ĺîć d̂év̂íĉéŝ án̂d́ ŝér̂v́êŕŝ t́ô t́ĥé îńt̂ér̂ńêt́, îńĉŕêáŝín̂ǵ t̂h́ê ŕîśk̂ óf̂ á ĉŕôśŝ-śît́ê ŕêq́ûéŝt́ f̂ór̂ǵêŕŷ (ĆŜŔF̂) át̂t́âćk̂, án̂d́/ôŕ îńf̂ór̂ḿât́îón̂ ĺêák̂áĝé. T̂ó m̂ít̂íĝát̂é t̂h́êśê ŕîśk̂ś, Ĉh́r̂óm̂é d̂ép̂ŕêćât́êś r̂éq̂úêśt̂ś t̂ó n̂ón̂-ṕûb́l̂íĉ śûb́r̂éŝóûŕĉéŝ ẃĥén̂ ín̂ít̂íât́êd́ f̂ŕôḿ n̂ón̂-śêćûŕê ćôńt̂éx̂t́ŝ, án̂d́ ŵíl̂ĺ ŝt́âŕt̂ b́l̂óĉḱîńĝ t́ĥém̂." + }, + "lighthouse-core/lib/deprecations-strings.js | legacyConstraintGoogIPv6": { + "message": "ÎṔv̂6 íŝ én̂áb̂ĺêd́-b̂ý-d̂éf̂áûĺt̂ án̂d́ t̂h́ê áb̂íl̂ít̂ý t̂ó d̂íŝáb̂ĺê ít̂ úŝín̂ǵ `googIPv6` îś t̂ár̂ǵêt́êd́ t̂ó b̂é r̂ém̂óv̂éd̂ ín̂ Ḿ108, âf́t̂ér̂ ẃĥíĉh́ ît́ ŵíl̂ĺ b̂é îǵn̂ór̂éd̂. Ṕl̂éâśê śt̂óp̂ úŝín̂ǵ t̂h́îś l̂éĝáĉý ĉón̂śt̂ŕâín̂t́." + }, + "lighthouse-core/lib/deprecations-strings.js | localCSSFileExtensionRejected": { + "message": "ĈŚŜ ćâńn̂ót̂ b́ê ĺôád̂éd̂ f́r̂óm̂ `file:` ÚR̂Ĺŝ ún̂ĺêśŝ t́ĥéŷ én̂d́ îń â `.css` f́îĺê éx̂t́êńŝíôń." + }, + "lighthouse-core/lib/deprecations-strings.js | mediaSourceAbortRemove": { + "message": "Ûśîńĝ `SourceBuffer.abort()` t́ô áb̂ór̂t́ `remove()`'ŝ áŝýn̂ćĥŕôńôúŝ ŕâńĝé r̂ém̂óv̂ál̂ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ĺîśt̂én̂ t́ô t́ĥé `updateend` êv́êńt̂ ín̂śt̂éâd́. `abort()` îś îńt̂én̂d́êd́ t̂ó ôńl̂ý âb́ôŕt̂ án̂ áŝýn̂ćĥŕôńôúŝ ḿêd́îá âṕp̂én̂d́ ôŕ r̂éŝét̂ ṕâŕŝér̂ śt̂át̂é." + }, + "lighthouse-core/lib/deprecations-strings.js | mediaSourceDurationTruncatingBuffered": { + "message": "Ŝét̂t́îńĝ `MediaSource.duration` b́êĺôẃ t̂h́ê h́îǵĥéŝt́ p̂ŕêśêńt̂át̂íôń t̂ím̂éŝt́âḿp̂ óf̂ án̂ý b̂úf̂f́êŕêd́ ĉód̂éd̂ f́r̂ám̂éŝ íŝ d́êṕr̂éĉát̂éd̂ d́ûé t̂ó ŝṕêćîf́îćât́îón̂ ćĥán̂ǵê. Śûṕp̂ór̂t́ f̂ór̂ ím̂ṕl̂íĉít̂ ŕêḿôv́âĺ ôf́ t̂ŕûńĉát̂éd̂ b́ûf́f̂ér̂éd̂ ḿêd́îá ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂ ín̂ t́ĥé f̂út̂úr̂é. Ŷóû śĥóûĺd̂ ín̂śt̂éâd́ p̂ér̂f́ôŕm̂ éx̂ṕl̂íĉít̂ `remove(newDuration, oldDuration)` ón̂ ál̂ĺ `sourceBuffers`, ŵh́êŕê `newDuration < oldDuration`." + }, + "lighthouse-core/lib/deprecations-strings.js | milestone": { + "message": "T̂h́îś ĉh́âńĝé ŵíl̂ĺ ĝó îńt̂ó êf́f̂éĉt́ ŵít̂h́ m̂íl̂éŝt́ôńê {milestone}." + }, + "lighthouse-core/lib/deprecations-strings.js | noSysexWebMIDIWithoutPermission": { + "message": "Ŵéb̂ ḾÎD́Î ẃîĺl̂ áŝḱ â ṕêŕm̂íŝśîón̂ t́ô úŝé êv́êń îf́ t̂h́ê śŷśêx́ îś n̂ót̂ śp̂éĉíf̂íêd́ îń t̂h́ê `MIDIOptions`." + }, + "lighthouse-core/lib/deprecations-strings.js | notificationInsecureOrigin": { + "message": "T̂h́ê Ńôt́îf́îćât́îón̂ ÁP̂Í m̂áŷ ńô ĺôńĝér̂ b́ê úŝéd̂ f́r̂óm̂ ín̂śêćûŕê ór̂íĝín̂ś. Ŷóû śĥóûĺd̂ ćôńŝíd̂ér̂ śŵít̂ćĥín̂ǵ ŷóûŕ âṕp̂ĺîćât́îón̂ t́ô á ŝéĉúr̂é ôŕîǵîń, ŝúĉh́ âś ĤT́T̂ṔŜ. Śêé ĥt́t̂ṕŝ://ǵôó.ĝĺê/ćĥŕôḿê-ín̂śêćûŕê-ór̂íĝín̂ś f̂ór̂ ḿôŕê d́êt́âíl̂ś." + }, + "lighthouse-core/lib/deprecations-strings.js | notificationPermissionRequestedIframe": { + "message": "P̂ér̂ḿîśŝíôń f̂ór̂ t́ĥé N̂ót̂íf̂íĉát̂íôń ÂṔÎ ḿâý n̂ó l̂ón̂ǵêŕ b̂é r̂éq̂úêśt̂éd̂ f́r̂óm̂ á ĉŕôśŝ-ór̂íĝín̂ íf̂ŕâḿê. Ýôú ŝh́ôúl̂d́ ĉón̂śîd́êŕ r̂éq̂úêśt̂ín̂ǵ p̂ér̂ḿîśŝíôń f̂ŕôḿ â t́ôṕ-l̂év̂él̂ f́r̂ám̂é ôŕ ôṕêńîńĝ á n̂éŵ ẃîńd̂óŵ ín̂śt̂éâd́." + }, + "lighthouse-core/lib/deprecations-strings.js | obsoleteWebRtcCipherSuite": { + "message": "Ŷóûŕ p̂ár̂t́n̂ér̂ íŝ ńêǵôt́îát̂ín̂ǵ âń ôb́ŝól̂ét̂é (D̂)T́L̂Ś v̂ér̂śîón̂. Ṕl̂éâśê ćĥéĉḱ ŵít̂h́ ŷóûŕ p̂ár̂t́n̂ér̂ t́ô h́âv́ê t́ĥíŝ f́îx́êd́." + }, + "lighthouse-core/lib/deprecations-strings.js | pictureSourceSrc": { + "message": "`` ŵít̂h́ â `` ṕâŕêńt̂ íŝ ín̂v́âĺîd́ âńd̂ t́ĥér̂éf̂ór̂é îǵn̂ór̂éd̂. Ṕl̂éâśê úŝé `` îńŝt́êád̂." + }, + "lighthouse-core/lib/deprecations-strings.js | prefixedStorageInfo": { + "message": "`window.webkitStorageInfo` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `navigator.webkitTemporaryStorage` ór̂ `navigator.webkitPersistentStorage` ín̂śt̂éâd́." + }, + "lighthouse-core/lib/deprecations-strings.js | requestedSubresourceWithEmbeddedCredentials": { + "message": "Ŝúb̂ŕêśôúr̂ćê ŕêq́ûéŝt́ŝ ẃĥóŝé ÛŔL̂ś ĉón̂t́âín̂ ém̂b́êd́d̂éd̂ ćr̂éd̂én̂t́îál̂ś (ê.ǵ. `https://user:pass@host/`) âŕê b́l̂óĉḱêd́." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcConstraintEnableDtlsSrtpFalse": { + "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `false` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ îś îńt̂ér̂ṕr̂ét̂éd̂ áŝ án̂ át̂t́êḿp̂t́ t̂ó ûśê t́ĥé r̂ém̂óv̂éd̂ `SDES key negotiation` ḿêt́ĥód̂. T́ĥíŝ f́ûńĉt́îón̂ál̂ít̂ý îś r̂ém̂óv̂éd̂; úŝé â śêŕv̂íĉé t̂h́ât́ ŝúp̂ṕôŕt̂ś `DTLS key negotiation` îńŝt́êád̂." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcConstraintEnableDtlsSrtpTrue": { + "message": "T̂h́ê ćôńŝt́r̂áîńt̂ `DtlsSrtpKeyAgreement` íŝ ŕêḿôv́êd́. Ŷóû h́âv́ê śp̂éĉíf̂íêd́ â `true` v́âĺûé f̂ór̂ t́ĥíŝ ćôńŝt́r̂áîńt̂, ẃĥíĉh́ ĥád̂ ńô éf̂f́êćt̂, b́ût́ ŷóû ćâń r̂ém̂óv̂é t̂h́îś ĉón̂śt̂ŕâín̂t́ f̂ór̂ t́îd́îńêśŝ." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcPeerConnectionComplexPlanBSdpUsingDefaultSdpSemantics": { + "message": "`Complex Plan B SDP` d̂ét̂éĉt́êd́. T̂h́îś d̂íâĺêćt̂ óf̂ t́ĥé `Session Description Protocol` îś n̂ó l̂ón̂ǵêŕ ŝúp̂ṕôŕt̂éd̂. Ṕl̂éâśê úŝé `Unified Plan SDP` îńŝt́êád̂." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcPeerConnectionSdpSemanticsPlanB": { + "message": "`Plan B SDP semantics`, ŵh́îćĥ íŝ úŝéd̂ ẃĥén̂ ćôńŝt́r̂úĉt́îńĝ án̂ `RTCPeerConnection` ẃît́ĥ `{sdpSemantics:plan-b}`, íŝ á l̂éĝáĉý n̂ón̂-śt̂án̂d́âŕd̂ v́êŕŝíôń ôf́ t̂h́ê `Session Description Protocol` t́ĥát̂ h́âś b̂éêń p̂ér̂ḿâńêńt̂ĺŷ d́êĺêt́êd́ f̂ŕôḿ t̂h́ê Ẃêb́ P̂ĺât́f̂ór̂ḿ. Ît́ îś ŝt́îĺl̂ áv̂áîĺâb́l̂é ŵh́êń b̂úîĺd̂ín̂ǵ ŵít̂h́ `IS_FUCHSIA`, b̂út̂ ẃê ín̂t́êńd̂ t́ô d́êĺêt́ê ít̂ áŝ śôón̂ áŝ ṕôśŝíb̂ĺê. Śt̂óp̂ d́êṕêńd̂ín̂ǵ ôń ît́. Ŝéê h́t̂t́p̂ś://ĉŕb̂úĝ.ćôḿ/1302249 f̂ór̂ śt̂át̂úŝ." + }, + "lighthouse-core/lib/deprecations-strings.js | rtcpMuxPolicyNegotiate": { + "message": "T̂h́ê `rtcpMuxPolicy` óp̂t́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." + }, + "lighthouse-core/lib/deprecations-strings.js | sharedArrayBufferConstructedWithoutIsolation": { + "message": "`SharedArrayBuffer` ŵíl̂ĺ r̂éq̂úîŕê ćr̂óŝś-ôŕîǵîń îśôĺât́îón̂. Śêé ĥt́t̂ṕŝ://d́êv́êĺôṕêŕ.ĉh́r̂óm̂é.ĉóm̂/b́l̂óĝ/én̂áb̂ĺîńĝ-śĥár̂éd̂-ár̂ŕâý-b̂úf̂f́êŕ/ f̂ór̂ ḿôŕê d́êt́âíl̂ś." + }, + "lighthouse-core/lib/deprecations-strings.js | textToSpeech_DisallowedByAutoplay": { + "message": "`speechSynthesis.speak()` ŵít̂h́ôút̂ úŝér̂ áĉt́îv́ât́îón̂ íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂." + }, + "lighthouse-core/lib/deprecations-strings.js | title": { + "message": "D̂ép̂ŕêćât́êd́ F̂éât́ûŕê Úŝéd̂" + }, + "lighthouse-core/lib/deprecations-strings.js | v8SharedArrayBufferConstructedInExtensionWithoutIsolation": { + "message": "Êx́t̂én̂śîón̂ś ŝh́ôúl̂d́ ôṕt̂ ín̂t́ô ćr̂óŝś-ôŕîǵîń îśôĺât́îón̂ t́ô ćôńt̂ín̂úê úŝín̂ǵ `SharedArrayBuffer`. Ŝéê h́t̂t́p̂ś://d̂év̂él̂óp̂ér̂.ćĥŕôḿê.ćôḿ/d̂óĉś/êx́t̂én̂śîón̂ś/m̂v́3/ĉŕôśŝ-ór̂íĝín̂-íŝól̂át̂íôń/." + }, + "lighthouse-core/lib/deprecations-strings.js | vendorSpecificApi": { + "message": "{PH1} îś v̂én̂d́ôŕ-ŝṕêćîf́îć. P̂ĺêáŝé ûśê t́ĥé ŝt́âńd̂ár̂d́ {PH2} îńŝt́êád̂." + }, + "lighthouse-core/lib/deprecations-strings.js | xhrJSONEncodingDetection": { + "message": "ÛT́F̂-16 íŝ ńôt́ ŝúp̂ṕôŕt̂éd̂ b́ŷ ŕêśp̂ón̂śê j́ŝón̂ ín̂ `XMLHttpRequest`" + }, + "lighthouse-core/lib/deprecations-strings.js | xmlHttpRequestSynchronousInNonWorkerOutsideBeforeUnload": { + "message": "Ŝýn̂ćĥŕôńôúŝ `XMLHttpRequest` ón̂ t́ĥé m̂áîń t̂h́r̂éâd́ îś d̂ép̂ŕêćât́êd́ b̂éĉáûśê óf̂ ít̂ś d̂ét̂ŕîḿêńt̂ál̂ éf̂f́êćt̂ś t̂ó t̂h́ê én̂d́ ûśêŕ’ŝ éx̂ṕêŕîén̂ćê. F́ôŕ m̂ór̂é ĥél̂ṕ, ĉh́êćk̂ h́t̂t́p̂ś://x̂h́r̂.śp̂éĉ.ẃĥát̂ẃĝ.ór̂ǵ/." + }, + "lighthouse-core/lib/deprecations-strings.js | xrSupportsSession": { + "message": "`supportsSession()` îś d̂ép̂ŕêćât́êd́. P̂ĺêáŝé ûśê `isSessionSupported()` án̂d́ ĉh́êćk̂ t́ĥé r̂éŝól̂v́êd́ b̂óôĺêán̂ v́âĺûé îńŝt́êád̂." + }, "lighthouse-core/lib/i18n/i18n.js | columnBlockingTime": { "message": "M̂áîń-T̂h́r̂éâd́ B̂ĺôćk̂ín̂ǵ T̂ím̂é" },