<!doctype html>
<html>
<head>
<title>Optional constraint recognized as optional in getUserMedia</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">
</head>
<body>
<p class="instructions">When prompted, accept to share your video stream.</p>
<h1 class="instructions">Description</h1>
<p class="instructions">This test checks that setting an optional constraint in
getUserMedia is handled as optional</p>

<div id='log'></div>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
var t = async_test("Tests that setting an optional constraint in getUserMedia is handled as optional", {timeout:10000});
t.step(function() {
  navigator.mediaDevices.getUserMedia({video: {advanced: [{width: {min:1024, max: 800}}]}})
    .then(t.step_func(function (stream) {
      assert_equals(stream.getVideoTracks().length, 1, "the media stream has exactly one video track");
      t.done();
    }), t.step_func(function(error) {
      assert_unreached("an optional constraint can't stop us from obtaining a video stream");
    }));
});
</script>
</body>
</html>
