Commit bce553b6 authored by Amos Lim's avatar Amos Lim Committed by Commit Bot

Implement DocumentAndElementEventHandlers

Add DocumentAndElementEventHandlers as per the spec[1] and remove
oncopy, oncut, and onpaste from Document and Element.

[1]: https://w3c.github.io/html/single-page.html#documentandelementeventhandlers

Make Document, HTMLElement, and SVGElement include DocumentAndElementEventHandlers.

Bug: 835570
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ie81d7995dbe0824ad3a66ccbfabcdbe5e3864fa4
Reviewed-on: https://chromium-review.googlesource.com/1253169Reviewed-by: default avatarFredrik Söderquist <fs@opera.com>
Reviewed-by: default avatarPhilip Jägenstedt <foolip@chromium.org>
Commit-Queue: Amos Lim <eui-sang.lim@samsung.com>
Cr-Commit-Position: refs/heads/master@{#595652}
parent 9ee32f1e
...@@ -1176,9 +1176,9 @@ PASS SVGElement interface: attribute ontimeupdate ...@@ -1176,9 +1176,9 @@ PASS SVGElement interface: attribute ontimeupdate
PASS SVGElement interface: attribute ontoggle PASS SVGElement interface: attribute ontoggle
PASS SVGElement interface: attribute onvolumechange PASS SVGElement interface: attribute onvolumechange
PASS SVGElement interface: attribute onwaiting PASS SVGElement interface: attribute onwaiting
FAIL SVGElement interface: attribute oncopy assert_own_property: expected property "oncopy" missing PASS SVGElement interface: attribute oncopy
FAIL SVGElement interface: attribute oncut assert_own_property: expected property "oncut" missing PASS SVGElement interface: attribute oncut
FAIL SVGElement interface: attribute onpaste assert_own_property: expected property "onpaste" missing PASS SVGElement interface: attribute onpaste
PASS SVGElement interface: attribute dataset PASS SVGElement interface: attribute dataset
PASS SVGElement interface: attribute nonce PASS SVGElement interface: attribute nonce
PASS SVGElement interface: attribute tabIndex PASS SVGElement interface: attribute tabIndex
......
...@@ -160,9 +160,9 @@ PASS HTMLElement interface: attribute ontimeupdate ...@@ -160,9 +160,9 @@ PASS HTMLElement interface: attribute ontimeupdate
PASS HTMLElement interface: attribute ontoggle PASS HTMLElement interface: attribute ontoggle
PASS HTMLElement interface: attribute onvolumechange PASS HTMLElement interface: attribute onvolumechange
PASS HTMLElement interface: attribute onwaiting PASS HTMLElement interface: attribute onwaiting
FAIL HTMLElement interface: attribute oncopy assert_own_property: expected property "oncopy" missing PASS HTMLElement interface: attribute oncopy
FAIL HTMLElement interface: attribute oncut assert_own_property: expected property "oncut" missing PASS HTMLElement interface: attribute oncut
FAIL HTMLElement interface: attribute onpaste assert_own_property: expected property "onpaste" missing PASS HTMLElement interface: attribute onpaste
PASS HTMLElement interface: attribute contentEditable PASS HTMLElement interface: attribute contentEditable
PASS HTMLElement interface: attribute isContentEditable PASS HTMLElement interface: attribute isContentEditable
PASS HTMLElement interface: attribute inputMode PASS HTMLElement interface: attribute inputMode
......
This is a testharness.js-based test.
FAIL oncut: DocumentAndElementEventHandlers must be on SVGElement not Element assert_true: SVGElement has an own property named "oncut" expected true got false
PASS oncut: the default value must be null
PASS oncut: the content attribute must be compiled into a function as the corresponding property
PASS oncut: the content attribute must execute when an event is dispatched
FAIL oncopy: DocumentAndElementEventHandlers must be on SVGElement not Element assert_true: SVGElement has an own property named "oncopy" expected true got false
PASS oncopy: the default value must be null
PASS oncopy: the content attribute must be compiled into a function as the corresponding property
PASS oncopy: the content attribute must execute when an event is dispatched
FAIL onpaste: DocumentAndElementEventHandlers must be on SVGElement not Element assert_true: SVGElement has an own property named "onpaste" expected true got false
PASS onpaste: the default value must be null
PASS onpaste: the content attribute must be compiled into a function as the corresponding property
PASS onpaste: the content attribute must execute when an event is dispatched
Harness: the test ran to completion.
...@@ -1524,11 +1524,8 @@ interface Element : Node ...@@ -1524,11 +1524,8 @@ interface Element : Node
getter onbeforecopy getter onbeforecopy
getter onbeforecut getter onbeforecut
getter onbeforepaste getter onbeforepaste
getter oncopy
getter oncut
getter onfullscreenchange getter onfullscreenchange
getter onfullscreenerror getter onfullscreenerror
getter onpaste
getter onsearch getter onsearch
getter onwebkitfullscreenchange getter onwebkitfullscreenchange
getter onwebkitfullscreenerror getter onwebkitfullscreenerror
...@@ -1602,11 +1599,8 @@ interface Element : Node ...@@ -1602,11 +1599,8 @@ interface Element : Node
setter onbeforecopy setter onbeforecopy
setter onbeforecut setter onbeforecut
setter onbeforepaste setter onbeforepaste
setter oncopy
setter oncut
setter onfullscreenchange setter onfullscreenchange
setter onfullscreenerror setter onfullscreenerror
setter onpaste
setter onsearch setter onsearch
setter onwebkitfullscreenchange setter onwebkitfullscreenchange
setter onwebkitfullscreenerror setter onwebkitfullscreenerror
...@@ -2107,7 +2101,9 @@ interface HTMLElement : Element ...@@ -2107,7 +2101,9 @@ interface HTMLElement : Element
getter onclick getter onclick
getter onclose getter onclose
getter oncontextmenu getter oncontextmenu
getter oncopy
getter oncuechange getter oncuechange
getter oncut
getter ondblclick getter ondblclick
getter ondrag getter ondrag
getter ondragend getter ondragend
...@@ -2140,6 +2136,7 @@ interface HTMLElement : Element ...@@ -2140,6 +2136,7 @@ interface HTMLElement : Element
getter onmouseover getter onmouseover
getter onmouseup getter onmouseup
getter onmousewheel getter onmousewheel
getter onpaste
getter onpause getter onpause
getter onplay getter onplay
getter onplaying getter onplaying
...@@ -2203,7 +2200,9 @@ interface HTMLElement : Element ...@@ -2203,7 +2200,9 @@ interface HTMLElement : Element
setter onclick setter onclick
setter onclose setter onclose
setter oncontextmenu setter oncontextmenu
setter oncopy
setter oncuechange setter oncuechange
setter oncut
setter ondblclick setter ondblclick
setter ondrag setter ondrag
setter ondragend setter ondragend
...@@ -2236,6 +2235,7 @@ interface HTMLElement : Element ...@@ -2236,6 +2235,7 @@ interface HTMLElement : Element
setter onmouseover setter onmouseover
setter onmouseup setter onmouseup
setter onmousewheel setter onmousewheel
setter onpaste
setter onpause setter onpause
setter onplay setter onplay
setter onplaying setter onplaying
...@@ -5232,7 +5232,9 @@ interface SVGElement : Element ...@@ -5232,7 +5232,9 @@ interface SVGElement : Element
getter onclick getter onclick
getter onclose getter onclose
getter oncontextmenu getter oncontextmenu
getter oncopy
getter oncuechange getter oncuechange
getter oncut
getter ondblclick getter ondblclick
getter ondrag getter ondrag
getter ondragend getter ondragend
...@@ -5265,6 +5267,7 @@ interface SVGElement : Element ...@@ -5265,6 +5267,7 @@ interface SVGElement : Element
getter onmouseover getter onmouseover
getter onmouseup getter onmouseup
getter onmousewheel getter onmousewheel
getter onpaste
getter onpause getter onpause
getter onplay getter onplay
getter onplaying getter onplaying
...@@ -5316,7 +5319,9 @@ interface SVGElement : Element ...@@ -5316,7 +5319,9 @@ interface SVGElement : Element
setter onclick setter onclick
setter onclose setter onclose
setter oncontextmenu setter oncontextmenu
setter oncopy
setter oncuechange setter oncuechange
setter oncut
setter ondblclick setter ondblclick
setter ondrag setter ondrag
setter ondragend setter ondragend
...@@ -5349,6 +5354,7 @@ interface SVGElement : Element ...@@ -5349,6 +5354,7 @@ interface SVGElement : Element
setter onmouseover setter onmouseover
setter onmouseup setter onmouseup
setter onmousewheel setter onmousewheel
setter onpaste
setter onpause setter onpause
setter onplay setter onplay
setter onplaying setter onplaying
......
...@@ -1906,11 +1906,8 @@ interface Element : Node ...@@ -1906,11 +1906,8 @@ interface Element : Node
getter onbeforecopy getter onbeforecopy
getter onbeforecut getter onbeforecut
getter onbeforepaste getter onbeforepaste
getter oncopy
getter oncut
getter onfullscreenchange getter onfullscreenchange
getter onfullscreenerror getter onfullscreenerror
getter onpaste
getter onsearch getter onsearch
getter onwebkitfullscreenchange getter onwebkitfullscreenchange
getter onwebkitfullscreenerror getter onwebkitfullscreenerror
...@@ -2028,11 +2025,8 @@ interface Element : Node ...@@ -2028,11 +2025,8 @@ interface Element : Node
setter onbeforecopy setter onbeforecopy
setter onbeforecut setter onbeforecut
setter onbeforepaste setter onbeforepaste
setter oncopy
setter oncut
setter onfullscreenchange setter onfullscreenchange
setter onfullscreenerror setter onfullscreenerror
setter onpaste
setter onsearch setter onsearch
setter onwebkitfullscreenchange setter onwebkitfullscreenchange
setter onwebkitfullscreenerror setter onwebkitfullscreenerror
...@@ -2575,7 +2569,9 @@ interface HTMLElement : Element ...@@ -2575,7 +2569,9 @@ interface HTMLElement : Element
getter onclick getter onclick
getter onclose getter onclose
getter oncontextmenu getter oncontextmenu
getter oncopy
getter oncuechange getter oncuechange
getter oncut
getter ondblclick getter ondblclick
getter ondrag getter ondrag
getter ondragend getter ondragend
...@@ -2609,6 +2605,7 @@ interface HTMLElement : Element ...@@ -2609,6 +2605,7 @@ interface HTMLElement : Element
getter onmouseover getter onmouseover
getter onmouseup getter onmouseup
getter onmousewheel getter onmousewheel
getter onpaste
getter onpause getter onpause
getter onplay getter onplay
getter onplaying getter onplaying
...@@ -2675,7 +2672,9 @@ interface HTMLElement : Element ...@@ -2675,7 +2672,9 @@ interface HTMLElement : Element
setter onclick setter onclick
setter onclose setter onclose
setter oncontextmenu setter oncontextmenu
setter oncopy
setter oncuechange setter oncuechange
setter oncut
setter ondblclick setter ondblclick
setter ondrag setter ondrag
setter ondragend setter ondragend
...@@ -2709,6 +2708,7 @@ interface HTMLElement : Element ...@@ -2709,6 +2708,7 @@ interface HTMLElement : Element
setter onmouseover setter onmouseover
setter onmouseup setter onmouseup
setter onmousewheel setter onmousewheel
setter onpaste
setter onpause setter onpause
setter onplay setter onplay
setter onplaying setter onplaying
...@@ -5937,7 +5937,9 @@ interface SVGElement : Element ...@@ -5937,7 +5937,9 @@ interface SVGElement : Element
getter onclick getter onclick
getter onclose getter onclose
getter oncontextmenu getter oncontextmenu
getter oncopy
getter oncuechange getter oncuechange
getter oncut
getter ondblclick getter ondblclick
getter ondrag getter ondrag
getter ondragend getter ondragend
...@@ -5971,6 +5973,7 @@ interface SVGElement : Element ...@@ -5971,6 +5973,7 @@ interface SVGElement : Element
getter onmouseover getter onmouseover
getter onmouseup getter onmouseup
getter onmousewheel getter onmousewheel
getter onpaste
getter onpause getter onpause
getter onplay getter onplay
getter onplaying getter onplaying
...@@ -6024,7 +6027,9 @@ interface SVGElement : Element ...@@ -6024,7 +6027,9 @@ interface SVGElement : Element
setter onclick setter onclick
setter onclose setter onclose
setter oncontextmenu setter oncontextmenu
setter oncopy
setter oncuechange setter oncuechange
setter oncut
setter ondblclick setter ondblclick
setter ondrag setter ondrag
setter ondragend setter ondragend
...@@ -6058,6 +6063,7 @@ interface SVGElement : Element ...@@ -6058,6 +6063,7 @@ interface SVGElement : Element
setter onmouseover setter onmouseover
setter onmouseup setter onmouseup
setter onmousewheel setter onmousewheel
setter onpaste
setter onpause setter onpause
setter onplay setter onplay
setter onplaying setter onplaying
......
...@@ -508,6 +508,7 @@ core_dependency_idl_files = ...@@ -508,6 +508,7 @@ core_dependency_idl_files =
"dom/accessibility_role.idl", "dom/accessibility_role.idl",
"dom/aria_attributes.idl", "dom/aria_attributes.idl",
"dom/child_node.idl", "dom/child_node.idl",
"dom/document_and_element_event_handlers.idl",
"dom/document_or_shadow_root.idl", "dom/document_or_shadow_root.idl",
"dom/global_event_handlers.idl", "dom/global_event_handlers.idl",
"dom/nonced_element.idl", "dom/nonced_element.idl",
......
...@@ -51,6 +51,7 @@ blink_core_sources("dom") { ...@@ -51,6 +51,7 @@ blink_core_sources("dom") {
"distributed_nodes.h", "distributed_nodes.h",
"document.cc", "document.cc",
"document.h", "document.h",
"document_and_element_event_handlers.h",
"document_encoding_data.cc", "document_encoding_data.cc",
"document_encoding_data.h", "document_encoding_data.h",
"document_fragment.cc", "document_fragment.cc",
......
...@@ -300,10 +300,7 @@ class CORE_EXPORT Document : public ContainerNode, ...@@ -300,10 +300,7 @@ class CORE_EXPORT Document : public ContainerNode,
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecopy); DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecopy);
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecut); DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecut);
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforepaste); DEFINE_ATTRIBUTE_EVENT_LISTENER(beforepaste);
DEFINE_ATTRIBUTE_EVENT_LISTENER(copy);
DEFINE_ATTRIBUTE_EVENT_LISTENER(cut);
DEFINE_ATTRIBUTE_EVENT_LISTENER(freeze); DEFINE_ATTRIBUTE_EVENT_LISTENER(freeze);
DEFINE_ATTRIBUTE_EVENT_LISTENER(paste);
DEFINE_ATTRIBUTE_EVENT_LISTENER(pointerlockchange); DEFINE_ATTRIBUTE_EVENT_LISTENER(pointerlockchange);
DEFINE_ATTRIBUTE_EVENT_LISTENER(pointerlockerror); DEFINE_ATTRIBUTE_EVENT_LISTENER(pointerlockerror);
DEFINE_ATTRIBUTE_EVENT_LISTENER(readystatechange); DEFINE_ATTRIBUTE_EVENT_LISTENER(readystatechange);
......
...@@ -209,10 +209,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; ...@@ -209,10 +209,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement;
attribute EventHandler onbeforecopy; attribute EventHandler onbeforecopy;
attribute EventHandler onbeforecut; attribute EventHandler onbeforecut;
attribute EventHandler onbeforepaste; attribute EventHandler onbeforepaste;
attribute EventHandler oncopy;
attribute EventHandler oncut;
[RuntimeEnabled=PageLifecycle] attribute EventHandler onfreeze; [RuntimeEnabled=PageLifecycle] attribute EventHandler onfreeze;
attribute EventHandler onpaste;
[RuntimeEnabled=PageLifecycle] attribute EventHandler onresume; [RuntimeEnabled=PageLifecycle] attribute EventHandler onresume;
attribute EventHandler onsearch; attribute EventHandler onsearch;
[RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute EventHandler onsecuritypolicyviolation; [RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute EventHandler onsecuritypolicyviolation;
...@@ -220,6 +217,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement; ...@@ -220,6 +217,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement;
}; };
Document implements GlobalEventHandlers; Document implements GlobalEventHandlers;
Document implements DocumentAndElementEventHandlers;
Document implements ParentNode; Document implements ParentNode;
Document implements NonElementParentNode; Document implements NonElementParentNode;
Document implements DocumentOrShadowRoot; Document implements DocumentOrShadowRoot;
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_DOM_DOCUMENT_AND_ELEMENT_EVENT_HANDLERS_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_DOM_DOCUMENT_AND_ELEMENT_EVENT_HANDLERS_H_
#include "third_party/blink/renderer/core/dom/events/event_target.h"
#include "third_party/blink/renderer/platform/wtf/allocator.h"
namespace blink {
class DocumentAndElementEventHandlers {
STATIC_ONLY(DocumentAndElementEventHandlers);
public:
DEFINE_STATIC_ATTRIBUTE_EVENT_LISTENER(copy);
DEFINE_STATIC_ATTRIBUTE_EVENT_LISTENER(cut);
DEFINE_STATIC_ATTRIBUTE_EVENT_LISTENER(paste);
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_DOM_DOCUMENT_AND_ELEMENT_EVENT_HANDLERS_H_
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://html.spec.whatwg.org/multipage/webappapis.html#documentandelementeventhandlers
[
LegacyTreatAsPartialInterface,
NoInterfaceObject // Always used on target of 'implements'
] interface DocumentAndElementEventHandlers {
attribute EventHandler oncopy;
attribute EventHandler oncut;
attribute EventHandler onpaste;
};
...@@ -161,9 +161,6 @@ class CORE_EXPORT Element : public ContainerNode { ...@@ -161,9 +161,6 @@ class CORE_EXPORT Element : public ContainerNode {
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecopy); DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecopy);
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecut); DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecut);
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforepaste); DEFINE_ATTRIBUTE_EVENT_LISTENER(beforepaste);
DEFINE_ATTRIBUTE_EVENT_LISTENER(copy);
DEFINE_ATTRIBUTE_EVENT_LISTENER(cut);
DEFINE_ATTRIBUTE_EVENT_LISTENER(paste);
DEFINE_ATTRIBUTE_EVENT_LISTENER(search); DEFINE_ATTRIBUTE_EVENT_LISTENER(search);
bool hasAttribute(const QualifiedName&) const; bool hasAttribute(const QualifiedName&) const;
......
...@@ -141,9 +141,6 @@ interface Element : Node { ...@@ -141,9 +141,6 @@ interface Element : Node {
attribute EventHandler onbeforecopy; attribute EventHandler onbeforecopy;
attribute EventHandler onbeforecut; attribute EventHandler onbeforecut;
attribute EventHandler onbeforepaste; attribute EventHandler onbeforepaste;
attribute EventHandler oncopy;
attribute EventHandler oncut;
attribute EventHandler onpaste;
attribute EventHandler onsearch; attribute EventHandler onsearch;
}; };
......
...@@ -64,4 +64,5 @@ interface HTMLElement : Element { ...@@ -64,4 +64,5 @@ interface HTMLElement : Element {
}; };
HTMLElement implements GlobalEventHandlers; HTMLElement implements GlobalEventHandlers;
HTMLElement implements DocumentAndElementEventHandlers;
HTMLElement implements NoncedElement; HTMLElement implements NoncedElement;
...@@ -37,4 +37,5 @@ interface SVGElement : Element { ...@@ -37,4 +37,5 @@ interface SVGElement : Element {
}; };
SVGElement implements GlobalEventHandlers; SVGElement implements GlobalEventHandlers;
SVGElement implements DocumentAndElementEventHandlers;
SVGElement implements NoncedElement; SVGElement implements NoncedElement;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment