Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(854)

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/html/editing/dnd/datastore/datatransfer-types.html

Issue 2875013002: DataTransfer: Make |types| be a FrozenArray<DOMString>. (Closed)
Patch Set: Fix win_chromium_compile_dbg_ng Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698