Re: [mediacapture-screen-share] CaptureController.setFocusBehavior() while promise pending or after it is rejected (#252)

Thanks, Youenn. I think we're aligned on what the spec should say, then, and are working out how to say it. I like all options presented, but let's devil's advocate away. <Rolls up sleeves.>

> One possibility is to replace the [IsBound] by [GetDisplayPromise]. Then in setFocusBehavior, check whether [GetDisplayPromise] is a rejected promise. If so, throw.

To do this, the getDisplayMedia algorithm should be modified to say "let p be a new promise" earlier, set it in the internal slot, then whenever it currently throws, it'd need to modify the local variable p before returning it. It's similar to the approach in my original post, where we'd have to modify every "reject" line. I am OK with this option, but I prefer the next one.

> An alternative is to add a line like:
> 
> * Upon rejection of p, set controller [FocusDecisionFinalized] (or another dedicated slot) to true.

I think this would be much preferable. But I don't think it can refer to p, which is only defined at step 10 (as of the time of writing). It'd be more along the lines of "if the algorithm returns a rejected promise, and if controller is not null, then set controller.[FocusDecisionFinalized] to true."

---

Another option occurs to me - adding an exit-step at the end of the algorithm, and all steps that read "return x" will read "go to exit step with x as retval." Wdyt?

-- 
GitHub Notification of comment by eladalon1983
Please view or discuss this issue at https://github.com/w3c/mediacapture-screen-share/issues/252#issuecomment-1306875770 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Tuesday, 8 November 2022 09:12:57 UTC