Proposal for device "enumeration"

As discussed on the call, and as no doubt Travis is already typing up,
here is what I think we need for device enumeration:

VideoStreamSource and AudioStreamSource each have a static method
(invoked on the constructor, not an instance) that produces a sequence
of device identifiers.

  typedef DOMString DeviceId;
  partial interface VideoStreamSource {
    static sequence<DeviceId> getDeviceIds();
  }
  partial interface AudioStreamSource {
    static sequence<DeviceId> getDeviceIds();
  }

MediaTrackConstraints has a new constraint called... "deviceId", which
takes a DeviceId as its value.  This allows an application to select a
specific device.

We should *strongly* recommend that device identifiers are persistent
for a given origin.  However, it MUST NOT be possible to correlate
between different origins otherwise we may as well sign our own death
warrants lest the anti-fingerprinting mafia wring our necks for
wrecking all their efforts.

This last requirement assumes that the identifier has a non-trivial
amount of entropy, such as a GUID, which I believe to be the most
practical method of implementation.  A potential method would be to
take the stable OS-level identifier; a persistent, browser-generated
secret; and the origin.  These would be combined and maybe run through
one of them hashish algorithms [1].

--Martin

[1] I hear that's what the kids are all doing nowadays.  Travis lives
in Washington, so he would have more information on that.

Received on Thursday, 6 December 2012 17:57:34 UTC