MediaStreamDispatcherHost, MediaDevicesDispatcherHost and AudioOutputAuthorizationHandler use a salt from the browser context to hash device IDs.
However, this salt can be reset by users while clearing cookies, so new device IDs must be hashed with the new salt.
Caching them allows returning old device IDs, which is a spec violation.
Even worse, since MSDH is per process and MDDH is per frame, their caches have different lifetimes and return different device IDs, which leads to getUserMedia failures when cookies are cleared.
MediaStreamDispatcherHost, MediaDevicesDispatcherHost and AudioOutputAuthorizationHandler use a salt from the browser context to hash device IDs.
However, this salt can be reset by users by clearing cookies, so new device IDs must be hashed with the new salt.
Caching them results in the reuse of old device IDs, which is a spec violation.
Even worse, since MSDH is per process and MDDH is per frame, their caches have different lifetimes and may return different device IDs when cookies are cleared, which leads to getUserMedia failures.
Comment 1 by guidou@chromium.org
, Sep 15 2017