<!DOCTYPE html>
<html>
  <head>
    <meta charset='utf-8'>
    <title>HTML Test: dropzone_attribute_inputbox_element</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;
      }
      input {
        color: blue;
        margin: 20px auto;
      }
    </style>
  </head>

  <body>
    <div>Select all the inputbox text then drag to rectangular box.</div>
    <input draggable='true' type='text' value='hello world'></input>
    <div id='drop' dropzone='move string:text/plain'></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, 'move',  'dropzone content attribute value is "move"');
        }, 'dropzone content attribute value is "move"');

        test(function() {
          var item = event.dataTransfer.items[0];
          assert_equals(event.dataTransfer.getData(item.type), 'hello world',  'The dropped string value is the inputbox text you selected.');
        }, 'The dropped string value is the inputbox text you selected.');

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