| Copy this text! |
| To manually test, copy the above text. The output below dumps DataTransfer state following each operation, |
| |
| described directly above the output text for each step. The DataTransfer state should be consistent with the |
| |
| operation performed at each step. |
| |
| |
| 1. After adding a string |
| { |
| "data": { |
| "text/plain": "hello world" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| } |
| ], |
| "files": [] |
| } |
| |
| 2. After adding a file of custom type |
| { |
| "data": { |
| "Files": "", |
| "text/plain": "hello world" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "custom", |
| "kind": "file", |
| "file": { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| } |
| } |
| ], |
| "files": [ |
| { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| } |
| ] |
| } |
| |
| 3. After adding the first plain text file |
| { |
| "data": { |
| "Files": "", |
| "text/plain": "hello world" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "custom", |
| "kind": "file", |
| "file": { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| } |
| }, |
| { |
| "type": "text/plain", |
| "kind": "file", |
| "file": { |
| "name": "first.txt", |
| "bytes": 72, |
| "type": "text/plain" |
| } |
| } |
| ], |
| "files": [ |
| { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| }, |
| { |
| "name": "first.txt", |
| "bytes": 72, |
| "type": "text/plain" |
| } |
| ] |
| } |
| |
| 4. After removing the last file |
| { |
| "data": { |
| "Files": "", |
| "text/plain": "hello world" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "custom", |
| "kind": "file", |
| "file": { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| } |
| } |
| ], |
| "files": [ |
| { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| } |
| ] |
| } |
| removedItem.getAsFile() should be null: null |
| |
| 5. After adding an HTML string |
| { |
| "data": { |
| "Files": "", |
| "text/plain": "hello world", |
| "text/html": "<a>goodbye world</a>" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "custom", |
| "kind": "file", |
| "file": { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| } |
| }, |
| { |
| "type": "text/html", |
| "kind": "string", |
| "file": null |
| } |
| ], |
| "files": [ |
| { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| } |
| ] |
| } |
| |
| 6. After adding another plain text file |
| { |
| "data": { |
| "Files": "", |
| "text/plain": "hello world", |
| "text/html": "<a>goodbye world</a>" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "custom", |
| "kind": "file", |
| "file": { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| } |
| }, |
| { |
| "type": "text/html", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "text/plain", |
| "kind": "file", |
| "file": { |
| "name": "second.txt", |
| "bytes": 27, |
| "type": "text/plain" |
| } |
| } |
| ], |
| "files": [ |
| { |
| "name": "foo", |
| "bytes": 64, |
| "type": "custom" |
| }, |
| { |
| "name": "second.txt", |
| "bytes": 27, |
| "type": "text/plain" |
| } |
| ] |
| } |
| |
| 7. After removing the custom file |
| { |
| "data": { |
| "Files": "", |
| "text/plain": "hello world", |
| "text/html": "<a>goodbye world</a>" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "text/html", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "text/plain", |
| "kind": "file", |
| "file": { |
| "name": "second.txt", |
| "bytes": 27, |
| "type": "text/plain" |
| } |
| } |
| ], |
| "files": [ |
| { |
| "name": "second.txt", |
| "bytes": 27, |
| "type": "text/plain" |
| } |
| ] |
| } |
| removedItem.getAsFile() should be null: null |
| |
| 8. After removing the HTML string |
| { |
| "data": { |
| "Files": "", |
| "text/plain": "hello world" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| }, |
| { |
| "type": "text/plain", |
| "kind": "file", |
| "file": { |
| "name": "second.txt", |
| "bytes": 27, |
| "type": "text/plain" |
| } |
| } |
| ], |
| "files": [ |
| { |
| "name": "second.txt", |
| "bytes": 27, |
| "type": "text/plain" |
| } |
| ] |
| } |
| removedItem.getAsFile() should be null: null |
| |
| 9. After removing the second text file |
| { |
| "data": { |
| "text/plain": "hello world" |
| }, |
| "items": [ |
| { |
| "type": "text/plain", |
| "kind": "string", |
| "file": null |
| } |
| ], |
| "files": [] |
| } |
| removedItem.getAsFile() should be null: null |
| |
| 10. After removing the plain text string |
| { |
| "data": {}, |
| "items": [], |
| "files": [] |
| } |
| removedItem.getAsFile() should be null: null |
| The DataTransfer's FileList should be the same object: true |
| |