<!DOCTYPE html>
<html>
  <head>
    <meta charset='utf-8'>
    <title>HTML Media Capture Test: capture_fallback_file_upload</title>
    <link rel='author' title='Intel' href='http://www.intel.com'>
    <link rel='help' href='http://www.w3.org/TR/html-media-capture/#the-capture-attribute'>
    <link rel='help' href='http://www.w3.org/TR/html5/forms.html#file-upload-state-(type=file)'>
    <meta name='flags' content='interact'>
    <script src='/resources/testharness.js'></script>
    <script src='/resources/testharnessreport.js'></script>
  </head>
  <body>
    <p>This test validates that the user agent must act as if there was no capture attribute, when the accept attribute value is set to a MIME type that has no associated capture control type.</p>

    <p>Test steps:</p>
    <ol>
      <li>Download <a href='support/upload.txt'>upload.txt</a> to local.</li>
      <li>Select the local upload.txt file to run the test.</li>
    </ol>

    <form>
      <input id='fileChooser' type='file' accept='text/plain' capture>
    </form>

    <div id='log'></div>

    <script>
      setup({explicit_done: true, explicit_timeout: true});

      var fileInput = document.querySelector('#fileChooser');

      on_event(fileInput, 'change', function(evt) {
        test(function() {
          var fileList = document.querySelector('#fileChooser').files;
          assert_equals(fileList.length, 1, 'fileList length is 1');
          assert_equals(fileList.item(0).name, 'upload.txt', 'file name string is "upload.txt"');
        }, 'Check if input.capture fallback to file upload when the accept attribute value is set to a MIME type that has no associated capture control type');

        done();
      });
    </script>
  </body>
</html>
