LGTM2 % fixing the spec issue. On Thu, Jan 27, 2022 at 9:53 PM Mike Taylor <miketa...@chromium.org> wrote:
> Appreciate the replies, Mustaq. > > This seems like a useful addition to the platform, thanks for working on > it. LGTM1. > > On 1/27/22 12:35 PM, Mustaq Ahmed wrote: > > Hi Mike: > > Appreciate your feedback. My answers are inline. > > Mustaq > > > On Wed, Jan 26, 2022 at 6:03 PM Mike Taylor <miketa...@chromium.org> > wrote: > >> Hi Mustaq, >> >> On 1/25/22 4:45 PM, Mustaq Ahmed wrote: >> >> Contact emails >> >> mus...@chromium.org, smcgr...@chromium.org >> Explainer >> >> https://github.com/WICG/capability-delegation >> Specification >> >> https://wicg.github.io/capability-delegation/spec.html >> Design doc >> >> >> https://docs.google.com/document/d/1IYN0mVy7yi4Afnm2Y0uda0JH8L2KwLgaBqsMVLMYXtk/edit?usp=sharing >> Summary >> >> Capability delegation means allowing a frame to relinquish its ability to >> call a restricted API and transfer the ability to another (sub)frame it >> trusts. >> >> Can you expand more on the relinquishing aspect and how regaining the >> capability happens? I can't find any normative text in >> https://wicg.github.io/capability-delegation/spec.html that explains how >> it happens. Do we look for expired timestamps in >> DELEGATED_CAPABILITY_TIMESTAMPS["feature"] of all frames? Something else? >> >> (maybe I'm looking in the wrong place!) >> > You got it right: our proposal missed the normative text around the > relinquishing, yikes! I opened this spec issue > <https://github.com/WICG/capability-delegation/issues/24>, we will send > out a PR to fix this when we get a chance. In the meantime here is what we > wanted to mean: access to activation-gated APIs > <https://html.spec.whatwg.org/multipage/interaction.html#user-activation-gated-apis> > is > lost from the sender frame through consumption, and the receiver frame > checks its own DELEGATED_CAPABILITY_TIMESTAMPS["feature"] only. > > If an app wants to delegate its ability to call a restricted JS capability >> (e.g. popups, fullscreen, etc) to a known+trusted third-party frame, the >> app would utilize a Capability Delegation API to "transfer" the ability to >> the target frame in a time-constrained manner (unlike static mechanisms >> like <iframe allow> attributes). >> >> What happens if the delegation is refused (or fails) by the browser for >> some reason? As a developer, how do I know that I shouldn't fire off a >> PaymentRequest that's going to fail? Do we signal anything in the message >> event, if not, should we? >> >> (From the PaymentRequest side, I guess I can handle the failure if >> PaymentRequest.show() is rejected.) >> > Yes, just trying PaymentRequest.show() works on the receiver side today. > As we get more use-cases around delegation, we can explore signaling on the > received message event. I would suggest starting a new issue to discuss > this. > > That's fair - I'll file an issue, but I don't consider this to be a > blocking concern. > > > As for error handling on the sender side, we have a few synchronous > failure conditions in our postMessage > <https://wicg.github.io/capability-delegation/spec.html#monkey-patch-to-html-tracking-delegation> > algorithm > <https://wicg.github.io/capability-delegation/spec.html#monkey-patch-to-html-tracking-delegation> > already, > can easily new ones as needed. However, if you are thinking about an > asynchronous failure (e.g. detected later when the browser decided to run > the posted task), it seems like an existing problem with postMessage unless > we change it to return a Promise > <https://github.com/whatwg/html/issues/3458> (a separate problem). > >> Blink component >> >> Blink>Input >> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EInput> >> TAG review >> >> https://github.com/w3ctag/design-reviews/issues/655 >> TAG review status >> >> Approved subject to minor changes. >> >> (Work in progress, see >> https://github.com/WICG/capability-delegation/pull/23). >> Risks Interoperability >> >> Interop risk here like any new API: new use-cases relying on delegation >> will fail in a browser that hasn't implemented this feature. In such a >> browser, the new API (postMessage() call with an additional option) will >> silently get ignored while preserving the legacy behavior. More precisely, >> the postMessage() call will be treated as if it was meant to send the >> message object only, and the delegated capability will behave in the target >> Window as if no delegation has taken place. >> >> >> Compatibility >> >> There is no compat risk because this is a new feature. >> External signals Gecko: Positive ( >> https://github.com/mozilla/standards-positions/issues/565) WebKit: No >> signal Web developers: Positive ( >> https://discourse.wicg.io/t/capability-delegation/4821/3) Debuggability >> >> Developers can test the delegated API by calling it from the console of >> postMessage-target Window. Additionally, on the console of the sender >> Window, navigator.userActivation.isActive API can be utilized to check >> the consumption of user activation as a side-effect of delegation. >> Ongoing technical constraints >> >> None. >> Will this feature be supported on all six Blink platforms (Windows, Mac, >> Linux, Chrome OS, Android, and Android WebView)? >> >> Yes >> Is this feature fully tested by web-platform-tests >> <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md> >> ? >> >> Work in progress: >> https://chromium-review.googlesource.com/c/chromium/src/+/3413851 >> Flag name >> >> --enable-blink-features=CapabilityDelegationPaymentRequest >> Requires code in //chrome? >> >> False >> Tracking bug >> >> https://crbug.com/1130558 >> Estimated milestone >> >> M100 >> Link to entry on the Chrome Platform Status >> >> https://www.chromestatus.com/feature/5708770829139968 >> Links to previous Intent discussions >> >> Intent to prototype: >> https://groups.google.com/a/chromium.org/g/blink-dev/c/9CeLYndESPE/m/AhEttheMBQAJ >> >> Intent to Experiment: >> https://groups.google.com/a/chromium.org/g/blink-dev/c/i6pAWsjU7zg/m/UK0lGnKuAAAJ >> >> >> >> This intent message was generated by Chrome Platform Status >> <https://www.chromestatus.com/> >> -- >> 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/CAB0cuO7vK4UUEzD%3DwJGnAdyTRxgRrmx7AgfoQjCndi91DF2hGA%40mail.gmail.com >> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAB0cuO7vK4UUEzD%3DwJGnAdyTRxgRrmx7AgfoQjCndi91DF2hGA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> >> >> > -- 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/CAL5BFfV8fECzjRrKi-kUraV80jHokb1FYgjPTmZBxLSfoUxx-w%40mail.gmail.com.