<!DOCTYPE html>
<html>
  <head>
    <meta charset='utf-8'>
    <title>HTML Test: dropzone_attribute_value_unordered_unique_space_separated</title>
    <link rel='author' title='Intel' href='http://www.intel.com'>
    <link rel='help' href='https://html.spec.whatwg.org/multipage/#the-dropzone-attribute'>
    <script src='/resources/testharness.js'></script>
    <script src='/resources/testharnessreport.js'></script>
    <style>
      #drop {
        border: 2px solid black;
        width: 100px;
        height: 100px;
        padding: 20px;
      }
      #select {
        color: blue;
        margin: 20px auto;
      }
    </style>
  </head>

  <body>
    <div>Select and drag the blue text to rectangular box.</div>
    <div id='select' draggable>blue text</div>
    <div id='drop' dropzone='string:text/plain copy'></div>
    <div id='log'> </div>

    <script>
      var drop;
      setup(function() {
          drop = document.querySelector('#drop');
      }, {explicit_done: true, explicit_timeout: true});

      on_event(drop, 'drop', function(event) {

        test(function() {
          assert_equals(event.dataTransfer.dropEffect, 'copy', 'unordered_unique_space_separated "string:text/plain copy", drop effect is copy');
        }, 'dropzone content attribute value is unordered_unique_space_separated "string:text/plain copy", drop effect is copy');
        test(function() {
          item = event.dataTransfer.items[0];
          assert_equals(item.kind, 'string',  'unordered_unique_space_separated "string:text/plain copy", data item kind is string');
        }, 'dropzone content attribute value is unordered_unique_space_separated "string:text/plain copy", data item kind is string');
        test(function() {
          item = event.dataTransfer.items[0];
          assert_equals(item.type, 'text/plain',  'dropzone content attribute value is unordered_unique_space_separated "string:text/plain copy", data item type is "text/plain"');
        }, 'dropzone content attribute value is unordered_unique_space_separated "string:text/plain copy", data item type is "text/plain"');
        done();
      });
    </script>
  </body>
</html>
