<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>WebShare Test: canShare with files</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
  </head>
  <body>
    <script>
      'use strict';
      const textFile = new File(['hello'], 'hello.txt', {type:'text/plain'});
      const emptyFile = new File([''], 'empty');

      test(() => {
        assert_throws_js(TypeError, () => { navigator.canShare({files: textFile}) });
      }, 'canShare with single file');

      test(() => {
        assert_equals(navigator.canShare({files: []}), false);
      }, 'canShare with empty file list');

      test(() => {
        assert_equals(navigator.canShare({files: [emptyFile]}), true);
      }, 'canShare with single file list');

      test(() => {
        assert_equals(navigator.canShare({files: [textFile, emptyFile]}), true);
      }, 'canShare with file list');

      test(() => {
        assert_equals(navigator.canShare({files: [textFile, emptyFile, textFile]}), true);
      }, 'canShare with repeated file');

      test(() => {
        assert_equals(navigator.canShare({url: 'https://example.com/', files: [textFile, emptyFile]}), true);
      }, 'canShare with file list and url');
    </script>
  </body>
</html>
