- From: Sichao Xue (sichax) via GitHub <sysbot+gh@w3.org>
- Date: Mon, 10 Jun 2024 17:56:34 +0000
- To: public-webrtc-logs@w3.org
@eladalon1983 I checked the spec, it is helpful but not fully answer my question. Our use case is that we want to send the URL of the captured website via `handle` so we can do some URL restriction, if URL is not allowed we want to stop the content share. We also check the existence of the signed `captureHandle` to tell if it's an allowed origin or an external origin. My problem is that when refreshing the same page, it's a cross-document navigation and the captureHandle is set to `null` by browser (my guess) ,even if I manually `setCaptureHandleConfig` in the <head> of the .html file. Could you help if you know any way to avoid this `null` value on page refresh? Implementation: ```js // Captured side, this is in a .js file that is imported via <script> in <header> of the .html file (function () { if (!('setCaptureHandleConfig' in navigator.mediaDevices)) { console.log('setCaptureHandleConfig not supported'); return; } if (!('navigation' in window)) { console.log('navigation not supported'); return; } const setCaptureHandleConfig = (url: URL) => { const { origin, pathname } = url; // @ts-ignore navigator.mediaDevices.setCaptureHandleConfig({ handle: JSON.stringify({ identifier: 'signature-xxxx', url: origin + pathname }), exposeOrigin: true, permittedOrigins: [origin], }); }; const url = new URL(window.location.href); setCaptureHandleConfig(url); const handleNavigate = (event: { destination: { url: string } }) => { const url = new URL(event.destination.url); setCaptureHandleConfig(url); }; // @ts-ignore window.navigation.addEventListener('navigate', handleNavigate); window.addEventListener('unload', () => { // @ts-ignore window.navigation.removeEventListener('navigate', handleNavigate); }); })(); ``` ```js // Capturing side stream = await navigator.mediaDevices.getDisplayMedia(constraints); const [videoTrack] = stream.getVideoTracks(); const captureHandle = videoTrack.getCaptureHandle(); // Initial URL upon start screen capture const { url } = JSON.parse(captureHandle.handle); if (isUrlAllowed(url)) { videoTrack.addEventListener('capturehandlechange', (event) => { const captureHandle = event.target.getCaptureHandle(); // Latest URL on navigation change const { url } = JSON.parse(captureHandle.handle); if (!isUrlAllowed(url)) { // Stop the screen capture // My problem is that when refreshing a allowed URL/origin, the captureHandle will first be `null` } }); // Start the screen capture } else { // Do not start the screen capture } ``` -- GitHub Notification of comment by xuesichao Please view or discuss this issue at https://github.com/w3c/mediacapture-handle/issues/74#issuecomment-2158969431 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 10 June 2024 17:56:35 UTC