- From: Marcin Simonides <msimonides@opera.com>
- Date: Fri, 11 May 2012 17:38:11 +0200
- To: public-webrtc@w3.org
Hello, I wish to clarify how errors should be reported by getUserMedia in case no devices are available or when a device is disconnected. Let's assume there is a PC with USB camera that may be attached and detached and getUserMedia({ video: true }, success_callback, error_callback) is called. (an analogous situation could arise with the use of other devices like a Bluetooth headphone) Case 1: no camera attached. When there's no camera at all there are two possibilities: throw a NOT_SUPPORTED_ERR exception or call error_callback with the only available error code: PERMISSION_DENIED. NOT_SUPPORTED_ERR sounds like a more appropriate error than PERMISSION_DENIED when there is no device but step 9 of the algorithm[1] says "...due to platform limitations, jump to the step labeled failure below." The "failure" step says that the error_callback should be called. Case 2: camera attached when calling getUserMedia but detached before the user has granted permission for its use. In this case a sensible way to handle the error is to abort the UI for asking user consent and call the error_callback. Again, the only possible error code is PERMISSION_DENIED. Case 3: camera is attached and the user grants permission for its use, success_callback is called with a LocalMediaStream object and then the camera is detached. In this case the LocalMediaStream should be stopped when the camera is disconnected and an ended event should be dispatched. In cases 1 and 2 the best approach seems to be calling the error_callback with PERMISSION_DENIED but this code doesn't sound appropriate. Therefore I suggest to introduce a new error code, e.g. DEVICE_NOT_AVAILABLE. Alternatively, since distinguishing between PERMISSION_DENIED and DEVICE_NOT_AVAILABLE is of little value to the web developer (other than maybe displaying an appropriate error message), the PERMISSION_DENIED error code could be renamed DEVICE_NOT_AVAILABLE or something else that is general enough to cover both cases. -- Marcin Simonides [1] http://dev.w3.org/2011/webrtc/editor/getusermedia.html#local-content -- Marcin Simonides
Received on Sunday, 13 May 2012 20:39:47 UTC