w3c / performance-timeline

Performance Timeline
https://w3c.github.io/performance-timeline/
Other
111 stars 34 forks source link

`PerformanceObserver.supportedEntryTypes`can't be annotated with `[SameObject]` #212

Open petervanderbeken opened 4 months ago

petervanderbeken commented 4 months ago

The supportedEntryTypes attribute has a FrozenArray type. [SameObject] is only valid if the attribute's type is an interface or object, see https://webidl.spec.whatwg.org/#SameObject:

The [SameObject] extended attribute must not be used on anything other than a read only attribute whose type is an interface type or object.

clelland commented 4 months ago

@yoavweiss who may have some historical context here.

yoavweiss commented 4 months ago

I vaguely remember the current state being a result of discussions on https://github.com/w3c/performance-timeline/issues/117

I don't personally have a strong opinion on this.

clelland commented 4 months ago

https://github.com/whatwg/webidl/issues/1402 has some recent movement on this issue.

I don't expect that we actually need this to be [SameObject]; I don't think people are modifying it and expecting it to retain those modifications. This was likely to avoid recalculating or allocating more memory every time the accessor is called.

clelland commented 3 months ago

We also don't technically need FrozenArray here either. I think that what we want is to return an array, and not recalculate that array every time it's requested. Perhaps as Domenic alludes to in https://github.com/whatwg/webidl/issues/1402#issuecomment-2085208885, we can avoid being blocked on https://github.com/whatwg/webidl/issues/1402 if we change the spec text to just do what we want in the getter.

tunetheweb commented 3 months ago

It would be lovely if it was an array that could be updated but didn't need to be recalculated each time. So enabling things via origin trials for example could update these even if it's already been read. Ran into this with LoAF when it was enabled after first being read for another reason.

yoavweiss commented 3 months ago

Changing the values of the array over time would be a web-exposed change, although I doubt that it'd be something anyone would notice..

clelland commented 3 months ago
  1. We should remove [SameObject], and just enforce that in the processing model. Can send a PR for that.
  2. To handle origin trials, we might want to switch from a FrozenArray to a regular sequence. That's less clear though.