<!doctype html>
<html>
<head>
<title>getUserMedia({}) aborts with NOT_SUPPORTED_ERR</title>
<link rel="author" title="Dominique Hazael-Massieux" href="mailto:dom@w3.org"/>
<link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-NavigatorUserMedia-getUserMedia-void-MediaStreamConstraints-constraints-NavigatorUserMediaSuccessCallback-successCallback-NavigatorUserMediaErrorCallback-errorCallback">
<link rel='stylesheet' href='/resources/testharness.css' media='all'/>
</head>
<body>
<h1 class="instructions">Description</h1>
<p class="instructions">This test checks that getUserMedia with no value in the
options parameter raises a NOT_SUPPORTED_ERR exception.</p>

<div id='log'></div>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/vendor-prefix.js" data-prefixed-objects='[{"ancestors":["navigator"], "name":"getUserMedia"}]'></script>
<script>
var t = async_test("Tests that getUserMedia raises a NOT_SUPPORTED_ERR exception when used with an empty options parameter");
t.step( function () {
  // TODO This is no longer what's in the spec, see https://www.w3.org/Bugs/Public/show_bug.cgi?id=22211
  assert_throws("NOT_SUPPORTED_ERR",
    function () {
      navigator.getUserMedia({}, t.step_func(function (stream) {
        assert_unreached("This should never be triggered since the constraints parameter is empty");
        t.done();
      }), t.step_func(function (error) {
        assert_unreached("This should never be triggered since the constraints parameter is empty");
      }));
  });
  t.done();
});

</script>
</body>
</html>
