| Index: third_party/WebKit/LayoutTests/imported/web-platform-tests/uievents/constructors/constructors.html
|
| diff --git a/third_party/WebKit/LayoutTests/imported/web-platform-tests/uievents/constructors/constructors.html b/third_party/WebKit/LayoutTests/imported/web-platform-tests/uievents/constructors/constructors.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..07c46ec8e9ff66b6a434386087ed31ac320872b3
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/imported/web-platform-tests/uievents/constructors/constructors.html
|
| @@ -0,0 +1,153 @@
|
| +<!DOCTYPE html>
|
| +<meta charset="utf-8">
|
| +<title>Event constructors</title>
|
| +<script src="../../../../resources/testharness.js"></script>
|
| +<script src="../../../../resources/testharnessreport.js"></script>
|
| +<div id="log"></div>
|
| +<script>
|
| +function assert_props(iface, event, defaults) {
|
| + assert_true(event instanceof self[iface]);
|
| + expected[iface].properties.forEach(function(p) {
|
| + var property = p[0], value = p[defaults ? 1 : 2];
|
| + assert_true(property in event,
|
| + "Event " + format_value(event) + " should have a " +
|
| + property + " property");
|
| + assert_equals(event[property], value,
|
| + "The value of the " + property + " property should be " +
|
| + format_value(value));
|
| + });
|
| + if ("parent" in expected[iface]) {
|
| + assert_props(expected[iface].parent, event, defaults);
|
| + }
|
| +}
|
| +
|
| +var EventModifierInit = [
|
| + ["ctrlKey", false, true],
|
| + ["shiftKey", false, true],
|
| + ["altKey", false, true],
|
| + ["metaKey", false, true],
|
| +];
|
| +var expected = {
|
| + "Event": {
|
| + "properties": [
|
| + ["bubbles", false, true],
|
| + ["cancelable", false, true],
|
| + ],
|
| + },
|
| +
|
| + "UIEvent": {
|
| + "parent": "Event",
|
| + "properties": [
|
| + ["view", null, window],
|
| + ["detail", 0, 7],
|
| + ],
|
| + },
|
| +
|
| + "FocusEvent": {
|
| + "parent": "UIEvent",
|
| + "properties": [
|
| + ["relatedTarget", null, document],
|
| + ],
|
| + },
|
| +
|
| + "MouseEvent": {
|
| + "parent": "UIEvent",
|
| + "properties": EventModifierInit.concat([
|
| + ["screenX", 0, 40],
|
| + ["screenY", 0, 40],
|
| + ["clientX", 0, 40],
|
| + ["clientY", 0, 40],
|
| + ["button", 0, 40],
|
| + ["buttons", 0, 40],
|
| + ["relatedTarget", null, document],
|
| + ]),
|
| + },
|
| +
|
| + "WheelEvent": {
|
| + "parent": "MouseEvent",
|
| + "properties": [
|
| + ["deltaX", 0.0, 3.1],
|
| + ["deltaY", 0.0, 3.1],
|
| + ["deltaZ", 0.0, 3.1],
|
| + ["deltaMode", 0, 40],
|
| + ],
|
| + },
|
| +
|
| + "KeyboardEvent": {
|
| + "parent": "UIEvent",
|
| + "properties": EventModifierInit.concat([
|
| + ["key", "", "string"],
|
| + ["code", "", "string"],
|
| + ["location", 0, 7],
|
| + ["repeat", false, true],
|
| + ["isComposing", false, true],
|
| + ["charCode", 0, 7],
|
| + ["keyCode", 0, 7],
|
| + ["which", 0, 7],
|
| + ]),
|
| + },
|
| +
|
| + "CompositionEvent": {
|
| + "parent": "UIEvent",
|
| + "properties": [
|
| + ["data", "", "string"],
|
| + ],
|
| + },
|
| +};
|
| +
|
| +Object.keys(expected).forEach(function(iface) {
|
| + test(function() {
|
| + var event = new self[iface]("type");
|
| + assert_props(iface, event, true);
|
| + }, iface + " constructor (no argument)");
|
| +
|
| + test(function() {
|
| + var event = new self[iface]("type", undefined);
|
| + assert_props(iface, event, true);
|
| + }, iface + " constructor (undefined argument)");
|
| +
|
| + test(function() {
|
| + var event = new self[iface]("type", null);
|
| + assert_props(iface, event, true);
|
| + }, iface + " constructor (null argument)");
|
| +
|
| + test(function() {
|
| + var event = new self[iface]("type", {});
|
| + assert_props(iface, event, true);
|
| + }, iface + " constructor (empty argument)");
|
| +
|
| + test(function() {
|
| + var dictionary = {};
|
| + expected[iface].properties.forEach(function(p) {
|
| + var property = p[0], value = p[1];
|
| + dictionary[property] = value;
|
| + });
|
| + var event = new self[iface]("type", dictionary);
|
| + assert_props(iface, event, true);
|
| + }, iface + " constructor (argument with default values)");
|
| +
|
| + test(function() {
|
| + function fill_in(iface, dictionary) {
|
| + if ("parent" in expected[iface]) {
|
| + fill_in(expected[iface].parent, dictionary)
|
| + }
|
| + expected[iface].properties.forEach(function(p) {
|
| + var property = p[0], value = p[2];
|
| + dictionary[property] = value;
|
| + });
|
| + }
|
| +
|
| + var dictionary = {};
|
| + fill_in(iface, dictionary);
|
| +
|
| + var event = new self[iface]("type", dictionary);
|
| + assert_props(iface, event, false);
|
| + }, iface + " constructor (argument with non-default values)");
|
| +});
|
| +
|
| +test(function () {
|
| + assert_throws(new TypeError(), function() {
|
| + new UIEvent("x", { view: 7 })
|
| + });
|
| +}, "UIEvent constructor (view argument with wrong type)")
|
| +</script>
|
|
|