- From: Dominique Hazael-Massieux <dom@w3.org>
- Date: Wed, 22 Jan 2025 13:49:37 +0100
- To: "public-webrtc@w3.org" <public-webrtc@w3.org>
Hi, The minutes of our meeting held yesterday (Jan 21st) are available at https://www.w3.org/2025/01/21-webrtc-minutes.html and copied as text below. Dom WebRTC January 2025 meeting 21 January 2025 [2]Agenda. [3]IRC log. [2] https://www.w3.org/2011/04/webrtc/wiki/November_19_2024 [3] https://www.w3.org/2025/01/21-webrtc-irc Attendees Present BernardA, Carine, Cullen, Dom, Elad, FrederikSolengerg, Guido, Harald, Jan-Ivar, JasperHugo, PatrickRockhill, PeterT, SunShin, TimP, Tove, Youenn Regrets - Chair Bernard, Guido, Jan-Ivar Scribe dom Contents 1. [4]Captured Surface Control 1. [5]Zoom control 2. [6]oncapturedzoomlevelchange 3. [7]get/setSupportedZoomLevels() 4. [8]Scroll control 5. [9]Forwarding other gestures 6. [10]Consideration of limitation to HTMLVideoElement 2. [11]Screen Capture 1. [12]Suggest User Agents treat a captured tab as visible 3. [13]Summary of resolutions Meeting minutes Slideset: [14]https://docs.google.com/presentation/d/ 1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/ ([15]archived PDF copy) [14] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/ [16]Captured Surface Control [16] https://github.com/w3c/mediacapture-surface-control/ [17]Zoom control [17] https://github.com/w3c/mediacapture-surface-control/issues/27 [18][Slide 10] [18] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#10 [19][Slide 11] [19] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#11 Elad: implemented in Chrome like css zoom [20][Slide 12] [20] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#12 [21][Slide 16] [21] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#16 [22][Slide 13] [22] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#13 [23][Slide 14] [23] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#14 Jan-Ivar: supports the attribute … there is a separate discussion about where the API should belong … instead of nullable, you suggest a default to 100? Elad: re API anchoring, that discussion was around gestures, not for zoom level? Jan-ivar: let's discuss the anchoring question later … although it would have been good to discuss this topic first Cullen: could you tell more about how safe is this approach? given risks of overexposure Elad: this has indeed been discussed - we're suggesting a layered security approach: the UA ensures the user gives consent to share a specific thing, plus additional consent on zoom/scroll? Cullen: is the latter implicit or explicit? Elad: this is in origin trial if you want to try - it comes with an explicit chrome level prompt Cullen: I'll give it a try - it feels risky youenn: attribute is an improvement; nullability allows to express whether zoomability has a meaning for the given surface … re API anchoring, we should discuss this; we had discussed in the past multiple surfaces captured in a single getDisplayMedia … we need to future-proof the API since that's one use case we know about RESOLUTION: zoomLevel is an attribute, nullable for now but may be revisited Jan-Ivar: note that developers will need to test for undefined already since it's only available in one browser atm HTA: there is a complexity cost to future proofing - I prefer designing for current requirement set oncapturedzoomlevelchange [24][Slide 15] [24] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#15 [25][Slide 16] [25] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#16 Youenn: feels like the event name is too long - we can bikeshed it later [26]get/setSupportedZoomLevels() [26] https://github.com/w3c/mediacapture-surface-control/issues/40 [27][Slide 17] [27] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#17 [28][Slide 18] [28] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#18 [29][Slide 19] [29] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#19 [30][Slide 20] [30] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#20 [31][Slide 21] [31] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#21 Jan-Ivar: using Youenn's proposal allows to remove getZoomLevels(), which has risks of creating interop issues … also has nicer safety characteristics to avoid a malicious app to over-zoom Youenn: +1 to the increase/decrease API; could you say more about the need resetZoomLevel()? Elad: re removing the need of getZoomLevels, you still need it to know whether you've hit a max … we've heard the need for reset from product teams Youenn: at least getSupportedZoomLevels() would only to report the extremes Harald: setZoomLevel feels more ergonomic Dom: you could return false to indicate that you've reached an extreme value Elad: but that doesn't work when starting from the extreme Elad: I'm hearing support to move forward with increase/decrease/reset, and simplify getSupportedZoomLevels() to a range RESOLUTION: Use increase/decrease/resetZoomLevel() and simplify getSupportedZoomLevels() to a range Scroll control [32][Slide 23] [32] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#23 [33][Slide 24] [33] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#24 Youenn: the costs for spec authors and implementers seem low Elad: the implementation cost is not negligible Dom: you could imagine applying effects on a local capture to e.g. visualize different color scheme on a design Jan-Ivar: from a logical perspective, this is a one-to-many relationship [34]Forwarding other gestures [34] https://github.com/w3c/mediacapture-surface-control/issues/47 [35][Slide 25] [35] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#25 Jan-Ivar: touch events would probably be applicable to e.g. windows tablets … for scrolling [36][Slide 26] [36] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#26 [37][Slide 27] [37] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#27 [38][Slide 28] [38] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#28 [39][Slide 29] [39] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#29 Youenn: forwardGestures(el, false) is pretty clear - not sure about the meaning of true … would this be all "true", or all to default value … re option 3, not clear how you stop forwarding … I like option 4 Elad: I'm also liking it better now Harald: defaults that push things in scope feel dangerous; option 1 is simple … having been to be explicit about the gestures you allow feel like an improvement Elad: the dictionary would be needed now to help with future-proofing - developers can decide whether they want to be liberal or conservative with gesture forwarding … the app needs to decide which gestures to consume locally vs forward Youenn: but part of I'm saying is that "wheel" vs "touch-scroll" is a useful distinction Jan-Ivar: option 3 won't work given default true values … I like option 1 (?) Guido: option 3, default values would have to be false … I think for safety reasons, option 1 & 3 are preferable Elad: I suggested default to true for wheel given that's currently the only value, but I understand that's not right Youenn: wheel is the wrong semantics - it should be about scrolling harald: but a wheel event can be used for other things that scrolling Guido: I don't like option 4 - I think we're unlikely to find consensus Jan-Ivar: in the Chrome implementation, can the Web app intercept the event? Elad: don't think so, would need to double check [40]Consideration of limitation to HTMLVideoElement [40] https://github.com/w3c/mediacapture-surface-control/issues/45 [41][Slide 31] [41] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#31 [42][Slide 32] [42] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#32 [43][Slide 33] [43] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#33 Jan-Ivar: if you have an interactive overlay , it would need to dispatch events … to the video element … I didn't know that `pointer-events: none` prevented dispatching event handlers … Libraries would evolve to suppor this scenario Elad: this isn't limited to trusted events; pointer-events make using event dispatch unworkable [44][Slide 34] [44] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#34 [45][Slide 35] [45] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#35 Elad: heuristics can be applied independently of what element the API is applied to Tim: hearing about these heuristics feels like it will be very problematic for developers to make sense of it … I don't think the target element changes this … but it feels like testing this will be hard … if somebody starts scribling over 2/3rd of the screen, will that stop working? Jan-Ivar: it would be simpler to have it on the video element from an ergonomic perspective, and that pausing the video would stop the scrolling … in terms of UA mitigations, UA do clickjacking mitigations all the time Guido: the UA is well positioned to know the binding between capture and the video element … restrictions are orthogonal to the element Dom: I'm hearing that security restrictions are mostly orthogonal to that particular API surface,; I'm also hearing a bit of an ergonomic advantage to the video element (and I agree with it); but the issue with annotation and pointer-events is problematic Jan-Ivar: I would like to have an opportunity to give a bette representation of my perspective Elad: we're hearing developers request for this to work at least with canvas Jan-Ivar: this could be something we extend to - it's the case for captureStream() for instance Guido: supporting the core use case of annotation feels like something any proposal need to demonstrate Jan-Ivar: I'll look into the pointer-events situation, that's new information to me Youenn: is there a use case for an HTML element that isn't an overlay to a video element? Elad: video *or* canvas which is an important part of the MVP for us … we're hearing requests (e.g. from Meet) to have this supported even if the video is only painted on a canvas Dom: would be to hear more about the reasoning for these requests (to understand the trade off in adding that support) Screen Capture [46]Suggest User Agents treat a captured tab as visible [46] https://github.com/w3c/mediacapture-screen-share/issues/307 [47][Slide 37] [47] https://docs.google.com/presentation/d/1XbWX8qrgaXQIQ2zQoh1RW4dUDbztaM7uCW9ZFnDvpWk/#37 Harald: when you capture a browser *window* it includes the chrome of the browser … and a browser could capture the window of another browser Youenn: the described behavior makes some sense to me; would this be guidance or required? … I would be fine with guidance, not sure about requiring it, esp for window Jan-Ivar: I would be happy with SHOULD for both … we want to avoid having a browser page throttled when being captured Youenn: SHOULD SGTM Elad: is this tab-only or window too? Jan-Ivar: both Elad: tab would seem to be an easy starting point Harald: I'm happy with a MUST for tabs, needs more time to discuss if this is feasible for window … maybe discuss this in a new issue Dom: re window, are we only talking about browser window of the same UA? is that really harder than a tab? Elad: a browser cannot necessarily detect that it is being window-captured depending on the OS … hence why I suggest starting with tabs Youenn: if a window is fully occluded, an OS may not provide any frame (and thus throttling might actually be the right thing) … we can give advice in that direction, without having the spec trying to require it Jan-Ivar: how about MUST for tab capture? Youenn: SGTM Tim: I don't see it needed for window - if it works only sometimes, that's harder to explain to users … let's do it just for tabs, as a MUST Elad: are there other states that ought be treated the same way as visibility? RESOLUTION: focus on tab capture and make it a requirement (MUST) Youenn: we should look into other properties Elad: e.g. blur (that's the only one I can think of) Summary of resolutions 1. [48]zoomLevel is an attribute, nullable for now but may be revisited 2. [49]Use increase/decrease/resetZoomLevel() and simplify getSupportedZoomLevels() to a range 3. [50]focus on tab capture and make it a requirement (MUST)
Received on Wednesday, 22 January 2025 12:49:39 UTC