- From: Jan-Ivar Bruaroey <jib@mozilla.com>
- Date: Tue, 07 Jul 2015 21:14:32 -0400
- To: Mathieu Hofman <Mathieu.Hofman@citrix.com>, Harald Alvestrand <harald@alvestrand.no>, "public-media-capture@w3.org" <public-media-capture@w3.org>
On 7/7/15 7:12 PM, Mathieu Hofman wrote:
> Just to sum up the logic:
>
> enumerateDevices()
> If deviceId stored (persistent or in-session), reuse
> If deviceId not stored, generate new one.
> If permanent permissions were already granted, store deviceId in a sort of "hidden" persistent cookie.
> If permanent permissions are not granted, store deviceId in "hidden" session cookie
>
> gUM()
> If deviceId stored (persistent or in-session), reuse
> If deviceId not stored, generate new one, store in session cookie
> If user grants permission (temporary or permanent), store deviceId in "hidden" persistent cookie.
>
> Clear cookies: Remove session & persistent deviceId.
That sounds about right. It's perhaps clearer with one cookie with a
persist-flag:
enumerateDevices()
If deviceIds in hidden cookie, reuse
If deviceIds not in hidden cookie, generate new hidden cookie with
fresh deviceIds.
If permanent permissions were already granted, set
cookie.persist=true, else false.
gUM()
call internal version of enumerateDevices() to get deviceIds for this
origin.
If user grants permission (temporary or permanent), and
cookie.persist == false, set to true.
Clear cookies: Remove hidden cookies
> I think we should not remove stored deviceId if user changes persistent permission type, as that introduce a weird dependency.
> It can also create a confusing case for the site:
> enumerateDevices() => { device: id = 12345 type = videoinput }
> getUserMedia({video: { deviceId: { exact: 12345 } }, user allows and persist permission ("always") => success, app stores deviceId to localStorage
> User revokes persistent permissions, which would remove stored deviceId
No, it would persist here, because revoking is different from
permanently denying. In any case...
> User visits site again, which has deviceId still saved in localStorage:
> getUserMedia({video: { deviceId: { exact: 12345 } } => no we have a problem since device 12345 no longer exists.
>
> So to revisit your questions:
>> Q: I change site X's persistent permission from "Always Allow" back to
>> the default ("Always ask").
>> A: deviceId persists.
>>
>> Q: I change site X's persistent permission from "Always Allow" to
>> "Always Deny".
>> A: Should we clear deviceId in this case, or is it unrelated at this point?
> A: It's unrelated. deviceId persists. The site might have stored it (or other "unique" info) in cookie/localStorage.
I think I agree.
> Mathieu
.: Jan-Ivar :.
Received on Wednesday, 8 July 2015 01:15:11 UTC