________________________________ From: Rick Byers <rby...@chromium.org> Sent: Wednesday, December 14, 2022 1:05 PM To: Ben Mathwig <benjamin.math...@microsoft.com> Cc: blink-dev <blink-dev@chromium.org>; Mustaq Ahmed <mus...@google.com>; fla...@chromium.org <fla...@chromium.org>; Sahir Vellani <sahir.vell...@microsoft.com>; Ben Mathwig <benjamin.math...@microsoft.com> Subject: Re: [EXTERNAL] Re: [blink-dev] Intent to Prototype: PointerEvent.deviceId for Mult-Pen Inking
You don't often get email from rby...@chromium.org. Learn why this is important<https://aka.ms/LearnAboutSenderIdentification> On Mon, Dec 12, 2022 at 1:07 PM 'Ben Mathwig' via blink-dev <blink-dev@chromium.org<mailto:blink-dev@chromium.org>> wrote: --- Sahir & Ben: wondering why a new deviceId field seems more logical now against the original proposal of repurposing the pointerId field? Is it because of the compat concern you raised in w3c/pointerevents/issues/353<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fw3c%2Fpointerevents%2Fissues%2F353%23issuecomment-1346776842&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579474144%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=01VF%2FXH9E%2FAUhsZXbQhd4irjmMNlWxyIj9rYZcKDTwQ%3D&reserved=0>? --- The primary reason is the deterministic nature of deviceId compared to pointerId. The scenario would be: (a) If the device supports getting a unique hardware identifier, we randomly generate an integer and persist that integer for the document lifespan. (b) If the device does not support getting a unique hardware identifier, does pointerId fall back to its original behavior? In the spec, we decided between null, undefined, and integer as the deterministic values of deviceId. We could use pointerId instead, but we'd have to align on the solution for (b) I guess we should take this to a GitHub repo somewhere, but I can't help but interject: sounds like a pretty good use case for InputDeviceCapabilities<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FAPI%2FInputDeviceCapabilities&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579474144%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=HCNZsP13%2B%2FAfS3SWOWd9fbw79yXa3kFnWElJzq8VulU%3D&reserved=0> to me (i.e. 'hasDeterministicPointerId') ☺. Perhaps along with a boolean on the event for the limitation case discussed in the explainer. TIL! Just so I understand this correctly, we would have something like: event.sourceCapabilities.hasDeterministicPointerId as a check to let the web developer know that the event.pointerId is a valid device ID? Jeffrey had made a similar suggestion about mitigating the potential confusion of null/undefined by adding a separate boolean. Open to moving this discussion to the appropriate forum. On Monday, December 12, 2022 at 8:08:11 AM UTC-8 Mustaq Ahmed wrote: Supporting consistent IDs for supported pens sounds great. Sahir & Ben: wondering why a new deviceId field seems more logical now against the original proposal of repurposing the pointerId field? Is it because of the compat concern you raised in w3c/pointerevents/issues/353<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fw3c%2Fpointerevents%2Fissues%2F353%23issuecomment-1346776842&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579474144%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=01VF%2FXH9E%2FAUhsZXbQhd4irjmMNlWxyIj9rYZcKDTwQ%3D&reserved=0>? On Thu, Dec 8, 2022 at 5:16 PM Rick Byers <rby...@chromium.org> wrote: On Thu, Dec 8, 2022 at 1:17 PM Sahir Vellani <sahir....@microsoft.com> wrote: Thank you for all the feedback! Rick, yes that’s correct. The ID will be refreshed on reload and iframes will have a different ID to their parent/each other. Also, we can definitely explore integration with web driver and adding a WPT test. Perfect. I'm not a privacy reviewer, but that makes a lot of sense to me. Ben, any thoughts on the PEWG path Rick mentions below? Sounds<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fw3c%2Fpointerevents%2Fissues%2F353&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579474144%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=vh5oZuMKrcIaF5LaqSFGmQNFkhNrIxLE4c8O17TD%2B8s%3D&reserved=0> like the current editor / WG chair prefers a WICG spec until L3 gets finalized anyway. But knowing it's just a process thing and can trivially be moved into the PE spec once L3 reaches REC seems good enough to me. Sahir From: Rick Byers <rby...@chromium.org> Sent: Tuesday, December 6, 2022 12:34 PM To: Sahir Vellani <sahir....@microsoft.com>; Mustaq Ahmed <mus...@chromium.org>; Robert Flack <fla...@chromium.org> Cc: blin...@chromium.org; Ben Mathwig <benjamin...@microsoft.com> Subject: [EXTERNAL] Re: [blink-dev] Intent to Prototype: PointerEvent.deviceId for Mult-Pen Inking You don't often get email from rby...@chromium.org. Learn why this is important<https://aka.ms/LearnAboutSenderIdentification> Cool, looks like a nice little addition to me. +Mustaq Ahmed and +Robert Flack from the Chrome interactions team who are likely code reviewers. The only real potential debate I see is around the details of the privacy protections. If I understand correctly "per document instance" means that the IDs will even be different across iframes in the same tab, and also when a page is reloaded. Is that right? If so, I can't see how it would be an issue. On Mon, Dec 5, 2022 at 12:49 PM 'Sahir Vellani' via blink-dev <blin...@chromium.org> wrote: Contact emails bema...@microsoft.com, sahir....@microsoft.com Explainer https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/PointerEventDeviceId/explainer.md<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftEdge%2FMSEdgeExplainers%2Fblob%2Fmain%2FPointerEventDeviceId%2Fexplainer.md&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579474144%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=EsOgFOzsHPc%2Fj%2F%2BTJ9hflwtRxorbyd7hF41%2BLjI0ZBU%3D&reserved=0> Specification https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/PointerEventDeviceId/explainer.md<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftEdge%2FMSEdgeExplainers%2Fblob%2Fmain%2FPointerEventDeviceId%2Fexplainer.md&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579474144%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=EsOgFOzsHPc%2Fj%2F%2BTJ9hflwtRxorbyd7hF41%2BLjI0ZBU%3D&reserved=0> FWIW with my former PointerEvents spec editor hat on, I pinged this issue<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fw3c%2Fpointerevents%2Fissues%2F353&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=osa71PvGzL%2BDGjx39Axkb1caplRW7jqxnGzlzRNz57U%3D&reserved=0> on the PointerEvents spec. We've had 'extensions' to the PointerEvents spec in the past, so the PEWG may be amenable to something simple and pragmatic that'll naturally make it into the next official PE spec rather than starting with WICG. But with my Blink API owner hat on, either path is fine. Summary As devices with advanced pen input capabilities are becoming increasingly prevalent, it is important that the web platform continues to evolve to fully support these advanced features in order to unlock rich experiences for both end users and developers. One such advancement is the ability for a device's digitizer to recognize more than one pen device interacting with it simultaneously. This feature is an extension to the PointerEvent interface to include a new attribute, deviceId, that represents a session-persistent, document isolated, unique identifier that a developer can reliably use to identify individual pens interacting with the page. Blink component Blink>Input<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fbugs.chromium.org%2Fp%2Fchromium%2Fissues%2Flist%3Fq%3Dcomponent%3ABlink%253EInput&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=EFrGRopXCM0LJfTkMGXloPUsfPM6kTU%2BXNGfDqTMiGw%3D&reserved=0> Motivation Currently, developers have no way to distinguish between two individual pens on an ink-enabled digitizer. The existing PointerEvent.id attribute is implemented in different ways and does not always persist for each ink stroke or interaction with the screen. Developers can use this change to have a secure and reliable way to identify individual pen (pointers) interacting with the screen in order to set specific colors or pen shapes for each device interacting with the digitizer. Initial public proposal https://github.com/MicrosoftEdge/MSEdgeExplainers/blob/main/PointerEventDeviceId/explainer.md<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftEdge%2FMSEdgeExplainers%2Fblob%2Fmain%2FPointerEventDeviceId%2Fexplainer.md&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=ICpPXSjDr6YIR8kUwmRvDc5PvqGmMBJ9WxGi64ZagHU%3D&reserved=0> TAG review TAG review status Pending Risks Fingerprinting risks, which will be mitigated by randomizing the ID each renderer session. Interoperability and Compatibility Gecko: Request for Position: Extending the PointerEvent with Unique DeviceId Attribute · Issue #715 · mozilla/standards-positions · GitHub<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fmozilla%2Fstandards-positions%2Fissues%2F715&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=q5R7V4mQDV01AEkBJiY%2BG2OKdAgomwlJy4thA%2FagGMI%3D&reserved=0> WebKit: Request for Position: Extending the PointerEvent with Unique DeviceId Attribute · Issue #102 · WebKit/standards-positions · GitHub<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FWebKit%2Fstandards-positions%2Fissues%2F102&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=50aSzcEF%2FTZiR2ai679NTDXYbD749Ranuj4mtXZqEBw%3D&reserved=0> Web developers: No signals Other signals: WebView application risks Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications? None Debuggability deviceId will be available via DevTools for front-end debugging. Is this feature fully tested by web-platform-tests<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromium.googlesource.com%2Fchromium%2Fsrc%2F%2B%2Fmain%2Fdocs%2Ftesting%2Fweb_platform_tests.md&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=WU1d6ffoGTwByu5JTQRHftrquyyf78MKEOF3TrEpfcc%3D&reserved=0>? No We've got automation plumbing for the rest of PointerEvents I believe. Any reason not to add plumbing through WebDriver for this too and an automated WPT test? I suppose the value is pretty low, but IMHO would be nice if it's not too much more expensive than the alternative chromium-only tests. Flag name PointerEventDeviceId Requires code in //chrome? False Estimated milestones No milestones specified Link to entry on the Chrome Platform Status https://chromestatus.com/feature/5114132234240000<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromestatus.com%2Ffeature%2F5114132234240000&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=LPPFhNDrpyutVflW4%2FZ6SAYCTi4pBbaCSpJY4RzaoCQ%3D&reserved=0> This intent message was generated by Chrome Platform Status<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchromestatus.com%2F&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=SGZ6z4qV1VTSTgPJrwJf86sEkxaJe329cJgqVwSNJWA%3D&reserved=0>. -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/SA0PR00MB1033E5DE0BDE42239E647E9AFB189%40SA0PR00MB1033.namprd00.prod.outlook.com<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fa%2Fchromium.org%2Fd%2Fmsgid%2Fblink-dev%2FSA0PR00MB1033E5DE0BDE42239E647E9AFB189%2540SA0PR00MB1033.namprd00.prod.outlook.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=y4lyVXVYRJyoigfHIJXAjWYcXPEk1IT50O3inXUyBTw%3D&reserved=0>. -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org<mailto:blink-dev+unsubscr...@chromium.org>. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/870380fe-ab9a-4925-8db1-261efa233295n%40chromium.org<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fa%2Fchromium.org%2Fd%2Fmsgid%2Fblink-dev%2F870380fe-ab9a-4925-8db1-261efa233295n%2540chromium.org%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Csahir.vellani%40microsoft.com%7Cc1faa947d4fa434dd68708dade16fbba%7C72f988bf86f141af91ab2d7cd011db47%7C0%7C0%7C638066487579630345%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=QmNuOrk%2BuTR5eryN3Wfpb6zkLQD4f2iTXsW%2FEIrzxJ8%3D&reserved=0>. -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/PH0PR00MB1031EE3832A90B169D50FCC1FBE09%40PH0PR00MB1031.namprd00.prod.outlook.com.