W3C

– DRAFT –
WebDriver

10 November 2021

Attendees

Present
brwalder, foolip, jdescottes, jgraham, jimevans, sadym, whimboo
Regrets
-
Chair
AutomatedTester
Scribe
AutomatedTester

Meeting minutes

<jgraham> RRSAgent: make logs public

<jgraham> RRSAgent: make minutes v2

https://www.w3.org/wiki/WebDriver/2021-11-BiDi#Agenda

script.callFunction

github: https://github.com/w3c/webdriver-bidi/pull/142

sadym: I have been working on this and I want to check some topics
… first topic is "what should we do if the call is made but doesnt exist".
… currently we throw an invalid expression
… 2nd topic: what do we do to to make sure that something is callable?
… 3rd topic: whimboo asked why do we need local values and primative values here and the symmetry

<foolip> On the first topic, https://pr-preview.s3.amazonaws.com/sadym-chromium/webdriver-bidi/pull/142.html#command-script-callFunction defines this at step 7: "If function body evaluation status.[[Type]] is throw, return error with error code invalid argument."

jgraham: I think I suggested this in the PR
… if you send something and it's not actionable it should be a protocol error
… using a protocol error allows UA to return what they want and share a lot of info
… for the parenthisis function... I know it feels like a hack but I think it is fine
… I don't think it really matters
… re: local values I think this seems fine and it's what we agreed the last time
… and think you for writing the PR, I have been reviewing it and it's great and unless there are concerns its really close to be landed

<whimboo> no comments but just a thank you to sadym for working on this!

sandboxed script execution

github: https://github.com/w3c/webdriver-bidi/issues/144

jgraham: With the script.eval and script.call nearly ready to ship
… however some clients don't want to do this
… because they can call things in the page
… what they do instead is use a script sandbox to do this
… they get a very filtered "window" object
… so looking at this we probably want to get this implemented as soon as possible to help the playwright and puppeteer folks
… there are few questions in the issue that I could use some help with
… the way this works in CDP is that you can use the `createIsolatedWorld` API
… and you get access to the dom via the `window` object
… we need to think about how `onLoadRunJS` type APIs would work
… we could use what CDP does here and have 2+ APIs or we could figure out how to do it implicitly
… There is a rough strawman in the issue and could be a bit of a deep question
… so for now can we discuss what the protocol level API would look like

foolip: are you saying that his is a readonly thing?
… can the script execution set properties?

jgraham: I don't think it's readonly
… if you update the internal state of the DOM then it will be updated
… if you update a JS property then it won't necessarily be updated
… my understanding of how this works in blink is <describes technical section>
… however in gecko it's different
… I've not dug into the details that are observable differences
… I need to go back and look into it again

foolip: are we trying to figure out what we should do or...

jgraham: I am expecting that we will have implementation differences here
… and there are very few clients that we can hopefull solve things
… we are probably going to need to start with something sketchy and then build it up
… it's trying to work things that don't really exist to us
… fortunately there are some similarities with the webextensions groups here

foolip: that all makes sense to me
… and since webextensions already depend on it that we can converge here
… maybe there is something we can do

whimboo: when were implementing evaulate in the firefox cdp code we had issues around CSP
… has your issue taken that into account

jgraham: I haven't looked into it just yet but I think we should be fine
… We should probably look at making a note that CSP should not block the execute script in this area
… I assume this is how CDP already works

github: end topic

<jimevans> jgraham: not bidi related, but i've patched a hole in the webdriver html spec and would like a review (wpt test is forthcoming).

github-bot: end topic

<jgraham> RRSAgent: Make minutes v2

Minutes manually created (not a transcript), formatted by scribe.perl version 159 (Fri Nov 5 17:37:14 2021 UTC).

Diagnostics

Succeeded: s/wit/with/

Maybe present: github-bot