chrome-devtools-frontend 1.0.1004171 → 1.0.1005672
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/gni/devtools_grd_files.gni +2 -0
- package/front_end/core/common/ParsedURL.ts +3 -3
- package/front_end/core/i18n/locales/en-US.json +41 -8
- package/front_end/core/i18n/locales/en-XL.json +41 -8
- package/front_end/core/sdk/DOMModel.ts +15 -0
- package/front_end/core/sdk/DebuggerModel.ts +12 -0
- package/front_end/core/sdk/RuntimeModel.ts +5 -3
- package/front_end/generated/InspectorBackendCommands.js +0 -2
- package/front_end/generated/protocol.ts +1 -2
- package/front_end/models/extensions/ExtensionPanel.ts +1 -1
- package/front_end/models/extensions/ExtensionServer.ts +11 -10
- package/front_end/models/har/Log.ts +4 -3
- package/front_end/models/issues_manager/DeprecationIssue.ts +5 -23
- package/front_end/panels/elements/ComputedStyleWidget.ts +6 -5
- package/front_end/panels/elements/ElementsTreeElement.ts +41 -0
- package/front_end/panels/elements/ElementsTreeOutline.ts +5 -0
- package/front_end/panels/elements/components/AdornerManager.ts +7 -0
- package/front_end/panels/elements/elementsTreeOutline.css +9 -0
- package/front_end/panels/network/NetworkItemView.ts +10 -1
- package/front_end/panels/network/RequestHeadersView.ts +1 -1
- package/front_end/panels/network/components/RequestHeadersView.css +78 -0
- package/front_end/panels/network/components/RequestHeadersView.ts +262 -0
- package/front_end/panels/network/components/components.ts +2 -0
- package/front_end/panels/network/forward/UIRequestLocation.ts +1 -0
- package/front_end/panels/network/networkLogView.css +3 -3
- package/front_end/panels/network/requestHeadersTree.css +6 -0
- package/front_end/panels/sources/CallStackSidebarPane.ts +13 -0
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +4 -3
- package/front_end/panels/sources/sourcesView.css +4 -0
- package/front_end/ui/components/text_editor/config.ts +0 -1
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +16 -2
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +2 -2
- package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +4 -0
- package/package.json +1 -1
@@ -1112,6 +1112,8 @@ grd_files_debug_sources = [
|
|
1112
1112
|
"front_end/panels/network/SignedExchangeInfoView.js",
|
1113
1113
|
"front_end/panels/network/binaryResourceView.css.js",
|
1114
1114
|
"front_end/panels/network/blockedURLsPane.css.js",
|
1115
|
+
"front_end/panels/network/components/RequestHeadersView.css.js",
|
1116
|
+
"front_end/panels/network/components/RequestHeadersView.js",
|
1115
1117
|
"front_end/panels/network/components/RequestTrustTokensView.css.js",
|
1116
1118
|
"front_end/panels/network/components/RequestTrustTokensView.js",
|
1117
1119
|
"front_end/panels/network/components/WebBundleInfoView.css.js",
|
@@ -264,9 +264,9 @@ export class ParsedURL {
|
|
264
264
|
return devToolsPaths.join(separator) as DevToolsPathType;
|
265
265
|
}
|
266
266
|
|
267
|
-
static split<DevToolsPathType extends BrandedPathString>(
|
268
|
-
DevToolsPathType[] {
|
269
|
-
return devToolsPath.split(separator) as DevToolsPathType[];
|
267
|
+
static split<DevToolsPathType extends BrandedPathString>(
|
268
|
+
devToolsPath: DevToolsPathType, separator: string|RegExp, limit?: number): DevToolsPathType[] {
|
269
|
+
return devToolsPath.split(separator, limit) as DevToolsPathType[];
|
270
270
|
}
|
271
271
|
|
272
272
|
static toLowerCase<DevToolsPathType extends BrandedPathString>(devToolsPath: DevToolsPathType): DevToolsPathType {
|
@@ -1416,16 +1416,13 @@
|
|
1416
1416
|
"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."
|
1417
1417
|
},
|
1418
1418
|
"models/issues_manager/DeprecationIssue.ts | legacyConstraintGoogIPv6": {
|
1419
|
-
"message": "IPv6 is enabled-by-default and the ability to disable it using googIPv6
|
1419
|
+
"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."
|
1420
1420
|
},
|
1421
1421
|
"models/issues_manager/DeprecationIssue.ts | localCSSFileExtensionRejected": {
|
1422
1422
|
"message": "CSS cannot be loaded from file: URLs unless they end in a .css file extension."
|
1423
1423
|
},
|
1424
|
-
"models/issues_manager/DeprecationIssue.ts | mediaElementAudioSourceNode": {
|
1425
|
-
"message": "Creating a MediaElementAudioSourceNode on an OfflineAudioContext is deprecated and will be removed."
|
1426
|
-
},
|
1427
1424
|
"models/issues_manager/DeprecationIssue.ts | mediaSourceAbortRemove": {
|
1428
|
-
"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
|
1425
|
+
"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."
|
1429
1426
|
},
|
1430
1427
|
"models/issues_manager/DeprecationIssue.ts | mediaSourceDurationTruncatingBuffered": {
|
1431
1428
|
"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."
|
@@ -1448,9 +1445,6 @@
|
|
1448
1445
|
"models/issues_manager/DeprecationIssue.ts | paymentRequestBasicCard": {
|
1449
1446
|
"message": "The basic-card payment method is deprecated and will be removed."
|
1450
1447
|
},
|
1451
|
-
"models/issues_manager/DeprecationIssue.ts | paymentRequestShowWithoutGesture": {
|
1452
|
-
"message": "Calling PaymentRequest.show() without user activation is deprecated and will be removed."
|
1453
|
-
},
|
1454
1448
|
"models/issues_manager/DeprecationIssue.ts | pictureSourceSrc": {
|
1455
1449
|
"message": "<source src> with a <picture> parent is invalid and therefore ignored. Please use <source srcset> instead."
|
1456
1450
|
},
|
@@ -6599,6 +6593,42 @@
|
|
6599
6593
|
"panels/network/BlockedURLsPane.ts | textPatternToBlockMatching": {
|
6600
6594
|
"message": "Text pattern to block matching requests; use * for wildcard"
|
6601
6595
|
},
|
6596
|
+
"panels/network/components/RequestHeadersView.ts | fromDiskCache": {
|
6597
|
+
"message": "(from disk cache)"
|
6598
|
+
},
|
6599
|
+
"panels/network/components/RequestHeadersView.ts | fromMemoryCache": {
|
6600
|
+
"message": "(from memory cache)"
|
6601
|
+
},
|
6602
|
+
"panels/network/components/RequestHeadersView.ts | fromPrefetchCache": {
|
6603
|
+
"message": "(from prefetch cache)"
|
6604
|
+
},
|
6605
|
+
"panels/network/components/RequestHeadersView.ts | fromServiceWorker": {
|
6606
|
+
"message": "(from service worker)"
|
6607
|
+
},
|
6608
|
+
"panels/network/components/RequestHeadersView.ts | fromSignedexchange": {
|
6609
|
+
"message": "(from signed-exchange)"
|
6610
|
+
},
|
6611
|
+
"panels/network/components/RequestHeadersView.ts | fromWebBundle": {
|
6612
|
+
"message": "(from Web Bundle)"
|
6613
|
+
},
|
6614
|
+
"panels/network/components/RequestHeadersView.ts | general": {
|
6615
|
+
"message": "General"
|
6616
|
+
},
|
6617
|
+
"panels/network/components/RequestHeadersView.ts | referrerPolicy": {
|
6618
|
+
"message": "Referrer Policy"
|
6619
|
+
},
|
6620
|
+
"panels/network/components/RequestHeadersView.ts | remoteAddress": {
|
6621
|
+
"message": "Remote Address"
|
6622
|
+
},
|
6623
|
+
"panels/network/components/RequestHeadersView.ts | requestMethod": {
|
6624
|
+
"message": "Request Method"
|
6625
|
+
},
|
6626
|
+
"panels/network/components/RequestHeadersView.ts | requestUrl": {
|
6627
|
+
"message": "Request URL"
|
6628
|
+
},
|
6629
|
+
"panels/network/components/RequestHeadersView.ts | statusCode": {
|
6630
|
+
"message": "Status Code"
|
6631
|
+
},
|
6602
6632
|
"panels/network/components/RequestTrustTokensView.ts | aClientprovidedArgumentWas": {
|
6603
6633
|
"message": "A client-provided argument was malformed or otherwise invalid."
|
6604
6634
|
},
|
@@ -9461,6 +9491,9 @@
|
|
9461
9491
|
"panels/sources/CallStackSidebarPane.ts | removeFromIgnoreList": {
|
9462
9492
|
"message": "Remove from ignore list"
|
9463
9493
|
},
|
9494
|
+
"panels/sources/CallStackSidebarPane.ts | restartFrame": {
|
9495
|
+
"message": "Restart frame"
|
9496
|
+
},
|
9464
9497
|
"panels/sources/CallStackSidebarPane.ts | showIgnorelistedFrames": {
|
9465
9498
|
"message": "Show ignore-listed frames"
|
9466
9499
|
},
|
@@ -1416,16 +1416,13 @@
|
|
1416
1416
|
"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̂."
|
1417
1417
|
},
|
1418
1418
|
"models/issues_manager/DeprecationIssue.ts | legacyConstraintGoogIPv6": {
|
1419
|
-
"message": "ÎṔv̂6 íŝ én̂áb̂ĺêd́-b̂ý-d̂éf̂áûĺt̂ án̂d́ t̂h́ê áb̂íl̂ít̂ý t̂ó d̂íŝáb̂ĺê ít̂ úŝín̂ǵ googIPv6
|
1419
|
+
"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́."
|
1420
1420
|
},
|
1421
1421
|
"models/issues_manager/DeprecationIssue.ts | localCSSFileExtensionRejected": {
|
1422
1422
|
"message": "ĈŚŜ ćâńn̂ót̂ b́ê ĺôád̂éd̂ f́r̂óm̂ file: ÚR̂Ĺŝ ún̂ĺêśŝ t́ĥéŷ én̂d́ îń â .css f́îĺê éx̂t́êńŝíôń."
|
1423
1423
|
},
|
1424
|
-
"models/issues_manager/DeprecationIssue.ts | mediaElementAudioSourceNode": {
|
1425
|
-
"message": "Ĉŕêát̂ín̂ǵ â MediaElementAudioSourceNode ón̂ án̂ OfflineAudioContext íŝ d́êṕr̂éĉát̂éd̂ án̂d́ ŵíl̂ĺ b̂é r̂ém̂óv̂éd̂."
|
1426
|
-
},
|
1427
1424
|
"models/issues_manager/DeprecationIssue.ts | mediaSourceAbortRemove": {
|
1428
|
-
"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̂ i
|
1425
|
+
"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̂é."
|
1429
1426
|
},
|
1430
1427
|
"models/issues_manager/DeprecationIssue.ts | mediaSourceDurationTruncatingBuffered": {
|
1431
1428
|
"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."
|
@@ -1448,9 +1445,6 @@
|
|
1448
1445
|
"models/issues_manager/DeprecationIssue.ts | paymentRequestBasicCard": {
|
1449
1446
|
"message": "T̂h́ê basic-card ṕâým̂én̂t́ m̂ét̂h́ôd́ îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́."
|
1450
1447
|
},
|
1451
|
-
"models/issues_manager/DeprecationIssue.ts | paymentRequestShowWithoutGesture": {
|
1452
|
-
"message": "Ĉál̂ĺîńĝ PaymentRequest.show() ẃît́ĥóût́ ûśêŕ âćt̂ív̂át̂íôń îś d̂ép̂ŕêćât́êd́ âńd̂ ẃîĺl̂ b́ê ŕêḿôv́êd́."
|
1453
|
-
},
|
1454
1448
|
"models/issues_manager/DeprecationIssue.ts | pictureSourceSrc": {
|
1455
1449
|
"message": "<source src> ŵít̂h́ â <picture> ṕâŕêńt̂ íŝ ín̂v́âĺîd́ âńd̂ t́ĥér̂éf̂ór̂é îǵn̂ór̂éd̂. Ṕl̂éâśê úŝé <source srcset> îńŝt́êád̂."
|
1456
1450
|
},
|
@@ -6599,6 +6593,42 @@
|
|
6599
6593
|
"panels/network/BlockedURLsPane.ts | textPatternToBlockMatching": {
|
6600
6594
|
"message": "T̂éx̂t́ p̂át̂t́êŕn̂ t́ô b́l̂óĉḱ m̂át̂ćĥín̂ǵ r̂éq̂úêśt̂ś; ûśê * f́ôŕ ŵíl̂d́ĉár̂d́"
|
6601
6595
|
},
|
6596
|
+
"panels/network/components/RequestHeadersView.ts | fromDiskCache": {
|
6597
|
+
"message": "(f̂ŕôḿ d̂íŝḱ ĉáĉh́ê)"
|
6598
|
+
},
|
6599
|
+
"panels/network/components/RequestHeadersView.ts | fromMemoryCache": {
|
6600
|
+
"message": "(f̂ŕôḿ m̂ém̂ór̂ý ĉáĉh́ê)"
|
6601
|
+
},
|
6602
|
+
"panels/network/components/RequestHeadersView.ts | fromPrefetchCache": {
|
6603
|
+
"message": "(f̂ŕôḿ p̂ŕêf́êt́ĉh́ ĉáĉh́ê)"
|
6604
|
+
},
|
6605
|
+
"panels/network/components/RequestHeadersView.ts | fromServiceWorker": {
|
6606
|
+
"message": "(f̂ŕôḿ service worker)"
|
6607
|
+
},
|
6608
|
+
"panels/network/components/RequestHeadersView.ts | fromSignedexchange": {
|
6609
|
+
"message": "(f̂ŕôḿ ŝíĝńêd́-êx́ĉh́âńĝé)"
|
6610
|
+
},
|
6611
|
+
"panels/network/components/RequestHeadersView.ts | fromWebBundle": {
|
6612
|
+
"message": "(f̂ŕôḿ Ŵéb̂ B́ûńd̂ĺê)"
|
6613
|
+
},
|
6614
|
+
"panels/network/components/RequestHeadersView.ts | general": {
|
6615
|
+
"message": "Ĝén̂ér̂ál̂"
|
6616
|
+
},
|
6617
|
+
"panels/network/components/RequestHeadersView.ts | referrerPolicy": {
|
6618
|
+
"message": "R̂éf̂ér̂ŕêŕ P̂ól̂íĉý"
|
6619
|
+
},
|
6620
|
+
"panels/network/components/RequestHeadersView.ts | remoteAddress": {
|
6621
|
+
"message": "R̂ém̂ót̂é Âd́d̂ŕêśŝ"
|
6622
|
+
},
|
6623
|
+
"panels/network/components/RequestHeadersView.ts | requestMethod": {
|
6624
|
+
"message": "R̂éq̂úêśt̂ Ḿêt́ĥód̂"
|
6625
|
+
},
|
6626
|
+
"panels/network/components/RequestHeadersView.ts | requestUrl": {
|
6627
|
+
"message": "R̂éq̂úêśt̂ ÚR̂Ĺ"
|
6628
|
+
},
|
6629
|
+
"panels/network/components/RequestHeadersView.ts | statusCode": {
|
6630
|
+
"message": "Ŝt́ât́ûś Ĉód̂é"
|
6631
|
+
},
|
6602
6632
|
"panels/network/components/RequestTrustTokensView.ts | aClientprovidedArgumentWas": {
|
6603
6633
|
"message": "Â ćl̂íêńt̂-ṕr̂óv̂íd̂éd̂ ár̂ǵûḿêńt̂ ẃâś m̂ál̂f́ôŕm̂éd̂ ór̂ ót̂h́êŕŵíŝé îńv̂ál̂íd̂."
|
6604
6634
|
},
|
@@ -9461,6 +9491,9 @@
|
|
9461
9491
|
"panels/sources/CallStackSidebarPane.ts | removeFromIgnoreList": {
|
9462
9492
|
"message": "R̂ém̂óv̂é f̂ŕôḿ îǵn̂ór̂é l̂íŝt́"
|
9463
9493
|
},
|
9494
|
+
"panels/sources/CallStackSidebarPane.ts | restartFrame": {
|
9495
|
+
"message": "R̂éŝt́âŕt̂ f́r̂ám̂é"
|
9496
|
+
},
|
9464
9497
|
"panels/sources/CallStackSidebarPane.ts | showIgnorelistedFrames": {
|
9465
9498
|
"message": "Ŝh́ôẃ îǵn̂ór̂é-l̂íŝt́êd́ f̂ŕâḿêś"
|
9466
9499
|
},
|
@@ -71,6 +71,7 @@ export class DOMNode {
|
|
71
71
|
#creationStackTraceInternal: Promise<Protocol.Runtime.StackTrace|null>|null;
|
72
72
|
pseudoElementsInternal: Map<string, DOMNode>;
|
73
73
|
#distributedNodesInternal: DOMNodeShortcut[];
|
74
|
+
assignedSlot: DOMNodeShortcut|null;
|
74
75
|
readonly shadowRootsInternal: DOMNode[];
|
75
76
|
#attributesInternal: Map<string, Attribute>;
|
76
77
|
// TODO(crbug.com/1172300) Ignored during the jsdoc to ts migration
|
@@ -101,6 +102,7 @@ export class DOMNode {
|
|
101
102
|
this.#creationStackTraceInternal = null;
|
102
103
|
this.pseudoElementsInternal = new Map();
|
103
104
|
this.#distributedNodesInternal = [];
|
105
|
+
this.assignedSlot = null;
|
104
106
|
this.shadowRootsInternal = [];
|
105
107
|
this.#attributesInternal = new Map();
|
106
108
|
this.#markers = new Map();
|
@@ -181,6 +183,10 @@ export class DOMNode {
|
|
181
183
|
this.setDistributedNodePayloads(payload.distributedNodes);
|
182
184
|
}
|
183
185
|
|
186
|
+
if (payload.assignedSlot) {
|
187
|
+
this.setAssignedSlot(payload.assignedSlot);
|
188
|
+
}
|
189
|
+
|
184
190
|
if (payload.children) {
|
185
191
|
this.setChildrenPayload(payload.children);
|
186
192
|
}
|
@@ -341,6 +347,10 @@ export class DOMNode {
|
|
341
347
|
return this.pseudoElementsInternal.get(DOMNode.PseudoElementNames.Marker) || null;
|
342
348
|
}
|
343
349
|
|
350
|
+
hasAssignedSlot(): boolean {
|
351
|
+
return this.assignedSlot !== null;
|
352
|
+
}
|
353
|
+
|
344
354
|
isInsertionPoint(): boolean {
|
345
355
|
return !this.isXMLNode() &&
|
346
356
|
(this.#nodeNameInternal === 'SHADOW' || this.#nodeNameInternal === 'CONTENT' ||
|
@@ -680,6 +690,11 @@ export class DOMNode {
|
|
680
690
|
}
|
681
691
|
}
|
682
692
|
|
693
|
+
setAssignedSlot(payload: Protocol.DOM.BackendNode): void {
|
694
|
+
this.assignedSlot =
|
695
|
+
new DOMNodeShortcut(this.#domModelInternal.target(), payload.backendNodeId, payload.nodeType, payload.nodeName);
|
696
|
+
}
|
697
|
+
|
683
698
|
private renumber(): void {
|
684
699
|
if (!this.childrenInternal) {
|
685
700
|
throw new Error('DOMNode._children is expected to not be null.');
|
@@ -1248,6 +1248,8 @@ export class CallFrame {
|
|
1248
1248
|
#returnValueInternal: RemoteObject|null;
|
1249
1249
|
readonly warnings: string[] = [];
|
1250
1250
|
|
1251
|
+
readonly canBeRestarted: boolean;
|
1252
|
+
|
1251
1253
|
constructor(
|
1252
1254
|
debuggerModel: DebuggerModel, script: Script, payload: Protocol.Debugger.CallFrame, inlineFrameIndex?: number,
|
1253
1255
|
functionName?: string) {
|
@@ -1259,6 +1261,7 @@ export class CallFrame {
|
|
1259
1261
|
this.#localScopeInternal = null;
|
1260
1262
|
this.#inlineFrameIndexInternal = inlineFrameIndex || 0;
|
1261
1263
|
this.#functionNameInternal = functionName || payload.functionName;
|
1264
|
+
this.canBeRestarted = Boolean(payload.canBeRestarted);
|
1262
1265
|
for (let i = 0; i < payload.scopeChain.length; ++i) {
|
1263
1266
|
const scope = new Scope(this, i);
|
1264
1267
|
this.#scopeChainInternal.push(scope);
|
@@ -1390,6 +1393,15 @@ export class CallFrame {
|
|
1390
1393
|
return {object: runtimeModel.createRemoteObject(response.result), exceptionDetails: response.exceptionDetails};
|
1391
1394
|
}
|
1392
1395
|
|
1396
|
+
async restart(): Promise<void> {
|
1397
|
+
console.assert(this.canBeRestarted, 'This frame can not be restarted.');
|
1398
|
+
// Note that even if `canBeRestarted` is true, the restart frame call can still fail.
|
1399
|
+
// The user can evaluate arbitrary code between pausing and restarting the frame that
|
1400
|
+
// could mess with the call stack.
|
1401
|
+
await this.debuggerModel.agent.invoke_restartFrame(
|
1402
|
+
{callFrameId: this.id, mode: Protocol.Debugger.RestartFrameRequestMode.StepInto});
|
1403
|
+
}
|
1404
|
+
|
1393
1405
|
getPayload(): Protocol.Debugger.CallFrame {
|
1394
1406
|
return this.payload;
|
1395
1407
|
}
|
@@ -36,6 +36,7 @@ import * as Common from '../common/common.js';
|
|
36
36
|
import * as Host from '../host/host.js';
|
37
37
|
import type * as ProtocolProxyApi from '../../generated/protocol-proxy-api.js';
|
38
38
|
import type * as Protocol from '../../generated/protocol.js';
|
39
|
+
import type * as Platform from '../platform/platform.js';
|
39
40
|
|
40
41
|
import type {FunctionDetails} from './DebuggerModel.js';
|
41
42
|
import {DebuggerModel} from './DebuggerModel.js';
|
@@ -121,7 +122,8 @@ export class RuntimeModel extends SDKModel<EventTypes> {
|
|
121
122
|
executionContextCreated(context: Protocol.Runtime.ExecutionContextDescription): void {
|
122
123
|
const data = context.auxData || {isDefault: true};
|
123
124
|
const executionContext = new ExecutionContext(
|
124
|
-
this, context.id, context.uniqueId, context.name, context.origin
|
125
|
+
this, context.id, context.uniqueId, context.name, context.origin as Platform.DevToolsPath.UrlString,
|
126
|
+
data['isDefault'], data['frameId']);
|
125
127
|
this.#executionContextById.set(executionContext.id, executionContext);
|
126
128
|
this.dispatchEventToListeners(Events.ExecutionContextCreated, executionContext);
|
127
129
|
}
|
@@ -561,14 +563,14 @@ export class ExecutionContext {
|
|
561
563
|
uniqueId: string;
|
562
564
|
name: string;
|
563
565
|
#labelInternal: string|null;
|
564
|
-
origin:
|
566
|
+
origin: Platform.DevToolsPath.UrlString;
|
565
567
|
isDefault: boolean;
|
566
568
|
runtimeModel: RuntimeModel;
|
567
569
|
debuggerModel: DebuggerModel;
|
568
570
|
frameId: Protocol.Page.FrameId|undefined;
|
569
571
|
constructor(
|
570
572
|
runtimeModel: RuntimeModel, id: Protocol.Runtime.ExecutionContextId, uniqueId: string, name: string,
|
571
|
-
origin:
|
573
|
+
origin: Platform.DevToolsPath.UrlString, isDefault: boolean, frameId?: Protocol.Page.FrameId) {
|
572
574
|
this.id = id;
|
573
575
|
this.uniqueId = uniqueId;
|
574
576
|
this.name = name;
|
@@ -291,7 +291,6 @@ export function registerCommands(inspectorBackend) {
|
|
291
291
|
InsecurePrivateNetworkSubresourceRequest: 'InsecurePrivateNetworkSubresourceRequest',
|
292
292
|
LegacyConstraintGoogIPv6: 'LegacyConstraintGoogIPv6',
|
293
293
|
LocalCSSFileExtensionRejected: 'LocalCSSFileExtensionRejected',
|
294
|
-
MediaElementAudioSourceNode: 'MediaElementAudioSourceNode',
|
295
294
|
MediaSourceAbortRemove: 'MediaSourceAbortRemove',
|
296
295
|
MediaSourceDurationTruncatingBuffered: 'MediaSourceDurationTruncatingBuffered',
|
297
296
|
NoSysexWebMIDIWithoutPermission: 'NoSysexWebMIDIWithoutPermission',
|
@@ -299,7 +298,6 @@ export function registerCommands(inspectorBackend) {
|
|
299
298
|
NotificationPermissionRequestedIframe: 'NotificationPermissionRequestedIframe',
|
300
299
|
ObsoleteWebRtcCipherSuite: 'ObsoleteWebRtcCipherSuite',
|
301
300
|
PaymentRequestBasicCard: 'PaymentRequestBasicCard',
|
302
|
-
PaymentRequestShowWithoutGesture: 'PaymentRequestShowWithoutGesture',
|
303
301
|
PictureSourceSrc: 'PictureSourceSrc',
|
304
302
|
PrefixedCancelAnimationFrame: 'PrefixedCancelAnimationFrame',
|
305
303
|
PrefixedRequestAnimationFrame: 'PrefixedRequestAnimationFrame',
|
@@ -1038,7 +1038,6 @@ export namespace Audits {
|
|
1038
1038
|
InsecurePrivateNetworkSubresourceRequest = 'InsecurePrivateNetworkSubresourceRequest',
|
1039
1039
|
LegacyConstraintGoogIPv6 = 'LegacyConstraintGoogIPv6',
|
1040
1040
|
LocalCSSFileExtensionRejected = 'LocalCSSFileExtensionRejected',
|
1041
|
-
MediaElementAudioSourceNode = 'MediaElementAudioSourceNode',
|
1042
1041
|
MediaSourceAbortRemove = 'MediaSourceAbortRemove',
|
1043
1042
|
MediaSourceDurationTruncatingBuffered = 'MediaSourceDurationTruncatingBuffered',
|
1044
1043
|
NoSysexWebMIDIWithoutPermission = 'NoSysexWebMIDIWithoutPermission',
|
@@ -1046,7 +1045,6 @@ export namespace Audits {
|
|
1046
1045
|
NotificationPermissionRequestedIframe = 'NotificationPermissionRequestedIframe',
|
1047
1046
|
ObsoleteWebRtcCipherSuite = 'ObsoleteWebRtcCipherSuite',
|
1048
1047
|
PaymentRequestBasicCard = 'PaymentRequestBasicCard',
|
1049
|
-
PaymentRequestShowWithoutGesture = 'PaymentRequestShowWithoutGesture',
|
1050
1048
|
PictureSourceSrc = 'PictureSourceSrc',
|
1051
1049
|
PrefixedCancelAnimationFrame = 'PrefixedCancelAnimationFrame',
|
1052
1050
|
PrefixedRequestAnimationFrame = 'PrefixedRequestAnimationFrame',
|
@@ -3212,6 +3210,7 @@ export namespace DOM {
|
|
3212
3210
|
*/
|
3213
3211
|
isSVG?: boolean;
|
3214
3212
|
compatibilityMode?: CompatibilityMode;
|
3213
|
+
assignedSlot?: BackendNode;
|
3215
3214
|
}
|
3216
3215
|
|
3217
3216
|
/**
|
@@ -157,7 +157,7 @@ export class ExtensionSidebarPane extends UI.View.SimpleView {
|
|
157
157
|
expression, true, false, evaluateOptions, securityOrigin, this.onEvaluate.bind(this, title, callback));
|
158
158
|
}
|
159
159
|
|
160
|
-
setPage(url:
|
160
|
+
setPage(url: Platform.DevToolsPath.UrlString): void {
|
161
161
|
if (this.objectPropertiesView) {
|
162
162
|
this.objectPropertiesView.detach();
|
163
163
|
delete this.objectPropertiesView;
|
@@ -54,7 +54,7 @@ import {ExtensionTraceProvider} from './ExtensionTraceProvider.js';
|
|
54
54
|
import {LanguageExtensionEndpoint} from './LanguageExtensionEndpoint.js';
|
55
55
|
import {PrivateAPI} from './ExtensionAPI.js';
|
56
56
|
|
57
|
-
const extensionOrigins: WeakMap<MessagePort,
|
57
|
+
const extensionOrigins: WeakMap<MessagePort, Platform.DevToolsPath.UrlString> = new WeakMap();
|
58
58
|
|
59
59
|
declare global {
|
60
60
|
interface Window {
|
@@ -342,7 +342,7 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
342
342
|
return undefined;
|
343
343
|
}
|
344
344
|
|
345
|
-
private getExtensionOrigin(port: MessagePort):
|
345
|
+
private getExtensionOrigin(port: MessagePort): Platform.DevToolsPath.UrlString {
|
346
346
|
const origin = extensionOrigins.get(port);
|
347
347
|
if (!origin) {
|
348
348
|
throw new Error('Received a message from an unregistered extension');
|
@@ -837,7 +837,7 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
837
837
|
this.postNotification(PrivateAPI.Events.PanelObjectSelected + 'elements');
|
838
838
|
}
|
839
839
|
|
840
|
-
sourceSelectionChanged(url:
|
840
|
+
sourceSelectionChanged(url: Platform.DevToolsPath.UrlString, range: TextUtils.TextRange.TextRange): void {
|
841
841
|
this.postNotification(PrivateAPI.Events.PanelObjectSelected + 'sources', {
|
842
842
|
startLine: range.startLine,
|
843
843
|
startColumn: range.startColumn,
|
@@ -893,7 +893,7 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
893
893
|
return true;
|
894
894
|
}
|
895
895
|
|
896
|
-
private registerExtension(origin:
|
896
|
+
private registerExtension(origin: Platform.DevToolsPath.UrlString, port: MessagePort): void {
|
897
897
|
if (!this.registeredExtensions.has(origin)) {
|
898
898
|
if (origin !== window.location.origin) { // Just ignore inspector frames.
|
899
899
|
console.error('Ignoring unauthorized client request from ' + origin);
|
@@ -907,7 +907,7 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
907
907
|
|
908
908
|
private onWindowMessage(event: MessageEvent): void {
|
909
909
|
if (event.data === 'registerExtension') {
|
910
|
-
this.registerExtension(event.origin, event.ports[0]);
|
910
|
+
this.registerExtension(event.origin as Platform.DevToolsPath.UrlString, event.ports[0]);
|
911
911
|
}
|
912
912
|
}
|
913
913
|
|
@@ -981,8 +981,9 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
981
981
|
removeLastEventListener.bind(this));
|
982
982
|
}
|
983
983
|
|
984
|
-
private expandResourcePath(extensionPath:
|
985
|
-
|
984
|
+
private expandResourcePath(extensionPath: Platform.DevToolsPath.UrlString, resourcePath: string):
|
985
|
+
Platform.DevToolsPath.UrlString {
|
986
|
+
return extensionPath + '/' + Common.ParsedURL.normalizePath(resourcePath) as Platform.DevToolsPath.UrlString;
|
986
987
|
}
|
987
988
|
|
988
989
|
evaluate(
|
@@ -992,7 +993,7 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
992
993
|
|undefined {
|
993
994
|
let context;
|
994
995
|
|
995
|
-
function resolveURLToFrame(url:
|
996
|
+
function resolveURLToFrame(url: Platform.DevToolsPath.UrlString): SDK.ResourceTreeModel.ResourceTreeFrame|null {
|
996
997
|
let found = null;
|
997
998
|
function hasMatchingURL(frame: SDK.ResourceTreeModel.ResourceTreeFrame): SDK.ResourceTreeModel.ResourceTreeFrame|
|
998
999
|
null {
|
@@ -1006,7 +1007,7 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
1006
1007
|
options = options || {};
|
1007
1008
|
let frame;
|
1008
1009
|
if (options.frameURL) {
|
1009
|
-
frame = resolveURLToFrame(options.frameURL);
|
1010
|
+
frame = resolveURLToFrame(options.frameURL as Platform.DevToolsPath.UrlString);
|
1010
1011
|
} else {
|
1011
1012
|
const target = SDK.TargetManager.TargetManager.instance().mainTarget();
|
1012
1013
|
const resourceTreeModel = target && target.model(SDK.ResourceTreeModel.ResourceTreeModel);
|
@@ -1085,7 +1086,7 @@ export class ExtensionServer extends Common.ObjectWrapper.ObjectWrapper<EventTyp
|
|
1085
1086
|
return undefined;
|
1086
1087
|
}
|
1087
1088
|
|
1088
|
-
private canInspectURL(url:
|
1089
|
+
private canInspectURL(url: Platform.DevToolsPath.UrlString): boolean {
|
1089
1090
|
let parsedURL;
|
1090
1091
|
// This is only to work around invalid URLs we're occasionally getting from some tests.
|
1091
1092
|
// TODO(caseq): make sure tests supply valid URLs or we specifically handle invalid ones.
|
@@ -35,6 +35,7 @@
|
|
35
35
|
// See https://bugs.webkit.org/show_bug.cgi?id=58127 for details.
|
36
36
|
|
37
37
|
import * as Common from '../../core/common/common.js';
|
38
|
+
import type * as Platform from '../../core/platform/platform.js';
|
38
39
|
import * as SDK from '../../core/sdk/sdk.js';
|
39
40
|
import type * as Protocol from '../../generated/protocol.js';
|
40
41
|
|
@@ -346,8 +347,8 @@ export class Entry {
|
|
346
347
|
return parameters.slice();
|
347
348
|
}
|
348
349
|
|
349
|
-
private buildRequestURL(url:
|
350
|
-
return
|
350
|
+
private buildRequestURL(url: Platform.DevToolsPath.UrlString): Platform.DevToolsPath.UrlString {
|
351
|
+
return Common.ParsedURL.ParsedURL.split(url, '#', 2)[0];
|
351
352
|
}
|
352
353
|
|
353
354
|
private buildCookies(cookies: SDK.Cookie.Cookie[]): CookieDTO[] {
|
@@ -438,7 +439,7 @@ export interface Content {
|
|
438
439
|
|
439
440
|
export interface Request {
|
440
441
|
method: string;
|
441
|
-
url:
|
442
|
+
url: Platform.DevToolsPath.UrlString;
|
442
443
|
httpVersion: string;
|
443
444
|
headers: Object;
|
444
445
|
queryString: Parameter[];
|
@@ -34,7 +34,9 @@ const UIStrings = {
|
|
34
34
|
authorizationCoveredByWildcard:
|
35
35
|
'Authorization will not be covered by the wildcard symbol (*) in CORS `Access-Control-Allow-Headers` handling.',
|
36
36
|
/**
|
37
|
-
* @description
|
37
|
+
* @description This warning occurs when a page attempts to request a resource
|
38
|
+
* whose URL contained both a newline character (`\n` or `\r`), and a
|
39
|
+
* less-than character (`<`). These resources are blocked.
|
38
40
|
*/
|
39
41
|
canRequestURLHTTPContainingNewline:
|
40
42
|
'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.',
|
@@ -131,22 +133,17 @@ const UIStrings = {
|
|
131
133
|
* use of IPv6 addresses with a non-standard API.
|
132
134
|
*/
|
133
135
|
legacyConstraintGoogIPv6:
|
134
|
-
'IPv6 is enabled-by-default and the ability to disable it using `googIPv6`
|
136
|
+
'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.',
|
135
137
|
/**
|
136
138
|
* @description TODO(crbug.com/1318865): Description needed for translation
|
137
139
|
*/
|
138
140
|
localCSSFileExtensionRejected:
|
139
141
|
'CSS cannot be loaded from `file:` URLs unless they end in a `.css` file extension.',
|
140
|
-
/**
|
141
|
-
* @description TODO(crbug.com/1320344): Description needed for translation
|
142
|
-
*/
|
143
|
-
mediaElementAudioSourceNode:
|
144
|
-
'Creating a `MediaElementAudioSourceNode` on an `OfflineAudioContext` is deprecated and will be removed.',
|
145
142
|
/**
|
146
143
|
* @description TODO(crbug.com/1320345): Description needed for translation
|
147
144
|
*/
|
148
145
|
mediaSourceAbortRemove:
|
149
|
-
'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
|
146
|
+
'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.',
|
150
147
|
/**
|
151
148
|
* @description TODO(crbug.com/1320346): Description needed for translation
|
152
149
|
*/
|
@@ -176,11 +173,6 @@ const UIStrings = {
|
|
176
173
|
* @description TODO(crbug.com/1320349): Description needed for translation
|
177
174
|
*/
|
178
175
|
paymentRequestBasicCard: 'The `basic-card` payment method is deprecated and will be removed.',
|
179
|
-
/**
|
180
|
-
* @description TODO(crbug.com/1320350): Description needed for translation
|
181
|
-
*/
|
182
|
-
paymentRequestShowWithoutGesture:
|
183
|
-
'Calling `PaymentRequest.show()` without user activation is deprecated and will be removed.',
|
184
176
|
/**
|
185
177
|
* @description This issue indicates that a `<source>` element with a `<picture>` parent was using an `src` attribute, which is not valid and is ignored by the browser. The `srcset` attribute should be used instead.
|
186
178
|
*/
|
@@ -415,11 +407,6 @@ export class DeprecationIssue extends Issue {
|
|
415
407
|
messageFunction = i18nLazyString(UIStrings.localCSSFileExtensionRejected);
|
416
408
|
milestone = 64;
|
417
409
|
break;
|
418
|
-
case Protocol.Audits.DeprecationIssueType.MediaElementAudioSourceNode:
|
419
|
-
messageFunction = i18nLazyString(UIStrings.mediaElementAudioSourceNode);
|
420
|
-
feature = 5258622686724096;
|
421
|
-
milestone = 71;
|
422
|
-
break;
|
423
410
|
case Protocol.Audits.DeprecationIssueType.MediaSourceAbortRemove:
|
424
411
|
messageFunction = i18nLazyString(UIStrings.mediaSourceAbortRemove);
|
425
412
|
feature = 6107495151960064;
|
@@ -449,11 +436,6 @@ export class DeprecationIssue extends Issue {
|
|
449
436
|
feature = 5730051011117056;
|
450
437
|
milestone = 100;
|
451
438
|
break;
|
452
|
-
case Protocol.Audits.DeprecationIssueType.PaymentRequestShowWithoutGesture:
|
453
|
-
messageFunction = i18nLazyString(UIStrings.paymentRequestShowWithoutGesture);
|
454
|
-
feature = 5948593429020672;
|
455
|
-
milestone = 102;
|
456
|
-
break;
|
457
439
|
case Protocol.Audits.DeprecationIssueType.PictureSourceSrc:
|
458
440
|
messageFunction = i18nLazyString(UIStrings.pictureSourceSrc);
|
459
441
|
break;
|
@@ -97,7 +97,7 @@ const createPropertyElement = (node: SDK.DOMModel.DOMNode, propertyName: string,
|
|
97
97
|
const propertyElement = new ElementsComponents.ComputedStyleProperty.ComputedStyleProperty();
|
98
98
|
|
99
99
|
const renderer = new StylesSidebarPropertyRenderer(null, node, propertyName, propertyValue);
|
100
|
-
renderer.setColorHandler(processColor
|
100
|
+
renderer.setColorHandler(processColor);
|
101
101
|
|
102
102
|
const propertyNameElement = renderer.renderName();
|
103
103
|
propertyNameElement.slot = 'property-name';
|
@@ -117,7 +117,7 @@ const createTraceElement =
|
|
117
117
|
const trace = new ElementsComponents.ComputedStyleTrace.ComputedStyleTrace();
|
118
118
|
|
119
119
|
const renderer = new StylesSidebarPropertyRenderer(null, node, property.name, (property.value as string));
|
120
|
-
renderer.setColorHandler(processColor
|
120
|
+
renderer.setColorHandler(processColor);
|
121
121
|
const valueElement = renderer.renderValue();
|
122
122
|
valueElement.slot = 'trace-value';
|
123
123
|
trace.appendChild(valueElement);
|
@@ -138,11 +138,11 @@ const createTraceElement =
|
|
138
138
|
return trace;
|
139
139
|
};
|
140
140
|
|
141
|
-
const processColor = (
|
141
|
+
const processColor = (text: string): Node => {
|
142
142
|
const swatch = new InlineEditor.ColorSwatch.ColorSwatch();
|
143
|
-
swatch.renderColor(text,
|
143
|
+
swatch.renderColor(text, true);
|
144
144
|
const valueElement = document.createElement('span');
|
145
|
-
valueElement.textContent =
|
145
|
+
valueElement.textContent = swatch.getText();
|
146
146
|
swatch.append(valueElement);
|
147
147
|
|
148
148
|
swatch.addEventListener(
|
@@ -252,6 +252,7 @@ export class ComputedStyleWidget extends UI.ThrottledWidget.ThrottledWidget {
|
|
252
252
|
fontsWidget.show(this.contentElement);
|
253
253
|
|
254
254
|
this.idleCallbackManager = new IdleCallbackManager();
|
255
|
+
Common.Settings.Settings.instance().moduleSetting('colorFormat').addChangeListener(this.update.bind(this));
|
255
256
|
}
|
256
257
|
|
257
258
|
onResize(): void {
|