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..e235516e13f77926d2ea3383a9c1366cc151c070 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/editing/dnd/datastore/datatransfer-types.html |
@@ -0,0 +1,68 @@ |
+<!DOCTYPE html> |
+<meta charset="utf-8"> |
+<title>DataTransfer types attribute test</title> |
+<script src="/resources/testharness.js"></script> |
+<script src="/resources/testharnessreport.js"></script> |
jsbell
2017/05/12 17:07:35
A spec link is nice to have (but not strictly requ
|
+<script> |
+test(() => { |
+ let dt = new DataTransfer(); |
jsbell
2017/05/12 17:07:35
nit: could be const (here and below)
|
+ assert_true(Object.isFrozen(dt.types), "types must be a FrozenArray<>"); |
jsbell
2017/05/12 17:07:35
Do we want to assert_true(Array.isArray(dt.types))
|
+ 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"); |
+ |
+ let dt2 = new DataTransfer(); |
+ assert_not_equals(dt2.types, dt.types, |
+ "Different DataTransfer objects must return different FrozenArrays"); |
+}, "type's state on DataTransfer creation"); |
+ |
+test(() => { |
+ let 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(() => { |
+ let dt = new DataTransfer(); |
+ let types = dt.types; |
+ dt.types = 42; |
+ assert_equals(dt.types, types); |
+}, "Verify type is a read-only attribute"); |
+</script> |