| Index: third_party/WebKit/LayoutTests/external/wpt/html/editing/dnd/datastore/datatransfer-types.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/editing/dnd/datastore/datatransfer-types.html b/third_party/WebKit/LayoutTests/external/wpt/html/editing/dnd/datastore/datatransfer-types.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d0842ae75c4f2c608b0cc25c06484027c801b75e
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/dnd/datastore/datatransfer-types.html
|
| @@ -0,0 +1,115 @@
|
| +<!DOCTYPE html>
|
| +<meta charset="utf-8">
|
| +<title>DataTransfer types attribute test</title>
|
| +<link rel="help" href="https://html.spec.whatwg.org/multipage/interaction.html#the-datatransfer-interface">
|
| +<script src="/resources/testharness.js"></script>
|
| +<script src="/resources/testharnessreport.js"></script>
|
| +<script>
|
| +test(() => {
|
| + const dt = new DataTransfer();
|
| + assert_true(Object.isFrozen(dt.types), "types must be a FrozenArray<>");
|
| + assert_true(Array.isArray(dt.types), "A FrozenArray<> must be an Array");
|
| + assert_equals(dt.types.length, 0, "types must be originally empty");
|
| + assert_equals(dt.types, dt.types,
|
| + "types must return the same object when the data store item list has not changed");
|
| +
|
| + const dt2 = new DataTransfer();
|
| + assert_not_equals(dt2.types, dt.types,
|
| + "Different DataTransfer objects must return different FrozenArrays");
|
| +}, "type's state on DataTransfer creation");
|
| +
|
| +test(() => {
|
| + const dt = new DataTransfer();
|
| + dt.setData("text/plain", "foo");
|
| +
|
| + let old_types = dt.types;
|
| + assert_equals(old_types, dt.types);
|
| +
|
| + // Clearing the data store via DataTransferItemList changes
|
| + // DataTransfer's data store, so types will return a new FrozenArray.
|
| + dt.items.clear();
|
| + assert_not_equals(old_types, dt.types);
|
| +
|
| + // Clearing an empty list does not change it.
|
| + old_types = dt.types;
|
| + dt.items.clear();
|
| + assert_equals(old_types, dt.types);
|
| +
|
| + // Removing a non-existent item from the data store does not change it.
|
| + dt.setData("text/plain", "foo");
|
| + old_types = dt.types;
|
| + dt.items.remove(42);
|
| + assert_equals(old_types, dt.types);
|
| +
|
| + // Removing a valid item from the data store changes it.
|
| + dt.items.remove(0);
|
| + assert_equals(dt.items.length, 0);
|
| + assert_not_equals(old_types, dt.types);
|
| +
|
| + // Adding a new item to the list changes it, types will return a new
|
| + // FrozenArray.
|
| + old_types = dt.types;
|
| + dt.items.add("foo", "text/plain");
|
| + assert_equals(dt.items.length, 1);
|
| + assert_not_equals(old_types, dt.types);
|
| +
|
| + // Failing to add a new item via DataTransferItemList does not
|
| + // change the underlying data store.
|
| + old_types = dt.types;
|
| + assert_throws("NotSupportedError", () => {
|
| + dt.items.add("bar", "text/plain");
|
| + }, "Adding an item whose type is already present throws an exception");
|
| + assert_equals(dt.items.length, 1);
|
| + assert_equals(old_types, dt.types);
|
| +}, "Relationship between types and items");
|
| +
|
| +test(() => {
|
| + const dt = new DataTransfer();
|
| + dt.setData("text/plain", "foo");
|
| +
|
| + let old_types = dt.types;
|
| + assert_equals(old_types, dt.types);
|
| +
|
| + // Replacing the text/plain item causes the underlying data store item list
|
| + // to change, so types will return a new FrozenArray.
|
| + dt.setData("text/plain", "bar");
|
| + assert_equals(dt.types.length, 1);
|
| + assert_not_equals(old_types, dt.types);
|
| + old_types = dt.types;
|
| +
|
| + // Adding a new item causes the underlying data store item list to change, so
|
| + // types will return a new FrozenArray.
|
| + dt.setData("text/uri-list", "baz quux");
|
| + assert_equals(dt.types.length, 2);
|
| + assert_not_equals(old_types, dt.types);
|
| +
|
| + // Removing the text/uri-list item causes the underlying data store item list
|
| + // to change, so even though the item list only has a text/plain item, types
|
| + // will return a new FrozenArray that does not match |old_types|.
|
| + dt.clearData("text/uri-list");
|
| + assert_equals(dt.types.length, 1);
|
| + assert_not_equals(old_types, dt.types);
|
| + old_types = dt.types;
|
| +
|
| + // This clearData() call did not change the underlying item list, so types is
|
| + // still the same as |old_types|.
|
| + dt.clearData("text/uri-list");
|
| + assert_equals(dt.types.length, 1);
|
| + assert_equals(old_types, dt.types);
|
| +
|
| + dt.clearData();
|
| + old_types = dt.types;
|
| +
|
| + // Clearing an already empty list does not change the underlying item list,
|
| + // so types is stil the same as |old_types|.
|
| + dt.clearData();
|
| + assert_equals(old_types, dt.types);
|
| +}, "type's identity");
|
| +
|
| +test(() => {
|
| + const dt = new DataTransfer();
|
| + const types = dt.types;
|
| + dt.types = 42;
|
| + assert_equals(dt.types, types);
|
| +}, "Verify type is a read-only attribute");
|
| +</script>
|
|
|