gUM should allow un-prompted re-access to same device

by munrochiang

HTML

<button onclick="gum_v()">gum_v</button>
<button onclick="gum_a()">gum_a</button>
<button onclick="gum_av()">gum_av</button>
<button onclick="stop_v()">stop_v</button>
<button onclick="stop_a()">stop_a</button>
<button onclick="stop_av()">stop_av</button>
<div id="div"></div><br>
<video id="video1" height="320" autoplay></video>
<audio id="audio" controls autoplay></audio>
<video id="video2" height="320" autoplay></video>
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>

JavaScript

var gum_v = () => 
  navigator.mediaDevices.getUserMedia({video: true})
  .then(stream => (video1.srcObject = stream))
  .catch(e => log(e));
var gum_a = () => 
  navigator.mediaDevices.getUserMedia({audio: true})
  .then(stream => (audio.srcObject = stream))
  .catch(e => log(e));
var gum_av = () => 
  navigator.mediaDevices.getUserMedia({video: true, audio: true})
  .then(stream => (video2.srcObject = stream))
  .catch(e => log(e));
var stop_v = () => video1.srcObject && video1.srcObject.getTracks().map(t => t.stop());
var stop_a = () => audio.srcObject && audio.srcObject.getTracks().map(t => t.stop());
var stop_av = () => video2.srcObject && video2.srcObject.getTracks().map(t => t.stop());
var log = msg => div.innerHTML += "<p>" + msg + "</p>";