01:08
<sideshowbarker>
Has anybody made a diagram that shows the relationship/structure for navigables, browsing contexts, Windows, documents? For example, something similar to https://docs.google.com/presentation/d/1ZRIQbUKw9Tf077odCh66OrrwRIVNLvI_nhLm2Gi__F0/embed?start=false&loop=false&delayms=3000&slide=id.g30f0fc55_0_152
01:22
<Domenic>
Some attempts in https://github.com/whatwg/html/issues/3863 , outdated by now
01:54
<sideshowbarker>

One thing that’s challenging about implementing spec features is that the abstractions/classes used in browser-engine source — other than Document and maybe Window — don’t clearly map to spec constructs.

I mean the fact that, for example, there’s no, say, BrowsingContext class in WebKit/Blink — instead the closest thing to that (and to a navigable) is called Frame, and it’s not completely clear that really does correspond very directly to the spec constructs.

And then WebKit and Blink have a Page class — which in Gecko corresponds maybe to a docshell? But neither Page nor docshell seem to map clearly to anything in the spec.

And because of all that, sometimes when I look at some particular conditional check in the engine sources, I can’t see what particular observable (JavaScript-testable) condition in frontend JavaScript code that condition corresponds to — or even if it corresponds to any observable/JavaScript-testable condition.

Example: if (!frame->page())

Since I don’t know what (if anything) a Page maps to in the spec, I also don’t know what it means for a Frame to not have an associated Page, and whether a change to the code block for that condition is something that will be observable from frontend code and potentially affect existing tests — or that should require new tests.

03:51
<Domenic>
Dominic Farolino has thought a lot about these things in Chromium
06:19
<sideshowbarker>
Dominic Farolino has thought a lot about these things in Chromium
I'll look forward to chatting with Dom about it
07:15
<annevk>
Domenic: do you recall the story around Uint8Array in more detail? https://github.com/whatwg/fetch/issues/1724
07:15
<annevk>
It certainly wasn't about what implementations were doing
07:16
<Domenic>
It was originally a constraint on outputs. Then for upload streams we decided not to allow anything else... not sure exactly why. Maybe because you should only be upload-streaming bytes, not float32s?
07:16
<Domenic>
For arguments to methods, accepting BufferSource seems like the general rule.
07:18
<annevk>
Maybe for upload streams it was so that code path could be optimized? But okay, that matches my general recollection.
15:34
<Chris de Almeida>
😜
17:37
<Chris de Almeida>
☝️ apparently the cat has been at the keyboard
22:03
<akaster>
Is it intended that a browsing context group should be 1-1 with an agent cluster, and a browsing context should be 1-1 with an agent, from ECMA 262?
22:07
<akaster>
It seems like the AO to create a new browsing context and document is essentially saying, "create a new agent". But it's not clear to me what part of the algorithms following from the rules for choosing a target navigable tell me whether I need to create a new process for the browsing context. Or rather, what part of the rules tell me whether a new navigable should live within the same agent cluster or not.
22:10
<akaster>
Or wait no. Create a new browsing context and document says to create a new realm. Which is not the same as an agent. 😵‍💫