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
PASS SVGElement interface: attribute ontoggle
PASS SVGElement interface: attribute onvolumechange
PASS SVGElement interface: attribute onwaiting
FAIL SVGElement interface: attribute oncopy assert_own_property: expected property "oncopy" missing
FAIL SVGElement interface: attribute oncut assert_own_property: expected property "oncut" missing
FAIL SVGElement interface: attribute onpaste assert_own_property: expected property "onpaste" missing
PASS SVGElement interface: attribute oncopy
PASS SVGElement interface: attribute oncut
PASS SVGElement interface: attribute onpaste
PASS SVGElement interface: attribute dataset
PASS SVGElement interface: attribute nonce
PASS SVGElement interface: attribute tabIndex
......
......@@ -160,9 +160,9 @@ PASS HTMLElement interface: attribute ontimeupdate
PASS HTMLElement interface: attribute ontoggle
PASS HTMLElement interface: attribute onvolumechange
PASS HTMLElement interface: attribute onwaiting
FAIL HTMLElement interface: attribute oncopy assert_own_property: expected property "oncopy" missing
FAIL HTMLElement interface: attribute oncut assert_own_property: expected property "oncut" missing
FAIL HTMLElement interface: attribute onpaste assert_own_property: expected property "onpaste" missing
PASS HTMLElement interface: attribute oncopy
PASS HTMLElement interface: attribute oncut
PASS HTMLElement interface: attribute onpaste
PASS HTMLElement interface: attribute contentEditable
PASS HTMLElement interface: attribute isContentEditable
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
getter onbeforecopy
getter onbeforecut
getter onbeforepaste
getter oncopy
getter oncut
getter onfullscreenchange
getter onfullscreenerror
getter onpaste
getter onsearch
getter onwebkitfullscreenchange
getter onwebkitfullscreenerror
......@@ -1602,11 +1599,8 @@ interface Element : Node
setter onbeforecopy
setter onbeforecut
setter onbeforepaste
setter oncopy
setter oncut
setter onfullscreenchange
setter onfullscreenerror
setter onpaste
setter onsearch
setter onwebkitfullscreenchange
setter onwebkitfullscreenerror
......@@ -2107,7 +2101,9 @@ interface HTMLElement : Element
getter onclick
getter onclose
getter oncontextmenu
getter oncopy
getter oncuechange
getter oncut
getter ondblclick
getter ondrag
getter ondragend
......@@ -2140,6 +2136,7 @@ interface HTMLElement : Element
getter onmouseover
getter onmouseup
getter onmousewheel
getter onpaste
getter onpause
getter onplay
getter onplaying
......@@ -2203,7 +2200,9 @@ interface HTMLElement : Element
setter onclick
setter onclose
setter oncontextmenu
setter oncopy
setter oncuechange
setter oncut
setter ondblclick
setter ondrag
setter ondragend
......@@ -2236,6 +2235,7 @@ interface HTMLElement : Element
setter onmouseover
setter onmouseup
setter onmousewheel
setter onpaste
setter onpause
setter onplay
setter onplaying
......@@ -5232,7 +5232,9 @@ interface SVGElement : Element
getter onclick
getter onclose
getter oncontextmenu
getter oncopy
getter oncuechange
getter oncut
getter ondblclick
getter ondrag
getter ondragend
......@@ -5265,6 +5267,7 @@ interface SVGElement : Element
getter onmouseover
getter onmouseup
getter onmousewheel
getter onpaste
getter onpause
getter onplay
getter onplaying
......@@ -5316,7 +5319,9 @@ interface SVGElement : Element
setter onclick
setter onclose
setter oncontextmenu
setter oncopy
setter oncuechange
setter oncut
setter ondblclick
setter ondrag
setter ondragend
......@@ -5349,6 +5354,7 @@ interface SVGElement : Element
setter onmouseover
setter onmouseup
setter onmousewheel
setter onpaste
setter onpause
setter onplay
setter onplaying
......
......@@ -1906,11 +1906,8 @@ interface Element : Node
getter onbeforecopy
getter onbeforecut
getter onbeforepaste
getter oncopy
getter oncut
getter onfullscreenchange
getter onfullscreenerror
getter onpaste
getter onsearch
getter onwebkitfullscreenchange
getter onwebkitfullscreenerror
......@@ -2028,11 +2025,8 @@ interface Element : Node
setter onbeforecopy
setter onbeforecut
setter onbeforepaste
setter oncopy
setter oncut
setter onfullscreenchange
setter onfullscreenerror
setter onpaste
setter onsearch
setter onwebkitfullscreenchange
setter onwebkitfullscreenerror
......@@ -2575,7 +2569,9 @@ interface HTMLElement : Element
getter onclick
getter onclose
getter oncontextmenu
getter oncopy
getter oncuechange
getter oncut
getter ondblclick
getter ondrag
getter ondragend
......@@ -2609,6 +2605,7 @@ interface HTMLElement : Element
getter onmouseover
getter onmouseup
getter onmousewheel
getter onpaste
getter onpause
getter onplay
getter onplaying
......@@ -2675,7 +2672,9 @@ interface HTMLElement : Element
setter onclick
setter onclose
setter oncontextmenu
setter oncopy
setter oncuechange
setter oncut
setter ondblclick
setter ondrag
setter ondragend
......@@ -2709,6 +2708,7 @@ interface HTMLElement : Element
setter onmouseover
setter onmouseup
setter onmousewheel
setter onpaste
setter onpause
setter onplay
setter onplaying
......@@ -5937,7 +5937,9 @@ interface SVGElement : Element
getter onclick
getter onclose
getter oncontextmenu
getter oncopy
getter oncuechange
getter oncut
getter ondblclick
getter ondrag
getter ondragend
......@@ -5971,6 +5973,7 @@ interface SVGElement : Element
getter onmouseover
getter onmouseup
getter onmousewheel
getter onpaste
getter onpause
getter onplay
getter onplaying
......@@ -6024,7 +6027,9 @@ interface SVGElement : Element
setter onclick
setter onclose
setter oncontextmenu
setter oncopy
setter oncuechange
setter oncut
setter ondblclick
setter ondrag
setter ondragend
......@@ -6058,6 +6063,7 @@ interface SVGElement : Element
setter onmouseover
setter onmouseup
setter onmousewheel
setter onpaste
setter onpause
setter onplay
setter onplaying
......
......@@ -508,6 +508,7 @@ core_dependency_idl_files =
"dom/accessibility_role.idl",
"dom/aria_attributes.idl",
"dom/child_node.idl",
"dom/document_and_element_event_handlers.idl",
"dom/document_or_shadow_root.idl",
"dom/global_event_handlers.idl",
"dom/nonced_element.idl",
......
......@@ -51,6 +51,7 @@ blink_core_sources("dom") {
"distributed_nodes.h",
"document.cc",
"document.h",
"document_and_element_event_handlers.h",
"document_encoding_data.cc",
"document_encoding_data.h",
"document_fragment.cc",
......
......@@ -300,10 +300,7 @@ class CORE_EXPORT Document : public ContainerNode,
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecopy);
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecut);
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforepaste);
DEFINE_ATTRIBUTE_EVENT_LISTENER(copy);
DEFINE_ATTRIBUTE_EVENT_LISTENER(cut);
DEFINE_ATTRIBUTE_EVENT_LISTENER(freeze);
DEFINE_ATTRIBUTE_EVENT_LISTENER(paste);
DEFINE_ATTRIBUTE_EVENT_LISTENER(pointerlockchange);
DEFINE_ATTRIBUTE_EVENT_LISTENER(pointerlockerror);
DEFINE_ATTRIBUTE_EVENT_LISTENER(readystatechange);
......
......@@ -209,10 +209,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement;
attribute EventHandler onbeforecopy;
attribute EventHandler onbeforecut;
attribute EventHandler onbeforepaste;
attribute EventHandler oncopy;
attribute EventHandler oncut;
[RuntimeEnabled=PageLifecycle] attribute EventHandler onfreeze;
attribute EventHandler onpaste;
[RuntimeEnabled=PageLifecycle] attribute EventHandler onresume;
attribute EventHandler onsearch;
[RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute EventHandler onsecuritypolicyviolation;
......@@ -220,6 +217,7 @@ typedef (HTMLScriptElement or SVGScriptElement) HTMLOrSVGScriptElement;
};
Document implements GlobalEventHandlers;
Document implements DocumentAndElementEventHandlers;
Document implements ParentNode;
Document implements NonElementParentNode;
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 {
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecopy);
DEFINE_ATTRIBUTE_EVENT_LISTENER(beforecut);
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);
bool hasAttribute(const QualifiedName&) const;
......
......@@ -141,9 +141,6 @@ interface Element : Node {
attribute EventHandler onbeforecopy;
attribute EventHandler onbeforecut;
attribute EventHandler onbeforepaste;
attribute EventHandler oncopy;
attribute EventHandler oncut;
attribute EventHandler onpaste;
attribute EventHandler onsearch;
};
......
......@@ -64,4 +64,5 @@ interface HTMLElement : Element {
};
HTMLElement implements GlobalEventHandlers;
HTMLElement implements DocumentAndElementEventHandlers;
HTMLElement implements NoncedElement;
......@@ -37,4 +37,5 @@ interface SVGElement : Element {
};
SVGElement implements GlobalEventHandlers;
SVGElement implements DocumentAndElementEventHandlers;
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