Index: third_party/WebKit/Source/core/events/EventPath.cpp |
diff --git a/third_party/WebKit/Source/core/events/EventPath.cpp b/third_party/WebKit/Source/core/events/EventPath.cpp |
index 899b677f6eecfbe5538b82c2000b609972c29ba0..feb2f0976cd1f1e997177f04c0de2e9a5521e01b 100644 |
--- a/third_party/WebKit/Source/core/events/EventPath.cpp |
+++ b/third_party/WebKit/Source/core/events/EventPath.cpp |
@@ -50,12 +50,13 @@ EventTarget* EventPath::eventTargetRespectingTargetRules(Node& referenceNode) |
static inline bool shouldStopAtShadowRoot(Event& event, ShadowRoot& shadowRoot, EventTarget& target) |
{ |
- // 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. |
- const AtomicString eventType = event.type(); |
- return target.toNode() && target.toNode()->shadowHost() == shadowRoot.host() |
- && event.scoped(); |
+ if (shadowRoot.isV1()) { |
+ // In v1, an event is scoped by default unless event.composed flag is set. |
+ return !event.composed() && target.toNode() && target.toNode()->shadowHost() == shadowRoot.host(); |
+ } |
+ // Ignores event.composed() for v0. |
+ // Instead, use event.isScopedInV0() for backward compatibility. |
+ return event.isScopedInV0() && target.toNode() && target.toNode()->shadowHost() == shadowRoot.host(); |
} |
EventPath::EventPath(Node& node, Event* event) |