Changeset 70985 in webkit
- Timestamp:
- Oct 30, 2010 11:48:23 AM (13 years ago)
- Location:
- trunk
- Files:
-
- 4 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r70984 r70985 1 2010-10-30 Dimitri Glazkov <dglazkov@chromium.org> 2 3 Unreviewed, rolling out r70984. 4 http://trac.webkit.org/changeset/70984 5 https://bugs.webkit.org/show_bug.cgi?id=46015 6 7 Made media/audio-delete-while-slider-thumb-clicked.html crash. 8 9 * fast/events/shadow-boundary-crossing.html: 10 1 11 2010-10-30 Dimitri Glazkov <dglazkov@chromium.org> 2 12 -
trunk/LayoutTests/fast/events/shadow-boundary-crossing.html
r70984 r70985 3 3 <title></title> 4 4 <script type="text/javascript"> 5 var success; 6 var target; 5 var fired = false; 7 6 8 7 function selectStart(event) 9 8 { 10 success = event.target == target;9 fired = true; 11 10 } 12 11 … … 17 16 layoutTestController.dumpAsText(); 18 17 19 target = document.getElementById("target");18 var target = document.getElementById("target"); 20 19 var x = target.offsetLeft + target.offsetWidth / 2; 21 20 var y = target.offsetTop + target.offsetHeight / 2; … … 25 24 eventSender.mouseUp(); 26 25 27 document.getElementById("result").innerText = !success? "FAIL" : "PASS";26 document.getElementById("result").innerText = fired ? "FAIL" : "PASS"; 28 27 } 29 28 -
trunk/WebCore/Android.mk
r70984 r70985 133 133 dom/ErrorEvent.cpp \ 134 134 dom/Event.cpp \ 135 dom/EventContext.cpp \136 135 dom/EventNames.cpp \ 137 136 dom/EventTarget.cpp \ … … 194 193 dom/WebKitTransitionEvent.cpp \ 195 194 dom/WheelEvent.cpp \ 196 dom/WindowEventContext.cpp \197 195 dom/XMLDocumentParser.cpp \ 198 196 dom/XMLDocumentParserLibxml2.cpp \ -
trunk/WebCore/CMakeLists.txt
r70984 r70985 825 825 dom/ErrorEvent.cpp 826 826 dom/Event.cpp 827 dom/EventContext.cpp828 827 dom/EventNames.cpp 829 828 dom/EventTarget.cpp … … 883 882 dom/WebKitTransitionEvent.cpp 884 883 dom/WheelEvent.cpp 885 dom/WindowEventContext.cpp886 884 dom/XMLDocumentParser.cpp 887 885 dom/XMLDocumentParserLibxml2.cpp -
trunk/WebCore/ChangeLog
r70984 r70985 1 2010-10-30 Dimitri Glazkov <dglazkov@chromium.org> 2 3 Unreviewed, rolling out r70984. 4 http://trac.webkit.org/changeset/70984 5 https://bugs.webkit.org/show_bug.cgi?id=46015 6 7 Made media/audio-delete-while-slider-thumb-clicked.html crash. 8 9 * Android.mk: 10 * CMakeLists.txt: 11 * GNUmakefile.am: 12 * WebCore.gypi: 13 * WebCore.pro: 14 * WebCore.xcodeproj/project.pbxproj: 15 * dom/ContainerNode.cpp: 16 (WebCore::notifyChildInserted): 17 * dom/EventContext.cpp: Removed. 18 * dom/EventContext.h: Removed. 19 * dom/Node.cpp: 20 (WebCore::Node::markAncestorsWithChildNeedsStyleRecalc): 21 (WebCore::Node::createRendererIfNeeded): 22 (WebCore::Node::eventParentNode): 23 (WebCore::Node::enclosingLinkEventParentOrSelf): 24 (WebCore::eventTargetAsSVGElementInstance): 25 (WebCore::eventTargetRespectingSVGTargetRules): 26 (WebCore::Node::eventAncestors): 27 (WebCore::Node::dispatchGenericEvent): 28 * dom/Node.h: 29 * dom/Text.cpp: 30 (WebCore::Text::createRenderer): 31 * dom/WindowEventContext.cpp: Removed. 32 * dom/WindowEventContext.h: Removed. 33 * inspector/InspectorDOMAgent.cpp: 34 (WebCore::InspectorDOMAgent::getEventListenersForNode): 35 * inspector/InspectorInstrumentation.cpp: 36 (WebCore::eventHasListeners): 37 (WebCore::InspectorInstrumentation::willDispatchEventImpl): 38 * inspector/InspectorInstrumentation.h: 39 (WebCore::InspectorInstrumentation::willDispatchEvent): 40 * page/EventHandler.cpp: 41 (WebCore::EventHandler::updateMouseEventTargetNode): 42 * svg/SVGElement.cpp: 43 (WebCore::SVGElement::eventParentNode): 44 * svg/SVGElement.h: 45 1 46 2010-10-30 Dimitri Glazkov <dglazkov@chromium.org> 2 47 -
trunk/WebCore/GNUmakefile.am
r70984 r70985 1133 1133 WebCore/dom/ErrorEvent.h \ 1134 1134 WebCore/dom/Event.cpp \ 1135 WebCore/dom/EventException.h \ 1135 1136 WebCore/dom/Event.h \ 1136 WebCore/dom/EventContext.cpp \1137 WebCore/dom/EventContext.h \1138 WebCore/dom/EventException.h \1139 1137 WebCore/dom/EventListener.h \ 1140 1138 WebCore/dom/EventNames.cpp \ … … 1264 1262 WebCore/dom/WheelEvent.cpp \ 1265 1263 WebCore/dom/WheelEvent.h \ 1266 WebCore/dom/WindowEventContext.cpp \1267 WebCore/dom/WindowEventContext.h \1268 1264 WebCore/dom/XMLDocumentParser.cpp \ 1269 1265 WebCore/dom/XMLDocumentParser.h \ -
trunk/WebCore/WebCore.gypi
r70984 r70985 1205 1205 'dom/Event.cpp', 1206 1206 'dom/Event.h', 1207 'dom/EventContext.cpp',1208 'dom/EventContext.h',1209 1207 'dom/EventException.h', 1210 1208 'dom/EventListener.h', … … 1342 1340 'dom/WheelEvent.cpp', 1343 1341 'dom/WheelEvent.h', 1344 'dom/WindowEventContext.cpp',1345 'dom/WindowEventContext.h',1346 1342 'dom/XMLDocumentParser.cpp', 1347 1343 'dom/XMLDocumentParser.h', -
trunk/WebCore/WebCore.pro
r70984 r70985 714 714 dom/ErrorEvent.cpp \ 715 715 dom/Event.cpp \ 716 dom/EventContext.cpp \717 716 dom/EventNames.cpp \ 718 717 dom/EventTarget.cpp \ … … 775 774 dom/WebKitTransitionEvent.cpp \ 776 775 dom/WheelEvent.cpp \ 777 dom/WindowEventContext.cpp \778 776 dom/XMLDocumentParser.cpp \ 779 777 dom/XMLDocumentParserQt.cpp \ -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r70984 r70985 892 892 411046410FA222A600BA436A /* ScriptEventListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 4110463F0FA222A600BA436A /* ScriptEventListener.h */; }; 893 893 411046420FA222A600BA436A /* ScriptEventListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 411046400FA222A600BA436A /* ScriptEventListener.cpp */; }; 894 4123E569127B3041000FEEA7 /* WindowEventContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4123E567127B3041000FEEA7 /* WindowEventContext.h */; };895 4123E56A127B3041000FEEA7 /* WindowEventContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4123E568127B3041000FEEA7 /* WindowEventContext.cpp */; };896 894 4127D5370F8AAB1D00E424F5 /* ScriptState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */; }; 897 4138D3351244054800323D33 /* EventContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4138D3331244054800323D33 /* EventContext.h */; };898 4138D3361244054800323D33 /* EventContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4138D3341244054800323D33 /* EventContext.cpp */; };899 895 4162A450101145AE00DFF3ED /* DedicatedWorkerContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4162A44D101145AE00DFF3ED /* DedicatedWorkerContext.cpp */; }; 900 896 4162A451101145AE00DFF3ED /* DedicatedWorkerContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 4162A44E101145AE00DFF3ED /* DedicatedWorkerContext.h */; }; … … 6960 6956 4110463F0FA222A600BA436A /* ScriptEventListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptEventListener.h; sourceTree = "<group>"; }; 6961 6957 411046400FA222A600BA436A /* ScriptEventListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptEventListener.cpp; sourceTree = "<group>"; }; 6962 4123E567127B3041000FEEA7 /* WindowEventContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowEventContext.h; sourceTree = "<group>"; };6963 4123E568127B3041000FEEA7 /* WindowEventContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WindowEventContext.cpp; sourceTree = "<group>"; };6964 6958 4127D5360F8AAB1D00E424F5 /* ScriptState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptState.cpp; sourceTree = "<group>"; }; 6965 4138D3331244054800323D33 /* EventContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventContext.h; sourceTree = "<group>"; };6966 4138D3341244054800323D33 /* EventContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventContext.cpp; sourceTree = "<group>"; };6967 6959 4162A44D101145AE00DFF3ED /* DedicatedWorkerContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DedicatedWorkerContext.cpp; path = workers/DedicatedWorkerContext.cpp; sourceTree = "<group>"; }; 6968 6960 4162A44E101145AE00DFF3ED /* DedicatedWorkerContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DedicatedWorkerContext.h; path = workers/DedicatedWorkerContext.h; sourceTree = "<group>"; }; … … 18172 18164 85031B2C0A44EFC700F992E0 /* Event.h */, 18173 18165 14E836D209F8512000B85AE4 /* Event.idl */, 18174 4138D3341244054800323D33 /* EventContext.cpp */,18175 4138D3331244054800323D33 /* EventContext.h */,18176 18166 BC60D9090D2A17CE00B9918F /* EventException.h */, 18177 18167 BC60D90A0D2A17CE00B9918F /* EventException.idl */, … … 18334 18324 85031B3B0A44EFC700F992E0 /* WheelEvent.h */, 18335 18325 93EEC1F709C2877700C515D1 /* WheelEvent.idl */, 18336 4123E568127B3041000FEEA7 /* WindowEventContext.cpp */,18337 4123E567127B3041000FEEA7 /* WindowEventContext.h */,18338 18326 F523D30902DE4476018635CA /* XMLDocumentParser.cpp */, 18339 18327 F523D30A02DE4476018635CA /* XMLDocumentParser.h */, … … 19499 19487 2ECF7AE210162B5800427DE7 /* ErrorEvent.h in Headers */, 19500 19488 85031B420A44EFC700F992E0 /* Event.h in Headers */, 19501 4138D3351244054800323D33 /* EventContext.h in Headers */,19502 19489 BC60D90C0D2A17CE00B9918F /* EventException.h in Headers */, 19503 19490 93C09A530B064DB3005ABD4D /* EventHandler.h in Headers */, … … 21155 21142 9380F47409A11AB4001FDB34 /* Widget.h in Headers */, 21156 21143 939B02EF0EA2DBC400C54570 /* WidthIterator.h in Headers */, 21157 4123E569127B3041000FEEA7 /* WindowEventContext.h in Headers */,21158 21144 BC8243E90D0CFD7500460C8F /* WindowFeatures.h in Headers */, 21159 21145 E1E1BF00115FF6FB006F52CA /* WindowsKeyboardCodes.h in Headers */, … … 22131 22117 2ECF7AE110162B5800427DE7 /* ErrorEvent.cpp in Sources */, 22132 22118 85031B410A44EFC700F992E0 /* Event.cpp in Sources */, 22133 4138D3361244054800323D33 /* EventContext.cpp in Sources */,22134 22119 93C09A810B064F00005ABD4D /* EventHandler.cpp in Sources */, 22135 22120 93C09A7F0B064EEF005ABD4D /* EventHandlerMac.mm in Sources */, … … 23731 23716 9380F47809A11ACC001FDB34 /* WidgetMac.mm in Sources */, 23732 23717 939B02EE0EA2DBC400C54570 /* WidthIterator.cpp in Sources */, 23733 4123E56A127B3041000FEEA7 /* WindowEventContext.cpp in Sources */,23734 23718 BC8243E80D0CFD7500460C8F /* WindowFeatures.cpp in Sources */, 23735 23719 08203A9F0ED8C35300B8B61A /* WMLAccessElement.cpp in Sources */, -
trunk/WebCore/dom/ContainerNode.cpp
r70984 r70985 1006 1006 RefPtr<Document> document = child->document(); 1007 1007 1008 Node* parentOrHostNode = c->parentOrHostNode(); 1009 if (parentOrHostNode && parentOrHostNode->inDocument()) 1008 if (c->parentNode() && c->parentNode()->inDocument()) 1010 1009 c->insertedIntoDocument(); 1011 1010 else -
trunk/WebCore/dom/Node.cpp
r70984 r70985 46 46 #include "Element.h" 47 47 #include "Event.h" 48 #include "EventContext.h"49 48 #include "EventException.h" 50 49 #include "EventHandler.h" … … 82 81 #include "WebKitTransitionEvent.h" 83 82 #include "WheelEvent.h" 84 #include "WindowEventContext.h"85 83 #include "XMLNames.h" 86 84 #include "htmlediting.h" … … 737 735 inline void Node::markAncestorsWithChildNeedsStyleRecalc() 738 736 { 739 for (ContainerNode* p = parent OrHostNode(); p && !p->childNeedsStyleRecalc(); p = p->parentOrHostNode())737 for (ContainerNode* p = parentNode(); p && !p->childNeedsStyleRecalc(); p = p->parentNode()) 740 738 p->setChildNeedsStyleRecalc(); 741 739 742 740 if (document()->childNeedsStyleRecalc()) 743 741 document()->scheduleStyleRecalc(); … … 1324 1322 ASSERT(!renderer()); 1325 1323 1326 ContainerNode* parent = parent OrHostNode();1324 ContainerNode* parent = parentNode(); 1327 1325 ASSERT(parent); 1328 1326 … … 2242 2240 } 2243 2241 2242 ContainerNode* Node::eventParentNode() 2243 { 2244 return parentNode(); 2245 } 2246 2244 2247 Node* Node::enclosingLinkEventParentOrSelf() 2245 2248 { 2246 for (Node* node = this; node; node = node-> parentOrHostNode()) {2249 for (Node* node = this; node; node = node->eventParentNode()) { 2247 2250 // For imagemaps, the enclosing link node is the associated area element not the image itself. 2248 2251 // So we don't let images be the enclosingLinkNode, even though isLink sometimes returns true … … 2482 2485 } 2483 2486 2484 static inline EventTarget* eventTargetRespectingSVGTargetRules(Node* referenceNode) 2487 #if ENABLE(SVG) 2488 static inline SVGElementInstance* eventTargetAsSVGElementInstance(Node* referenceNode) 2485 2489 { 2486 2490 ASSERT(referenceNode); 2487 2488 #if ENABLE(SVG)2489 2491 if (!referenceNode->isSVGElement()) 2490 return referenceNode;2492 return 0; 2491 2493 2492 2494 // Spec: The event handling for the non-exposed tree works as if the referenced element had been textually included … … 2502 2504 return instance; 2503 2505 } 2506 2507 return 0; 2508 } 2504 2509 #endif 2505 2510 2511 static inline EventTarget* eventTargetRespectingSVGTargetRules(Node* referenceNode) 2512 { 2513 ASSERT(referenceNode); 2514 2515 #if ENABLE(SVG) 2516 if (SVGElementInstance* instance = eventTargetAsSVGElementInstance(referenceNode)) { 2517 ASSERT(instance->shadowTreeElement() == referenceNode); 2518 return instance; 2519 } 2520 #endif 2521 2506 2522 return referenceNode; 2507 2523 } 2508 2524 2509 void Node::getEventAncestors(Vector<EventContext>& ancestors, EventTarget* originalTarget) 2510 { 2511 if (!inDocument()) 2512 return; 2513 2514 EventTarget* target = originalTarget; 2515 Node* ancestor = this; 2516 bool shouldSkipNextAncestor = false; 2517 while (true) { 2518 if (ancestor->isShadowNode()) { 2519 ancestor = ancestor->shadowParentNode(); 2520 if (!shouldSkipNextAncestor) 2521 target = ancestor; 2522 } else 2523 ancestor = ancestor->parentNode(); 2524 2525 if (!ancestor) 2526 return; 2527 2525 void Node::eventAncestors(Vector<RefPtr<ContainerNode> > &ancestors) 2526 { 2527 if (inDocument()) { 2528 for (ContainerNode* ancestor = eventParentNode(); ancestor; ancestor = ancestor->eventParentNode()) { 2528 2529 #if ENABLE(SVG) 2529 // Skip SVGShadowTreeRootElement. 2530 shouldSkipNextAncestor = ancestor->isSVGElement() && ancestor->isShadowNode(); 2531 if (shouldSkipNextAncestor) 2532 continue; 2530 // Skip <use> shadow tree elements. 2531 if (ancestor->isSVGElement() && ancestor->isShadowNode()) 2532 continue; 2533 2533 #endif 2534 // FIXME: Unroll the extra loop inside eventTargetRespectingSVGTargetRules into this loop. 2535 ancestors.append(EventContext(ancestor, eventTargetRespectingSVGTargetRules(ancestor), target)); 2536 2534 ancestors.append(ancestor); 2535 } 2537 2536 } 2538 2537 } … … 2547 2546 RefPtr<FrameView> view = document()->view(); 2548 2547 return dispatchGenericEvent(event.release()); 2549 }2550 2551 static const EventContext* topEventContext(const Vector<EventContext>& ancestors)2552 {2553 return ancestors.isEmpty() ? 0 : &(ancestors.last());2554 2548 } 2555 2549 … … 2566 2560 // Be sure to ref all of nodes since event handlers could result in the last reference going away. 2567 2561 RefPtr<Node> thisNode(this); 2568 RefPtr<EventTarget> originalTarget = event->target(); 2569 Vector<EventContext> ancestors; 2570 getEventAncestors(ancestors, originalTarget.get()); 2571 2572 WindowEventContext windowContext(event.get(), this, topEventContext(ancestors)); 2573 2574 InspectorInstrumentationCookie cookie = InspectorInstrumentation::willDispatchEvent(document(), *event, windowContext.window(), this, ancestors); 2562 Vector<RefPtr<ContainerNode> > ancestors; 2563 eventAncestors(ancestors); 2564 2565 // Set up a pointer to indicate whether / where to dispatch window events. 2566 // We don't dispatch load events to the window. That quirk was originally 2567 // added because Mozilla doesn't propagate load events to the window object. 2568 DOMWindow* targetForWindowEvents = 0; 2569 if (event->type() != eventNames().loadEvent) { 2570 Node* topLevelContainer = ancestors.isEmpty() ? this : ancestors.last().get(); 2571 if (topLevelContainer->isDocumentNode()) 2572 targetForWindowEvents = static_cast<Document*>(topLevelContainer)->domWindow(); 2573 } 2574 2575 InspectorInstrumentationCookie cookie = InspectorInstrumentation::willDispatchEvent(document(), *event, targetForWindowEvents, this, ancestors); 2575 2576 2576 2577 // Give the target node a chance to do some work before DOM event handlers get a crack. … … 2582 2583 event->setEventPhase(Event::CAPTURING_PHASE); 2583 2584 2584 if (windowContext.handleLocalEvents(event.get()) && event->propagationStopped()) 2585 goto doneDispatching; 2586 2587 for (size_t i = ancestors.size(); i; --i) { 2588 ancestors[i - 1].handleLocalEvents(event.get()); 2585 if (targetForWindowEvents) { 2586 event->setCurrentTarget(targetForWindowEvents); 2587 targetForWindowEvents->fireEventListeners(event.get()); 2589 2588 if (event->propagationStopped()) 2590 2589 goto doneDispatching; 2591 2590 } 2591 for (size_t i = ancestors.size(); i; --i) { 2592 ContainerNode* ancestor = ancestors[i - 1].get(); 2593 event->setCurrentTarget(eventTargetRespectingSVGTargetRules(ancestor)); 2594 ancestor->handleLocalEvents(event.get()); 2595 if (event->propagationStopped()) 2596 goto doneDispatching; 2597 } 2592 2598 2593 2599 event->setEventPhase(Event::AT_TARGET); 2594 event->setTarget(originalTarget.get()); 2600 2595 2601 event->setCurrentTarget(eventTargetRespectingSVGTargetRules(this)); 2596 2602 handleLocalEvents(event.get()); … … 2604 2610 size_t size = ancestors.size(); 2605 2611 for (size_t i = 0; i < size; ++i) { 2606 ancestors[i].handleLocalEvents(event.get()); 2612 ContainerNode* ancestor = ancestors[i].get(); 2613 event->setCurrentTarget(eventTargetRespectingSVGTargetRules(ancestor)); 2614 ancestor->handleLocalEvents(event.get()); 2607 2615 if (event->propagationStopped() || event->cancelBubble()) 2608 2616 goto doneDispatching; 2609 2617 } 2610 windowContext.handleLocalEvents(event.get()); 2618 if (targetForWindowEvents) { 2619 event->setCurrentTarget(targetForWindowEvents); 2620 targetForWindowEvents->fireEventListeners(event.get()); 2621 if (event->propagationStopped() || event->cancelBubble()) 2622 goto doneDispatching; 2623 } 2611 2624 } 2612 2625 2613 2626 doneDispatching: 2614 event->setTarget(originalTarget.get());2615 2627 event->setCurrentTarget(0); 2616 2628 event->setEventPhase(0); … … 2633 2645 size_t size = ancestors.size(); 2634 2646 for (size_t i = 0; i < size; ++i) { 2635 ancestors[i].node()->defaultEventHandler(event.get()); 2647 ContainerNode* ancestor = ancestors[i].get(); 2648 ancestor->defaultEventHandler(event.get()); 2636 2649 ASSERT(!event->defaultPrevented()); 2637 2650 if (event->defaultHandled()) -
trunk/WebCore/dom/Node.h
r70984 r70985 50 50 class Element; 51 51 class Event; 52 class EventContext;53 52 class EventListener; 54 53 class FloatPoint; … … 206 205 Node* shadowTreeRootNode(); 207 206 bool isInShadowTree(); 208 // Node's parent or shadow tree host. 209 ContainerNode* parentOrHostNode(); 207 208 // The node's parent for the purpose of event capture and bubbling. 209 virtual ContainerNode* eventParentNode(); 210 210 211 211 // Returns the enclosing event parent node (or self) that, when clicked, would trigger a navigation. … … 213 213 214 214 // Node ancestors when concerned about event flow. 215 void getEventAncestors(Vector<EventContext>& ancestors, EventTarget*); 215 // FIXME: Should be named getEventAncestors. 216 void eventAncestors(Vector<RefPtr<ContainerNode> > &ancestors); 216 217 217 218 bool isBlockFlow() const; … … 693 694 } 694 695 695 inline ContainerNode* Node::parentOrHostNode()696 {697 if (ContainerNode* parent = parentNode())698 return parent;699 return shadowParentNode();700 }701 702 696 } //namespace 703 697 -
trunk/WebCore/dom/Text.cpp
r70984 r70985 240 240 RenderObject* Text::createRenderer(RenderArena* arena, RenderStyle*) 241 241 { 242 Node* parentOrHost = parentOrHostNode();243 242 #if ENABLE(SVG) 244 if (parent OrHost->isSVGElement()243 if (parentNode()->isSVGElement() 245 244 #if ENABLE(SVG_FOREIGN_OBJECT) 246 && !parent OrHost->hasTagName(SVGNames::foreignObjectTag)245 && !parentNode()->hasTagName(SVGNames::foreignObjectTag) 247 246 #endif 248 247 ) -
trunk/WebCore/inspector/InspectorDOMAgent.cpp
r70984 r70985 52 52 #include "DocumentType.h" 53 53 #include "Event.h" 54 #include "EventContext.h"55 54 #include "EventListener.h" 56 55 #include "EventNames.h" … … 609 608 610 609 // The Node's Event Ancestors (not including self) 611 Vector< EventContext> ancestors;612 node-> getEventAncestors(ancestors, node);610 Vector<RefPtr<ContainerNode> > ancestors; 611 node->eventAncestors(ancestors); 613 612 614 613 // Nodes and their Listeners for the concerned event types (order is top to bottom) 615 614 Vector<EventListenerInfo> eventInformation; 616 615 for (size_t i = ancestors.size(); i; --i) { 617 Node* ancestor = ancestors[i - 1].node();616 ContainerNode* ancestor = ancestors[i - 1].get(); 618 617 for (size_t j = 0; j < eventTypesLength; ++j) { 619 618 AtomicString& type = eventTypes[j]; -
trunk/WebCore/inspector/InspectorInstrumentation.cpp
r70984 r70985 36 36 #include "DOMWindow.h" 37 37 #include "Event.h" 38 #include "EventContext.h"39 38 #include "InspectorController.h" 40 39 #include "InspectorDOMAgent.h" … … 55 54 int InspectorInstrumentation::s_frontendCounter = 0; 56 55 57 static bool eventHasListeners(const AtomicString& eventType, DOMWindow* window, Node* node, const Vector< EventContext>& ancestors)56 static bool eventHasListeners(const AtomicString& eventType, DOMWindow* window, Node* node, const Vector<RefPtr<ContainerNode> >& ancestors) 58 57 { 59 58 if (window && window->hasEventListeners(eventType)) … … 64 63 65 64 for (size_t i = 0; i < ancestors.size(); i++) { 66 Node* ancestor = ancestors[i].node();65 ContainerNode* ancestor = ancestors[i].get(); 67 66 if (ancestor->hasEventListeners(eventType)) 68 67 return true; … … 140 139 domAgent->characterDataModified(characterData); 141 140 } 141 142 142 143 143 void InspectorInstrumentation::willSendXMLHttpRequestImpl(InspectorController* inspectorController, const String& url) … … 214 214 } 215 215 216 InspectorInstrumentationCookie InspectorInstrumentation::willDispatchEventImpl(InspectorController* inspectorController, const Event& event, DOMWindow* window, Node* node, const Vector< EventContext>& ancestors)216 InspectorInstrumentationCookie InspectorInstrumentation::willDispatchEventImpl(InspectorController* inspectorController, const Event& event, DOMWindow* window, Node* node, const Vector<RefPtr<ContainerNode> >& ancestors) 217 217 { 218 218 pauseOnNativeEventIfNeeded(inspectorController, listenerEventCategoryType, event.type(), false); -
trunk/WebCore/inspector/InspectorInstrumentation.h
r70984 r70985 41 41 class CharacterData; 42 42 class Element; 43 class EventContext;44 43 class InspectorController; 45 44 class InspectorTimelineAgent; … … 75 74 static InspectorInstrumentationCookie willChangeXHRReadyState(ScriptExecutionContext*, XMLHttpRequest* request); 76 75 static void didChangeXHRReadyState(const InspectorInstrumentationCookie&); 77 static InspectorInstrumentationCookie willDispatchEvent(Document*, const Event& event, DOMWindow* window, Node* node, const Vector< EventContext>& ancestors);76 static InspectorInstrumentationCookie willDispatchEvent(Document*, const Event& event, DOMWindow* window, Node* node, const Vector<RefPtr<ContainerNode> >& ancestors); 78 77 static void didDispatchEvent(const InspectorInstrumentationCookie&); 79 78 static InspectorInstrumentationCookie willDispatchEventOnWindow(Frame*, const Event& event, DOMWindow* window); … … 132 131 static InspectorInstrumentationCookie willChangeXHRReadyStateImpl(InspectorController*, XMLHttpRequest* request); 133 132 static void didChangeXHRReadyStateImpl(const InspectorInstrumentationCookie&); 134 static InspectorInstrumentationCookie willDispatchEventImpl(InspectorController*, const Event& event, DOMWindow* window, Node* node, const Vector< EventContext>& ancestors);133 static InspectorInstrumentationCookie willDispatchEventImpl(InspectorController*, const Event& event, DOMWindow* window, Node* node, const Vector<RefPtr<ContainerNode> >& ancestors); 135 134 static void didDispatchEventImpl(const InspectorInstrumentationCookie&); 136 135 static InspectorInstrumentationCookie willDispatchEventOnWindowImpl(InspectorController*, const Event& event, DOMWindow* window); … … 227 226 } 228 227 228 229 229 inline void InspectorInstrumentation::willSendXMLHttpRequest(ScriptExecutionContext* context, const String& url) 230 230 { … … 294 294 } 295 295 296 inline InspectorInstrumentationCookie InspectorInstrumentation::willDispatchEvent(Document* document, const Event& event, DOMWindow* window, Node* node, const Vector< EventContext>& ancestors)296 inline InspectorInstrumentationCookie InspectorInstrumentation::willDispatchEvent(Document* document, const Event& event, DOMWindow* window, Node* node, const Vector<RefPtr<ContainerNode> >& ancestors) 297 297 { 298 298 #if ENABLE(INSPECTOR) -
trunk/WebCore/page/EventHandler.cpp
r70984 r70985 1767 1767 if (result && result->isTextNode()) 1768 1768 result = result->parentNode(); 1769 if (result) 1770 result = result->shadowAncestorNode(); 1769 1771 } 1770 1772 m_nodeUnderMouse = result; -
trunk/WebCore/svg/SVGElement.cpp
r70984 r70985 348 348 } 349 349 350 ContainerNode* SVGElement::eventParentNode() 351 { 352 if (ContainerNode* shadowParent = shadowParentNode()) 353 return shadowParent; 354 return StyledElement::eventParentNode(); 355 } 356 350 357 } 351 358 -
trunk/WebCore/svg/SVGElement.h
r70984 r70985 100 100 virtual bool isSupported(StringImpl* feature, StringImpl* version) const; 101 101 102 virtual ContainerNode* eventParentNode(); 103 102 104 virtual bool needsPendingResourceHandling() const { return true; } 103 105 virtual void buildPendingResource() { }
Note: See TracChangeset
for help on using the changeset viewer.