Re: [mediacapture-screen-share] Conditional Focus (When Display-Capture Starts) (#190)

> All promise composition is allowed, including shims, `try`/`catch()`, breaking things into async sub-functions, `Promise.resolve(p)` and `Promise.race(p, timeout)`. This I claim is POLA.

In contrast, here's a list of benign things that'd cause action-at-a-distance focus-failure we go with a microtask cutoff:
1. getDisplayMedia [shimming](https://github.com/w3c/mediacapture-screen-share/issues/190#issuecomment-926852042) with any post-success code at all
2. Promise-branching like @youennf's getDisplayMedia [shimming workaround](https://github.com/w3c/mediacapture-screen-share/issues/190#issuecomment-928099217) won't work either
3. Putting gDM into a [sub function](https://github.com/w3c/mediacapture-screen-share/issues/190#issuecomment-926852042) with any post-success code at all
4. Try-catch in a sub-function or shim
    ```js
   async function getDisplayMedia(c) {
      try {
       await navigator.mediaDevices.getDisplayMedia(c); // microtask checkpoint
     } catch (e) {
       log.addTo(e); // log all gDM errors
       throw e;
     }
   }
   ```
5. Promise.resolve()
   ```js
   function foo(mediaDevices) {
     return Promise.resolve(mediaDevices?.getDisplayMedia(c));  // microtask checkpoint
   }
   ```
6. Application timeout
   ```js
   const wait = ms => new Promise(r => setTimeout(r, ms));

   function timeout(p, ms) {
     return Promise.race([p, wait(ms)]);  // microtask checkpoint
   }
   await timeout(navigator.mediaDevices.getDisplayMedia(c), 10000); // 10s timeout
   ```


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


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

Received on Monday, 27 September 2021 20:23:10 UTC