Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: eba01be516e6823677fedb7e3676d3e2cef5914e
      
https://github.com/WebKit/WebKit/commit/eba01be516e6823677fedb7e3676d3e2cef5914e
  Author: Devin Rousso <[email protected]>
  Date:   2023-08-30 (Wed, 30 Aug 2023)

  Changed paths:
    M LayoutTests/inspector/runtime/getDisplayableProperties-expected.txt
    M LayoutTests/inspector/runtime/getDisplayableProperties.html
    M LayoutTests/inspector/runtime/getProperties-expected.txt
    M LayoutTests/inspector/runtime/getProperties.html
    M LayoutTests/inspector/runtime/resources/property-descriptor-utilities.js
    M Source/JavaScriptCore/inspector/InjectedScriptSource.js
    M Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp
    M Source/JavaScriptCore/inspector/JSInjectedScriptHost.h
    M Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp

  Log Message:
  -----------
  Web Inspector: objects can have multiple private fields with the same name
https://bugs.webkit.org/show_bug.cgi?id=256319

Reviewed by Patrick Angle.

We should show all private fields for an object, not just the most recently 
defined one for each name.

Developers will be able to identify the value for `this.#foo` by looking for 
the last `#foo` in the list, as private fields must be declared as part of the 
`class` definition, meaning they will be created in that order.

* Source/JavaScriptCore/inspector/JSInjectedScriptHost.h:
* Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::getOwnPrivatePropertySymbols): Added.
(Inspector::JSInjectedScriptHost::getOwnPrivatePropertyDescriptors): Deleted.
* Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp:
(Inspector::JSInjectedScriptHostPrototype::finishCreation):
(Inspector::jsInjectedScriptHostPrototypeFunctionGetOwnPrivatePropertySymbols): 
Added.
(Inspector::jsInjectedScriptHostPrototypeFunctionGetOwnPrivatePropertyDescriptors):
 Deleted.
Instead of returning an object keyed by the stringified private symbol, mimic 
`Object.getOwnPropertySymbols` to just return the list of all private field 
symbols.
We can then use the existing code that calls `Object.getOwnPropertyDescriptor` 
(instead of doing that manually in C++).

* Source/JavaScriptCore/inspector/InjectedScriptSource.js:
(InjectedScript.prototype._forEachPropertyDescriptor.processProperty):
(InjectedScript.prototype._forEachPropertyDescriptor):
Since we're now using `Symbol`, differentiate private fields from regular 
(public) `Symbol` properties.

* LayoutTests/inspector/runtime/resources/property-descriptor-utilities.js:
* LayoutTests/inspector/runtime/getDisplayableProperties.html:
* LayoutTests/inspector/runtime/getDisplayableProperties-expected.txt:
* LayoutTests/inspector/runtime/getProperties.html:
* LayoutTests/inspector/runtime/getProperties-expected.txt:

Canonical link: https://commits.webkit.org/267483@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to