WebKit Bugzilla
Attachment 371022 Details for
Bug 198395
: Web Inspector: remove RemoteObject.prototype.getPropertyDescriptorsAsObject
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198395-20190530194027.patch (text/plain), 7.14 KB, created by
Devin Rousso
on 2019-05-30 19:40:28 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Devin Rousso
Created:
2019-05-30 19:40:28 PDT
Size:
7.14 KB
patch
obsolete
>diff --git a/Source/WebInspectorUI/ChangeLog b/Source/WebInspectorUI/ChangeLog >index f176cf6d8db264e6ed98d4cd7f9cd96443e7fe77..cf2f11f3bb6b1ba5875f20ac7b87032006a1a044 100644 >--- a/Source/WebInspectorUI/ChangeLog >+++ b/Source/WebInspectorUI/ChangeLog >@@ -1,3 +1,22 @@ >+2019-05-30 Devin Rousso <drousso@apple.com> >+ >+ Web Inspector: remove RemoteObject.prototype.getPropertyDescriptorsAsObject >+ https://bugs.webkit.org/show_bug.cgi?id=198395 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ When calling `RemoteObject.prototype.getPropertyDescriptorsAsObject`, if one of the returned >+ property descriptors is named `__proto__`, it will replace the `__proto__` of the plain >+ object created for that function with the `WI.PropertyDescriptor` itself, altering the >+ prototype chain. >+ >+ * UserInterface/Protocol/RemoteObject.js: >+ (WI.RemoteObject.prototype.getPropertyDescriptorsAsObject): Deleted. >+ * UserInterface/Models/AuditTestCase.js: >+ (WI.AuditTestCase.prototype.async run.async parseResponse.async resultArrayForEach): >+ * UserInterface/Views/ErrorObjectView.js: >+ (WI.ErrorObjectView.prototype.update): >+ > 2019-05-30 Devin Rousso <drousso@apple.com> > > Web Inspector: Audit: there should be a default test for WebInspectorAudit.Resources functionality >diff --git a/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js b/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js >index 85a5312970188cff43a4de5473d7b59b4b6770cb..f30cfe34cac49dd994fb5aa85fd430bc3b20f4ca 100644 >--- a/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js >+++ b/Source/WebInspectorUI/UserInterface/Models/AuditTestCase.js >@@ -181,12 +181,11 @@ WI.AuditTestCase = class AuditTestCase extends WI.AuditTestBase > if (!array) > return; > >- // `getPropertyDescriptorsAsObject` returns an object, meaning that if we >- // want to iterate over `array` by index, we have to count. >- let asObject = await new Promise((resolve, reject) => array.getPropertyDescriptorsAsObject(resolve, options)); >+ let arrayProperties = await new Promise((resolve, reject) => array.getPropertyDescriptors(resolve, options)); > for (let i = 0; i < array.size; ++i) { >- if (i in asObject) >- await callback(asObject[i]); >+ let arrayPropertyForIndex = arrayProperties.find((arrayProperty) => arrayProperty.name === i); >+ if (arrayPropertyForIndex) >+ await callback(arrayPropertyForIndex); > } > } > >diff --git a/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js b/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js >index bf2317c570d20568113745b497c472327813177c..8e4be46b50893689b39db243d3e0a8bc8a2d3af8 100644 >--- a/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js >+++ b/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js >@@ -651,19 +651,6 @@ WI.RemoteObject = class RemoteObject > return JSON.stringify(this._objectId) + "-" + this._subtype; > } > >- getPropertyDescriptorsAsObject(callback, options = {}) >- { >- this.getPropertyDescriptors(function(properties) { >- var propertiesResult = {}; >- var internalPropertiesResult = {}; >- for (var propertyDescriptor of properties) { >- var object = propertyDescriptor.isInternalProperty ? internalPropertiesResult : propertiesResult; >- object[propertyDescriptor.name] = propertyDescriptor; >- } >- callback(propertiesResult, internalPropertiesResult); >- }, options); >- } >- > _getPropertyDescriptorsResolver(callback, error, properties, internalProperties) > { > if (error) { >diff --git a/Source/WebInspectorUI/UserInterface/Views/ErrorObjectView.js b/Source/WebInspectorUI/UserInterface/Views/ErrorObjectView.js >index 8f88632a995e32965dd6c2bef187b084e2609f28..399adbce46da21496ac5050c337726f270b2b4cd 100644 >--- a/Source/WebInspectorUI/UserInterface/Views/ErrorObjectView.js >+++ b/Source/WebInspectorUI/UserInterface/Views/ErrorObjectView.js >@@ -87,16 +87,23 @@ WI.ErrorObjectView = class ErrorObjectView extends WI.Object > > update() > { >+ if (this._hasStackTrace) >+ return; >+ > const options = { > ownProperties: true, > generatePreview: true, > }; >- this._object.getPropertyDescriptorsAsObject((properties) => { >- console.assert(properties && properties.stack && properties.stack.value); >+ this._object.getPropertyDescriptors((properties) => { >+ if (!properties || this._hasStackTrace) >+ return; > >- if (!this._hasStackTrace) >- this._buildStackTrace(properties.stack.value.value); >+ let stackProperty = properties.find((property) => property.name === "stack"); >+ console.assert(stackProperty); >+ if (!stackProperty) >+ return; > >+ this._buildStackTrace(stackProperty.value.value); > this._hasStackTrace = true; > }, options); > } >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 5d98e407cd976f4e693e8aac5ed83148277ddd1f..712062406e595055a59b16fe7cffcde378017842 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,12 @@ >+2019-05-30 Devin Rousso <drousso@apple.com> >+ >+ Web Inspector: remove RemoteObject.prototype.getPropertyDescriptorsAsObject >+ https://bugs.webkit.org/show_bug.cgi?id=198395 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * inspector/runtime/awaitPromise.html: >+ > 2019-05-30 Devin Rousso <drousso@apple.com> > > Web Inspector: Audit: there should be a default test for WebInspectorAudit.Resources functionality >diff --git a/LayoutTests/inspector/runtime/awaitPromise.html b/LayoutTests/inspector/runtime/awaitPromise.html >index 9d2fbf45c74e748d9d116d5a69c05b7ced0c2f43..b57c98b2c0d44ba7409430fe4cea22fb04b6e2fa 100644 >--- a/LayoutTests/inspector/runtime/awaitPromise.html >+++ b/LayoutTests/inspector/runtime/awaitPromise.html >@@ -53,10 +53,10 @@ function test() > addTest(name, expression, options, async (remoteObject, wasThrown) => { > InspectorTest.assert(wasThrown, "There should be an error."); > if (value && typeof value === "object") { >- let propertyDescriptors = await new Promise((resolve) => remoteObject.getPropertyDescriptorsAsObject(resolve)); >+ let propertyDescriptors = await new Promise((resolve) => remoteObject.getPropertyDescriptors(resolve)); > let properties = Array.isArray(value) ? [] : {}; > for (let key in value) >- properties[key] = propertyDescriptors[key].value.value; >+ properties[key] = propertyDescriptors.find((property) => property.name === key).value.value; > InspectorTest.expectShallowEqual(properties, value, "The rejected value should be " + JSON.stringify(value)); > } else > InspectorTest.expectEqual(remoteObject.value, value, "The rejected value should be " + JSON.stringify(value));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198395
:
371022
|
371025
|
371026
|
371030
|
371033