| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 
| 3  *           (C) 1999 Antti Koivisto (koivisto@kde.org) | 3  *           (C) 1999 Antti Koivisto (koivisto@kde.org) | 
| 4  *           (C) 2001 Dirk Mueller (mueller@kde.org) | 4  *           (C) 2001 Dirk Mueller (mueller@kde.org) | 
| 5  * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
     ights reserved. | 5  * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
     ights reserved. | 
| 6  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 6  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 
| 7  * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
     bile.com/) | 7  * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
     bile.com/) | 
| 8  * Copyright (C) 2011 Google Inc. All rights reserved. | 8  * Copyright (C) 2011 Google Inc. All rights reserved. | 
| 9  * | 9  * | 
| 10  * This library is free software; you can redistribute it and/or | 10  * This library is free software; you can redistribute it and/or | 
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 59 { | 59 { | 
| 60     ASSERT(referenceNode); | 60     ASSERT(referenceNode); | 
| 61 | 61 | 
| 62 #if ENABLE(SVG) | 62 #if ENABLE(SVG) | 
| 63     if (!referenceNode->isSVGElement() || !referenceNode->isInShadowTree()) | 63     if (!referenceNode->isSVGElement() || !referenceNode->isInShadowTree()) | 
| 64         return referenceNode; | 64         return referenceNode; | 
| 65 | 65 | 
| 66     // Spec: The event handling for the non-exposed tree works as if the referen
     ced element had been textually included | 66     // Spec: The event handling for the non-exposed tree works as if the referen
     ced element had been textually included | 
| 67     // as a deeply cloned child of the 'use' element, except that events are dis
     patched to the SVGElementInstance objects | 67     // as a deeply cloned child of the 'use' element, except that events are dis
     patched to the SVGElementInstance objects | 
| 68     Element* shadowHostElement = referenceNode->treeScope()->rootNode()->shadowH
     ost(); | 68     Element* shadowHostElement = referenceNode->treeScope()->rootNode()->shadowH
     ost(); | 
| 69     // At this time, SVG nodes are not allowed in non-<use> shadow trees, so any
      shadow root we do | 69     // At this time, SVG nodes are not supported in non-<use> shadow trees. | 
| 70     // have should be a use. The assert and following test is here to catch futu
     re shadow DOM changes | 70     if (!shadowHostElement || !shadowHostElement->hasTagName(SVGNames::useTag)) | 
| 71     // that do enable SVG in a shadow tree. | 71         return referenceNode; | 
| 72     ASSERT(!shadowHostElement || shadowHostElement->hasTagName(SVGNames::useTag)
     ); | 72     SVGUseElement* useElement = static_cast<SVGUseElement*>(shadowHostElement); | 
| 73     if (shadowHostElement && shadowHostElement->hasTagName(SVGNames::useTag)) { | 73     if (SVGElementInstance* instance = useElement->instanceForShadowTreeElement(
     referenceNode)) | 
| 74         SVGUseElement* useElement = static_cast<SVGUseElement*>(shadowHostElemen
     t); | 74         return instance; | 
| 75 |  | 
| 76         if (SVGElementInstance* instance = useElement->instanceForShadowTreeElem
     ent(referenceNode)) |  | 
| 77             return instance; |  | 
| 78     } |  | 
| 79 #endif | 75 #endif | 
| 80 | 76 | 
| 81     return referenceNode; | 77     return referenceNode; | 
| 82 } | 78 } | 
| 83 | 79 | 
| 84 void EventDispatcher::dispatchScopedEvent(Node* node, PassRefPtr<EventDispatchMe
     diator> mediator) | 80 void EventDispatcher::dispatchScopedEvent(Node* node, PassRefPtr<EventDispatchMe
     diator> mediator) | 
| 85 { | 81 { | 
| 86     // We need to set the target here because it can go away by the time we actu
     ally fire the event. | 82     // We need to set the target here because it can go away by the time we actu
     ally fire the event. | 
| 87     mediator->event()->setTarget(eventTargetRespectingSVGTargetRules(node)); | 83     mediator->event()->setTarget(eventTargetRespectingSVGTargetRules(node)); | 
| 88     ScopedEventQueue::instance()->enqueueEventDispatchMediator(mediator); | 84     ScopedEventQueue::instance()->enqueueEventDispatchMediator(mediator); | 
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 392     // WebKit never allowed selectstart event to cross the the shadow DOM bounda
     ry. | 388     // WebKit never allowed selectstart event to cross the the shadow DOM bounda
     ry. | 
| 393     // Changing this breaks existing sites. | 389     // Changing this breaks existing sites. | 
| 394     // See https://bugs.webkit.org/show_bug.cgi?id=52195 for details. | 390     // See https://bugs.webkit.org/show_bug.cgi?id=52195 for details. | 
| 395     if (event->type() == eventNames().selectstartEvent) | 391     if (event->type() == eventNames().selectstartEvent) | 
| 396         return StayInsideShadowDOM; | 392         return StayInsideShadowDOM; | 
| 397 | 393 | 
| 398     return RetargetEvent; | 394     return RetargetEvent; | 
| 399 } | 395 } | 
| 400 | 396 | 
| 401 } | 397 } | 
| OLD | NEW | 
|---|