Index: third_party/WebKit/Source/core/events/Event.cpp |
diff --git a/third_party/WebKit/Source/core/events/Event.cpp b/third_party/WebKit/Source/core/events/Event.cpp |
index 8a14c86fd97599b8936608165cd11c2ce9b365aa..b80610009abb892fdc36f57be38c3785c4acc10d 100644 |
--- a/third_party/WebKit/Source/core/events/Event.cpp |
+++ b/third_party/WebKit/Source/core/events/Event.cpp |
@@ -34,8 +34,11 @@ |
namespace blink { |
-static bool defaultScopedFromEventType(const AtomicString& eventType) |
+static bool isScoped(const AtomicString& eventType) |
{ |
+ // WebKit never allowed selectstart event to cross the the shadow DOM boundary. |
+ // Changing this breaks existing sites. |
+ // See https://bugs.webkit.org/show_bug.cgi?id=52195 for details. |
return (eventType == EventTypeNames::abort |
|| eventType == EventTypeNames::change |
|| eventType == EventTypeNames::error |
@@ -55,35 +58,35 @@ Event::Event() |
} |
Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg) |
- : Event(eventType, canBubbleArg, cancelableArg, defaultScopedFromEventType(eventType), false, monotonicallyIncreasingTime()) |
+ : Event(eventType, canBubbleArg, cancelableArg, !isScoped(eventType), false, monotonicallyIncreasingTime()) |
{ |
} |
Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg, EventTarget* relatedTarget) |
- : Event(eventType, canBubbleArg, cancelableArg, defaultScopedFromEventType(eventType), relatedTarget ? true : false, monotonicallyIncreasingTime()) |
+ : Event(eventType, canBubbleArg, cancelableArg, !isScoped(eventType), relatedTarget ? true : false, monotonicallyIncreasingTime()) |
{ |
} |
Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg, double platformTimeStamp) |
- : Event(eventType, canBubbleArg, cancelableArg, defaultScopedFromEventType(eventType), false, platformTimeStamp) |
+ : Event(eventType, canBubbleArg, cancelableArg, !isScoped(eventType), false, platformTimeStamp) |
{ |
} |
Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg, EventTarget* relatedTarget, double platformTimeStamp) |
- : Event(eventType, canBubbleArg, cancelableArg, defaultScopedFromEventType(eventType), relatedTarget ? true : false, platformTimeStamp) |
+ : Event(eventType, canBubbleArg, cancelableArg, !isScoped(eventType), relatedTarget ? true : false, platformTimeStamp) |
{ |
} |
-Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg, bool scoped) |
- : Event(eventType, canBubbleArg, cancelableArg, scoped, false, monotonicallyIncreasingTime()) |
+Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg, bool composed) |
+ : Event(eventType, canBubbleArg, cancelableArg, composed, false, monotonicallyIncreasingTime()) |
{ |
} |
-Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg, bool scoped, bool relatedTargetScoped, double platformTimeStamp) |
+Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg, bool composed, bool relatedTargetScoped, double platformTimeStamp) |
: m_type(eventType) |
, m_canBubble(canBubbleArg) |
, m_cancelable(cancelableArg) |
- , m_scoped(scoped) |
+ , m_composed(composed) |
, m_relatedTargetScoped(relatedTargetScoped) |
, m_propagationStopped(false) |
, m_immediatePropagationStopped(false) |
@@ -101,7 +104,7 @@ Event::Event(const AtomicString& eventType, bool canBubbleArg, bool cancelableAr |
} |
Event::Event(const AtomicString& eventType, const EventInit& initializer) |
- : Event(eventType, initializer.bubbles(), initializer.cancelable(), initializer.scoped(), initializer.relatedTargetScoped(), monotonicallyIncreasingTime()) |
+ : Event(eventType, initializer.bubbles(), initializer.cancelable(), initializer.composed(), initializer.relatedTargetScoped(), monotonicallyIncreasingTime()) |
{ |
} |
@@ -109,6 +112,11 @@ Event::~Event() |
{ |
} |
+bool Event::isScopedInV0() const |
+{ |
+ return isTrusted() && isScoped(m_type); |
+} |
+ |
void Event::initEvent(const AtomicString& eventTypeArg, bool canBubbleArg, bool cancelableArg) |
{ |
initEvent(eventTypeArg, canBubbleArg, cancelableArg, nullptr); |