Changeset 42633 in webkit
- Timestamp:
- Apr 17, 2009 6:31:50 PM (15 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 40 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r42631 r42633 1 2009-04-17 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Oliver Hunt. 4 5 More fix for https://bugs.webkit.org/show_bug.cgi?id=21260 6 Unbounded memory growth when churning elements with anonymous event handler functions 7 8 Some refactoring of "inline" event listeners. 9 10 Renames: 11 dispatchEventForType => dispatchEvent 12 setWindowInlineEventListenerForTypeAndAttribute => setWindowInlineEventListener 13 removeInlineEventListenerForType => clearInlineEventListener 14 setInlineEventListenerForType => setInlineEventListener 15 inlineEventListenerForType => getInlineEventListener 16 17 * bindings/js/JSLazyEventListener.cpp: 18 (WebCore::eventParameterName): 19 (WebCore::JSLazyEventListener::JSLazyEventListener): 20 (WebCore::createInlineEventListener): 21 * bindings/js/JSLazyEventListener.h: Added two helper functions for 22 creating "inline" event listeners. These replace Document::createEventListener, 23 and abstract the creation of JS event listeners for DOM attributes out 24 of the DOM. Removed legacy JSProtectedEventListener constructor code for 25 adding the event listener's function to a map, since lazy event listeners 26 don't have functions at construction time. 27 28 * dom/Document.cpp: 29 (WebCore::Document::setFocusedNode): 30 * dom/Document.h: 31 (WebCore::Document::isSVGDocument): 32 * dom/Element.cpp: 33 (WebCore::Element::setWindowInlineEventListener): 34 * dom/Element.h: Updated for renames. Nixed Document::createEventListener, 35 mentioned above. Moved setWindowInlineEventListenerForTypeAndAttribute 36 to Element, for simplicity. 37 38 * dom/InputElement.cpp: 39 (WebCore::InputElement::setValueFromRenderer): 40 * dom/Node.cpp: 41 (WebCore::Node::dispatchFocusEvent): 42 (WebCore::Node::dispatchBlurEvent): 43 (WebCore::Node::dispatchEvent): 44 (WebCore::Node::clearInlineEventListener): 45 (WebCore::Node::setInlineEventListener): 46 (WebCore::Node::getInlineEventListener): 47 (WebCore::Node::onabort): 48 (WebCore::Node::setOnabort): 49 (WebCore::Node::etc.): 50 * dom/Node.h: Updated for renames. 51 52 * editing/ReplaceSelectionCommand.cpp: 53 (WebCore::ReplacementFragment::ReplacementFragment): Updated for renames. 54 55 Updated these files for renames, and to use the new createInlineEventListener 56 helper function: 57 58 * html/HTMLBodyElement.cpp: 59 (WebCore::HTMLBodyElement::parseMappedAttribute): 60 * html/HTMLButtonElement.cpp: 61 (WebCore::HTMLButtonElement::parseMappedAttribute): 62 * html/HTMLElement.cpp: 63 (WebCore::HTMLElement::parseMappedAttribute): 64 * html/HTMLFormControlElement.cpp: 65 (WebCore::HTMLFormControlElement::onChange): 66 * html/HTMLFormElement.cpp: 67 (WebCore::HTMLFormElement::prepareSubmit): 68 (WebCore::HTMLFormElement::reset): 69 (WebCore::HTMLFormElement::parseMappedAttribute): 70 * html/HTMLFrameElementBase.cpp: 71 (WebCore::HTMLFrameElementBase::parseMappedAttribute): 72 * html/HTMLFrameSetElement.cpp: 73 (WebCore::HTMLFrameSetElement::parseMappedAttribute): 74 * html/HTMLImageElement.cpp: 75 (WebCore::HTMLImageElement::parseMappedAttribute): 76 * html/HTMLImageLoader.cpp: 77 (WebCore::HTMLImageLoader::dispatchLoadEvent): 78 * html/HTMLInputElement.cpp: 79 (WebCore::HTMLInputElement::parseMappedAttribute): 80 (WebCore::HTMLInputElement::onSearch): 81 * html/HTMLMediaElement.cpp: 82 (WebCore::HTMLMediaElement::loadInternal): 83 * html/HTMLObjectElement.cpp: 84 (WebCore::HTMLObjectElement::parseMappedAttribute): 85 * html/HTMLScriptElement.cpp: 86 (WebCore::HTMLScriptElement::parseMappedAttribute): 87 (WebCore::HTMLScriptElement::dispatchLoadEvent): 88 (WebCore::HTMLScriptElement::dispatchErrorEvent): 89 * html/HTMLSelectElement.cpp: 90 (WebCore::HTMLSelectElement::parseMappedAttribute): 91 * html/HTMLTextAreaElement.cpp: 92 (WebCore::HTMLTextAreaElement::parseMappedAttribute): 93 * html/HTMLTokenizer.cpp: 94 (WebCore::HTMLTokenizer::notifyFinished): 95 * page/AccessibilityRenderObject.cpp: 96 (WebCore::AccessibilityRenderObject::mouseButtonListener): 97 * page/DOMWindow.cpp: 98 * page/DOMWindow.h: 99 (WebCore::DOMWindow::eventListeners): 100 * page/EventHandler.cpp: 101 (WebCore::EventHandler::canMouseDownStartSelect): 102 (WebCore::EventHandler::canMouseDragExtendSelect): 103 (WebCore::EventHandler::sendScrollEvent): 104 * page/Page.cpp: 105 (WebCore::networkStateChanged): 106 * rendering/RenderListBox.cpp: 107 (WebCore::RenderListBox::valueChanged): 108 * rendering/RenderTextControl.cpp: 109 (WebCore::RenderTextControl::selectionChanged): 110 * svg/SVGElement.cpp: 111 (WebCore::SVGElement::parseMappedAttribute): 112 * svg/SVGElementInstance.cpp: 113 * svg/SVGImageLoader.cpp: 114 (WebCore::SVGImageLoader::dispatchLoadEvent): 115 * svg/SVGSVGElement.cpp: 116 (WebCore::SVGSVGElement::parseMappedAttribute): 117 * svg/SVGScriptElement.cpp: 118 (WebCore::SVGScriptElement::dispatchErrorEvent): 119 * wml/WMLInputElement.cpp: 120 (WebCore::WMLInputElement::defaultEventHandler): 121 1 122 2009-04-17 David Kilzer <ddkilzer@apple.com> 2 123 -
trunk/WebCore/bindings/js/JSLazyEventListener.cpp
r42589 r42633 24 24 #include "JSNode.h" 25 25 #include <runtime/FunctionConstructor.h> 26 #include <runtime/JSLock.h> 26 27 #include <wtf/RefCountedLeakCounter.h> 27 28 … … 33 34 static WTF::RefCountedLeakCounter eventListenerCounter("JSLazyEventListener"); 34 35 #endif 36 37 static const String& eventParameterName(bool isSVGEvent) 38 { 39 DEFINE_STATIC_LOCAL(const String, eventString, ("event")); 40 #if ENABLE(SVG) 41 DEFINE_STATIC_LOCAL(const String, evtString, ("evt")); 42 #endif 43 return isSVGEvent ? evtString : eventString; 44 } 35 45 36 46 JSLazyEventListener::JSLazyEventListener(const String& functionName, const String& eventParameterName, const String& code, JSDOMGlobalObject* globalObject, Node* node, int lineNumber) … … 55 65 m_lineNumber = 1; 56 66 57 if (m_jsFunction) {58 JSDOMWindow::ProtectedListenersMap& listeners = isInline()59 ? m_globalObject->jsProtectedInlineEventListeners() : m_globalObject->jsProtectedEventListeners();60 listeners.set(m_jsFunction, this);61 }62 67 #ifndef NDEBUG 63 68 eventListenerCounter.increment(); … … 148 153 } 149 154 155 PassRefPtr<JSLazyEventListener> createInlineEventListener(Node* node, Attribute* attr) 156 { 157 ASSERT(node); 158 159 Document* document = node->document(); 160 161 Frame* frame = document->frame(); 162 if (!frame) 163 return 0; 164 165 ScriptController* scriptController = frame->script(); 166 if (!scriptController->isEnabled()) 167 return 0; 168 169 JSDOMWindow* globalObject = scriptController->globalObject(); 170 171 return JSLazyEventListener::create(attr->localName().string(), eventParameterName(node->isSVGElement()), attr->value(), globalObject, node, scriptController->eventHandlerLineNumber()); 172 } 173 174 PassRefPtr<JSLazyEventListener> createInlineEventListener(Frame* frame, Attribute* attr) 175 { 176 if (!frame) 177 return 0; 178 179 ScriptController* scriptController = frame->script(); 180 if (!scriptController->isEnabled()) 181 return 0; 182 183 JSDOMWindow* globalObject = scriptController->globalObject(); 184 185 return JSLazyEventListener::create(attr->localName().string(), eventParameterName(frame->document()->isSVGDocument()), attr->value(), globalObject, 0, scriptController->eventHandlerLineNumber()); 186 } 187 150 188 } // namespace WebCore -
trunk/WebCore/bindings/js/JSLazyEventListener.h
r42589 r42633 26 26 namespace WebCore { 27 27 28 class Attribute; 28 29 class Node; 29 30 … … 58 59 }; 59 60 61 PassRefPtr<JSLazyEventListener> createInlineEventListener(Node*, Attribute*); 62 PassRefPtr<JSLazyEventListener> createInlineEventListener(Frame*, Attribute*); 63 60 64 } // namespace WebCore 61 65 -
trunk/WebCore/dom/Document.cpp
r42589 r42633 2489 2489 RenderObject* r = static_cast<RenderObject*>(oldFocusedNode.get()->renderer()); 2490 2490 if (r && r->isTextControl() && toRenderTextControl(r)->isEdited()) { 2491 oldFocusedNode->dispatchEvent ForType(eventNames().changeEvent, true, false);2491 oldFocusedNode->dispatchEvent(eventNames().changeEvent, true, false); 2492 2492 if ((r = static_cast<RenderObject*>(oldFocusedNode.get()->renderer()))) { 2493 2493 if (r->isTextControl()) … … 2757 2757 { 2758 2758 return 0; 2759 }2760 2761 PassRefPtr<EventListener> Document::createEventListener(const String& functionName, const String& code, Node* node)2762 {2763 Frame* frm = frame();2764 if (!frm || !frm->script()->isEnabled())2765 return 0;2766 2767 DEFINE_STATIC_LOCAL(const String, eventString, ("event"));2768 2769 #if ENABLE(SVG)2770 DEFINE_STATIC_LOCAL(const String, evtString, ("evt"));2771 if (node ? node->isSVGElement() : isSVGDocument())2772 return JSLazyEventListener::create(functionName, evtString, code, frm->script()->globalObject(), node, frm->script()->eventHandlerLineNumber());2773 #endif2774 2775 return JSLazyEventListener::create(functionName, eventString, code, frm->script()->globalObject(), node, frm->script()->eventHandlerLineNumber());2776 }2777 2778 void Document::setWindowInlineEventListenerForTypeAndAttribute(const AtomicString& eventType, Attribute* attr)2779 {2780 DOMWindow* domWindow = this->domWindow();2781 if (!domWindow)2782 return;2783 domWindow->setInlineEventListenerForType(eventType, createEventListener(attr->localName().string(), attr->value(), 0));2784 2759 } 2785 2760 -
trunk/WebCore/dom/Document.h
r42446 r42633 305 305 #if ENABLE(SVG) 306 306 virtual bool isSVGDocument() const { return false; } 307 #else 308 static bool isSVGDocument() const { return false; } 307 309 #endif 308 310 virtual bool isPluginDocument() const { return false; } … … 576 578 void addListenerTypeIfNeeded(const AtomicString& eventType); 577 579 578 void setWindowInlineEventListenerForTypeAndAttribute(const AtomicString& eventType, Attribute*);579 580 PassRefPtr<EventListener> createEventListener(const String& functionName, const String& code, Node*);581 582 580 CSSStyleDeclaration* getOverrideStyle(Element*, const String& pseudoElt); 583 581 -
trunk/WebCore/dom/Element.cpp
r42377 r42633 1307 1307 } 1308 1308 1309 } 1309 void Element::setWindowInlineEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener) 1310 { 1311 DOMWindow* domWindow = document()->domWindow(); 1312 if (!domWindow) 1313 return; 1314 domWindow->setInlineEventListener(eventType, listener); 1315 } 1316 1317 } // namespace WebCore -
trunk/WebCore/dom/Element.h
r42107 r42633 230 230 ElementRareData* rareData() const; 231 231 ElementRareData* ensureRareData(); 232 void setWindowInlineEventListener(const AtomicString& eventType, PassRefPtr<EventListener>); 232 233 233 234 mutable RefPtr<NamedNodeMap> namedAttrMap; -
trunk/WebCore/dom/InputElement.cpp
r42377 r42633 149 149 150 150 // Fire the "input" DOM event 151 element->dispatchEvent ForType(eventNames().inputEvent, true, false);151 element->dispatchEvent(eventNames().inputEvent, true, false); 152 152 notifyFormStateChanged(data, document); 153 153 } -
trunk/WebCore/dom/Node.cpp
r42446 r42633 2765 2765 void Node::dispatchFocusEvent() 2766 2766 { 2767 dispatchEvent ForType(eventNames().focusEvent, false, false);2767 dispatchEvent(eventNames().focusEvent, false, false); 2768 2768 } 2769 2769 2770 2770 void Node::dispatchBlurEvent() 2771 2771 { 2772 dispatchEvent ForType(eventNames().blurEvent, false, false);2773 } 2774 2775 bool Node::dispatchEvent ForType(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg)2772 dispatchEvent(eventNames().blurEvent, false, false); 2773 } 2774 2775 bool Node::dispatchEvent(const AtomicString& eventType, bool canBubbleArg, bool cancelableArg) 2776 2776 { 2777 2777 ASSERT(!eventDispatchForbidden()); … … 2796 2796 } 2797 2797 2798 void Node:: removeInlineEventListenerForType(const AtomicString& eventType)2798 void Node::clearInlineEventListener(const AtomicString& eventType) 2799 2799 { 2800 2800 if (!hasRareData()) … … 2823 2823 } 2824 2824 2825 void Node::setInlineEventListenerForType(const AtomicString& eventType, PassRefPtr<EventListener> listener) 2826 { 2827 // In case we are the only one holding a reference to it, we don't want removeInlineEventListenerForType to destroy it. 2828 removeInlineEventListenerForType(eventType); 2825 void Node::setInlineEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener) 2826 { 2827 clearInlineEventListener(eventType); 2829 2828 if (listener) 2830 2829 addEventListener(eventType, listener, false); 2831 2830 } 2832 2831 2833 void Node::setInlineEventListenerForTypeAndAttribute(const AtomicString& eventType, Attribute* attr) 2834 { 2835 setInlineEventListenerForType(eventType, document()->createEventListener(attr->localName().string(), attr->value(), this)); 2836 } 2837 2838 EventListener* Node::inlineEventListenerForType(const AtomicString& eventType) const 2832 EventListener* Node::getInlineEventListener(const AtomicString& eventType) const 2839 2833 { 2840 2834 const RegisteredEventListenerVector& listeners = eventListeners(); … … 2878 2872 EventListener* Node::onabort() const 2879 2873 { 2880 return inlineEventListenerForType(eventNames().abortEvent);2874 return getInlineEventListener(eventNames().abortEvent); 2881 2875 } 2882 2876 2883 2877 void Node::setOnabort(PassRefPtr<EventListener> eventListener) 2884 2878 { 2885 setInlineEventListener ForType(eventNames().abortEvent, eventListener);2879 setInlineEventListener(eventNames().abortEvent, eventListener); 2886 2880 } 2887 2881 2888 2882 EventListener* Node::onblur() const 2889 2883 { 2890 return inlineEventListenerForType(eventNames().blurEvent);2884 return getInlineEventListener(eventNames().blurEvent); 2891 2885 } 2892 2886 2893 2887 void Node::setOnblur(PassRefPtr<EventListener> eventListener) 2894 2888 { 2895 setInlineEventListener ForType(eventNames().blurEvent, eventListener);2889 setInlineEventListener(eventNames().blurEvent, eventListener); 2896 2890 } 2897 2891 2898 2892 EventListener* Node::onchange() const 2899 2893 { 2900 return inlineEventListenerForType(eventNames().changeEvent);2894 return getInlineEventListener(eventNames().changeEvent); 2901 2895 } 2902 2896 2903 2897 void Node::setOnchange(PassRefPtr<EventListener> eventListener) 2904 2898 { 2905 setInlineEventListener ForType(eventNames().changeEvent, eventListener);2899 setInlineEventListener(eventNames().changeEvent, eventListener); 2906 2900 } 2907 2901 2908 2902 EventListener* Node::onclick() const 2909 2903 { 2910 return inlineEventListenerForType(eventNames().clickEvent);2904 return getInlineEventListener(eventNames().clickEvent); 2911 2905 } 2912 2906 2913 2907 void Node::setOnclick(PassRefPtr<EventListener> eventListener) 2914 2908 { 2915 setInlineEventListener ForType(eventNames().clickEvent, eventListener);2909 setInlineEventListener(eventNames().clickEvent, eventListener); 2916 2910 } 2917 2911 2918 2912 EventListener* Node::oncontextmenu() const 2919 2913 { 2920 return inlineEventListenerForType(eventNames().contextmenuEvent);2914 return getInlineEventListener(eventNames().contextmenuEvent); 2921 2915 } 2922 2916 2923 2917 void Node::setOncontextmenu(PassRefPtr<EventListener> eventListener) 2924 2918 { 2925 setInlineEventListener ForType(eventNames().contextmenuEvent, eventListener);2919 setInlineEventListener(eventNames().contextmenuEvent, eventListener); 2926 2920 } 2927 2921 2928 2922 EventListener* Node::ondblclick() const 2929 2923 { 2930 return inlineEventListenerForType(eventNames().dblclickEvent);2924 return getInlineEventListener(eventNames().dblclickEvent); 2931 2925 } 2932 2926 2933 2927 void Node::setOndblclick(PassRefPtr<EventListener> eventListener) 2934 2928 { 2935 setInlineEventListener ForType(eventNames().dblclickEvent, eventListener);2929 setInlineEventListener(eventNames().dblclickEvent, eventListener); 2936 2930 } 2937 2931 2938 2932 EventListener* Node::onerror() const 2939 2933 { 2940 return inlineEventListenerForType(eventNames().errorEvent);2934 return getInlineEventListener(eventNames().errorEvent); 2941 2935 } 2942 2936 2943 2937 void Node::setOnerror(PassRefPtr<EventListener> eventListener) 2944 2938 { 2945 setInlineEventListener ForType(eventNames().errorEvent, eventListener);2939 setInlineEventListener(eventNames().errorEvent, eventListener); 2946 2940 } 2947 2941 2948 2942 EventListener* Node::onfocus() const 2949 2943 { 2950 return inlineEventListenerForType(eventNames().focusEvent);2944 return getInlineEventListener(eventNames().focusEvent); 2951 2945 } 2952 2946 2953 2947 void Node::setOnfocus(PassRefPtr<EventListener> eventListener) 2954 2948 { 2955 setInlineEventListener ForType(eventNames().focusEvent, eventListener);2949 setInlineEventListener(eventNames().focusEvent, eventListener); 2956 2950 } 2957 2951 2958 2952 EventListener* Node::oninput() const 2959 2953 { 2960 return inlineEventListenerForType(eventNames().inputEvent);2954 return getInlineEventListener(eventNames().inputEvent); 2961 2955 } 2962 2956 2963 2957 void Node::setOninput(PassRefPtr<EventListener> eventListener) 2964 2958 { 2965 setInlineEventListener ForType(eventNames().inputEvent, eventListener);2959 setInlineEventListener(eventNames().inputEvent, eventListener); 2966 2960 } 2967 2961 2968 2962 EventListener* Node::onkeydown() const 2969 2963 { 2970 return inlineEventListenerForType(eventNames().keydownEvent);2964 return getInlineEventListener(eventNames().keydownEvent); 2971 2965 } 2972 2966 2973 2967 void Node::setOnkeydown(PassRefPtr<EventListener> eventListener) 2974 2968 { 2975 setInlineEventListener ForType(eventNames().keydownEvent, eventListener);2969 setInlineEventListener(eventNames().keydownEvent, eventListener); 2976 2970 } 2977 2971 2978 2972 EventListener* Node::onkeypress() const 2979 2973 { 2980 return inlineEventListenerForType(eventNames().keypressEvent);2974 return getInlineEventListener(eventNames().keypressEvent); 2981 2975 } 2982 2976 2983 2977 void Node::setOnkeypress(PassRefPtr<EventListener> eventListener) 2984 2978 { 2985 setInlineEventListener ForType(eventNames().keypressEvent, eventListener);2979 setInlineEventListener(eventNames().keypressEvent, eventListener); 2986 2980 } 2987 2981 2988 2982 EventListener* Node::onkeyup() const 2989 2983 { 2990 return inlineEventListenerForType(eventNames().keyupEvent);2984 return getInlineEventListener(eventNames().keyupEvent); 2991 2985 } 2992 2986 2993 2987 void Node::setOnkeyup(PassRefPtr<EventListener> eventListener) 2994 2988 { 2995 setInlineEventListener ForType(eventNames().keyupEvent, eventListener);2989 setInlineEventListener(eventNames().keyupEvent, eventListener); 2996 2990 } 2997 2991 2998 2992 EventListener* Node::onload() const 2999 2993 { 3000 return inlineEventListenerForType(eventNames().loadEvent);2994 return getInlineEventListener(eventNames().loadEvent); 3001 2995 } 3002 2996 3003 2997 void Node::setOnload(PassRefPtr<EventListener> eventListener) 3004 2998 { 3005 setInlineEventListener ForType(eventNames().loadEvent, eventListener);2999 setInlineEventListener(eventNames().loadEvent, eventListener); 3006 3000 } 3007 3001 3008 3002 EventListener* Node::onmousedown() const 3009 3003 { 3010 return inlineEventListenerForType(eventNames().mousedownEvent);3004 return getInlineEventListener(eventNames().mousedownEvent); 3011 3005 } 3012 3006 3013 3007 void Node::setOnmousedown(PassRefPtr<EventListener> eventListener) 3014 3008 { 3015 setInlineEventListener ForType(eventNames().mousedownEvent, eventListener);3009 setInlineEventListener(eventNames().mousedownEvent, eventListener); 3016 3010 } 3017 3011 3018 3012 EventListener* Node::onmousemove() const 3019 3013 { 3020 return inlineEventListenerForType(eventNames().mousemoveEvent);3014 return getInlineEventListener(eventNames().mousemoveEvent); 3021 3015 } 3022 3016 3023 3017 void Node::setOnmousemove(PassRefPtr<EventListener> eventListener) 3024 3018 { 3025 setInlineEventListener ForType(eventNames().mousemoveEvent, eventListener);3019 setInlineEventListener(eventNames().mousemoveEvent, eventListener); 3026 3020 } 3027 3021 3028 3022 EventListener* Node::onmouseout() const 3029 3023 { 3030 return inlineEventListenerForType(eventNames().mouseoutEvent);3024 return getInlineEventListener(eventNames().mouseoutEvent); 3031 3025 } 3032 3026 3033 3027 void Node::setOnmouseout(PassRefPtr<EventListener> eventListener) 3034 3028 { 3035 setInlineEventListener ForType(eventNames().mouseoutEvent, eventListener);3029 setInlineEventListener(eventNames().mouseoutEvent, eventListener); 3036 3030 } 3037 3031 3038 3032 EventListener* Node::onmouseover() const 3039 3033 { 3040 return inlineEventListenerForType(eventNames().mouseoverEvent);3034 return getInlineEventListener(eventNames().mouseoverEvent); 3041 3035 } 3042 3036 3043 3037 void Node::setOnmouseover(PassRefPtr<EventListener> eventListener) 3044 3038 { 3045 setInlineEventListener ForType(eventNames().mouseoverEvent, eventListener);3039 setInlineEventListener(eventNames().mouseoverEvent, eventListener); 3046 3040 } 3047 3041 3048 3042 EventListener* Node::onmouseup() const 3049 3043 { 3050 return inlineEventListenerForType(eventNames().mouseupEvent);3044 return getInlineEventListener(eventNames().mouseupEvent); 3051 3045 } 3052 3046 3053 3047 void Node::setOnmouseup(PassRefPtr<EventListener> eventListener) 3054 3048 { 3055 setInlineEventListener ForType(eventNames().mouseupEvent, eventListener);3049 setInlineEventListener(eventNames().mouseupEvent, eventListener); 3056 3050 } 3057 3051 3058 3052 EventListener* Node::onmousewheel() const 3059 3053 { 3060 return inlineEventListenerForType(eventNames().mousewheelEvent);3054 return getInlineEventListener(eventNames().mousewheelEvent); 3061 3055 } 3062 3056 3063 3057 void Node::setOnmousewheel(PassRefPtr<EventListener> eventListener) 3064 3058 { 3065 setInlineEventListener ForType(eventNames().mousewheelEvent, eventListener);3059 setInlineEventListener(eventNames().mousewheelEvent, eventListener); 3066 3060 } 3067 3061 3068 3062 EventListener* Node::onbeforecut() const 3069 3063 { 3070 return inlineEventListenerForType(eventNames().beforecutEvent);3064 return getInlineEventListener(eventNames().beforecutEvent); 3071 3065 } 3072 3066 3073 3067 void Node::setOnbeforecut(PassRefPtr<EventListener> eventListener) 3074 3068 { 3075 setInlineEventListener ForType(eventNames().beforecutEvent, eventListener);3069 setInlineEventListener(eventNames().beforecutEvent, eventListener); 3076 3070 } 3077 3071 3078 3072 EventListener* Node::oncut() const 3079 3073 { 3080 return inlineEventListenerForType(eventNames().cutEvent);3074 return getInlineEventListener(eventNames().cutEvent); 3081 3075 } 3082 3076 3083 3077 void Node::setOncut(PassRefPtr<EventListener> eventListener) 3084 3078 { 3085 setInlineEventListener ForType(eventNames().cutEvent, eventListener);3079 setInlineEventListener(eventNames().cutEvent, eventListener); 3086 3080 } 3087 3081 3088 3082 EventListener* Node::onbeforecopy() const 3089 3083 { 3090 return inlineEventListenerForType(eventNames().beforecopyEvent);3084 return getInlineEventListener(eventNames().beforecopyEvent); 3091 3085 } 3092 3086 3093 3087 void Node::setOnbeforecopy(PassRefPtr<EventListener> eventListener) 3094 3088 { 3095 setInlineEventListener ForType(eventNames().beforecopyEvent, eventListener);3089 setInlineEventListener(eventNames().beforecopyEvent, eventListener); 3096 3090 } 3097 3091 3098 3092 EventListener* Node::oncopy() const 3099 3093 { 3100 return inlineEventListenerForType(eventNames().copyEvent);3094 return getInlineEventListener(eventNames().copyEvent); 3101 3095 } 3102 3096 3103 3097 void Node::setOncopy(PassRefPtr<EventListener> eventListener) 3104 3098 { 3105 setInlineEventListener ForType(eventNames().copyEvent, eventListener);3099 setInlineEventListener(eventNames().copyEvent, eventListener); 3106 3100 } 3107 3101 3108 3102 EventListener* Node::onbeforepaste() const 3109 3103 { 3110 return inlineEventListenerForType(eventNames().beforepasteEvent);3104 return getInlineEventListener(eventNames().beforepasteEvent); 3111 3105 } 3112 3106 3113 3107 void Node::setOnbeforepaste(PassRefPtr<EventListener> eventListener) 3114 3108 { 3115 setInlineEventListener ForType(eventNames().beforepasteEvent, eventListener);3109 setInlineEventListener(eventNames().beforepasteEvent, eventListener); 3116 3110 } 3117 3111 3118 3112 EventListener* Node::onpaste() const 3119 3113 { 3120 return inlineEventListenerForType(eventNames().pasteEvent);3114 return getInlineEventListener(eventNames().pasteEvent); 3121 3115 } 3122 3116 3123 3117 void Node::setOnpaste(PassRefPtr<EventListener> eventListener) 3124 3118 { 3125 setInlineEventListener ForType(eventNames().pasteEvent, eventListener);3119 setInlineEventListener(eventNames().pasteEvent, eventListener); 3126 3120 } 3127 3121 3128 3122 EventListener* Node::ondragenter() const 3129 3123 { 3130 return inlineEventListenerForType(eventNames().dragenterEvent);3124 return getInlineEventListener(eventNames().dragenterEvent); 3131 3125 } 3132 3126 3133 3127 void Node::setOndragenter(PassRefPtr<EventListener> eventListener) 3134 3128 { 3135 setInlineEventListener ForType(eventNames().dragenterEvent, eventListener);3129 setInlineEventListener(eventNames().dragenterEvent, eventListener); 3136 3130 } 3137 3131 3138 3132 EventListener* Node::ondragover() const 3139 3133 { 3140 return inlineEventListenerForType(eventNames().dragoverEvent);3134 return getInlineEventListener(eventNames().dragoverEvent); 3141 3135 } 3142 3136 3143 3137 void Node::setOndragover(PassRefPtr<EventListener> eventListener) 3144 3138 { 3145 setInlineEventListener ForType(eventNames().dragoverEvent, eventListener);3139 setInlineEventListener(eventNames().dragoverEvent, eventListener); 3146 3140 } 3147 3141 3148 3142 EventListener* Node::ondragleave() const 3149 3143 { 3150 return inlineEventListenerForType(eventNames().dragleaveEvent);3144 return getInlineEventListener(eventNames().dragleaveEvent); 3151 3145 } 3152 3146 3153 3147 void Node::setOndragleave(PassRefPtr<EventListener> eventListener) 3154 3148 { 3155 setInlineEventListener ForType(eventNames().dragleaveEvent, eventListener);3149 setInlineEventListener(eventNames().dragleaveEvent, eventListener); 3156 3150 } 3157 3151 3158 3152 EventListener* Node::ondrop() const 3159 3153 { 3160 return inlineEventListenerForType(eventNames().dropEvent);3154 return getInlineEventListener(eventNames().dropEvent); 3161 3155 } 3162 3156 3163 3157 void Node::setOndrop(PassRefPtr<EventListener> eventListener) 3164 3158 { 3165 setInlineEventListener ForType(eventNames().dropEvent, eventListener);3159 setInlineEventListener(eventNames().dropEvent, eventListener); 3166 3160 } 3167 3161 3168 3162 EventListener* Node::ondragstart() const 3169 3163 { 3170 return inlineEventListenerForType(eventNames().dragstartEvent);3164 return getInlineEventListener(eventNames().dragstartEvent); 3171 3165 } 3172 3166 3173 3167 void Node::setOndragstart(PassRefPtr<EventListener> eventListener) 3174 3168 { 3175 setInlineEventListener ForType(eventNames().dragstartEvent, eventListener);3169 setInlineEventListener(eventNames().dragstartEvent, eventListener); 3176 3170 } 3177 3171 3178 3172 EventListener* Node::ondrag() const 3179 3173 { 3180 return inlineEventListenerForType(eventNames().dragEvent);3174 return getInlineEventListener(eventNames().dragEvent); 3181 3175 } 3182 3176 3183 3177 void Node::setOndrag(PassRefPtr<EventListener> eventListener) 3184 3178 { 3185 setInlineEventListener ForType(eventNames().dragEvent, eventListener);3179 setInlineEventListener(eventNames().dragEvent, eventListener); 3186 3180 } 3187 3181 3188 3182 EventListener* Node::ondragend() const 3189 3183 { 3190 return inlineEventListenerForType(eventNames().dragendEvent);3184 return getInlineEventListener(eventNames().dragendEvent); 3191 3185 } 3192 3186 3193 3187 void Node::setOndragend(PassRefPtr<EventListener> eventListener) 3194 3188 { 3195 setInlineEventListener ForType(eventNames().dragendEvent, eventListener);3189 setInlineEventListener(eventNames().dragendEvent, eventListener); 3196 3190 } 3197 3191 3198 3192 EventListener* Node::onreset() const 3199 3193 { 3200 return inlineEventListenerForType(eventNames().resetEvent);3194 return getInlineEventListener(eventNames().resetEvent); 3201 3195 } 3202 3196 3203 3197 void Node::setOnreset(PassRefPtr<EventListener> eventListener) 3204 3198 { 3205 setInlineEventListener ForType(eventNames().resetEvent, eventListener);3199 setInlineEventListener(eventNames().resetEvent, eventListener); 3206 3200 } 3207 3201 3208 3202 EventListener* Node::onresize() const 3209 3203 { 3210 return inlineEventListenerForType(eventNames().resizeEvent);3204 return getInlineEventListener(eventNames().resizeEvent); 3211 3205 } 3212 3206 3213 3207 void Node::setOnresize(PassRefPtr<EventListener> eventListener) 3214 3208 { 3215 setInlineEventListener ForType(eventNames().resizeEvent, eventListener);3209 setInlineEventListener(eventNames().resizeEvent, eventListener); 3216 3210 } 3217 3211 3218 3212 EventListener* Node::onscroll() const 3219 3213 { 3220 return inlineEventListenerForType(eventNames().scrollEvent);3214 return getInlineEventListener(eventNames().scrollEvent); 3221 3215 } 3222 3216 3223 3217 void Node::setOnscroll(PassRefPtr<EventListener> eventListener) 3224 3218 { 3225 setInlineEventListener ForType(eventNames().scrollEvent, eventListener);3219 setInlineEventListener(eventNames().scrollEvent, eventListener); 3226 3220 } 3227 3221 3228 3222 EventListener* Node::onsearch() const 3229 3223 { 3230 return inlineEventListenerForType(eventNames().searchEvent);3224 return getInlineEventListener(eventNames().searchEvent); 3231 3225 } 3232 3226 3233 3227 void Node::setOnsearch(PassRefPtr<EventListener> eventListener) 3234 3228 { 3235 setInlineEventListener ForType(eventNames().searchEvent, eventListener);3229 setInlineEventListener(eventNames().searchEvent, eventListener); 3236 3230 } 3237 3231 3238 3232 EventListener* Node::onselect() const 3239 3233 { 3240 return inlineEventListenerForType(eventNames().selectEvent);3234 return getInlineEventListener(eventNames().selectEvent); 3241 3235 } 3242 3236 3243 3237 void Node::setOnselect(PassRefPtr<EventListener> eventListener) 3244 3238 { 3245 setInlineEventListener ForType(eventNames().selectEvent, eventListener);3239 setInlineEventListener(eventNames().selectEvent, eventListener); 3246 3240 } 3247 3241 3248 3242 EventListener* Node::onselectstart() const 3249 3243 { 3250 return inlineEventListenerForType(eventNames().selectstartEvent);3244 return getInlineEventListener(eventNames().selectstartEvent); 3251 3245 } 3252 3246 3253 3247 void Node::setOnselectstart(PassRefPtr<EventListener> eventListener) 3254 3248 { 3255 setInlineEventListener ForType(eventNames().selectstartEvent, eventListener);3249 setInlineEventListener(eventNames().selectstartEvent, eventListener); 3256 3250 } 3257 3251 3258 3252 EventListener* Node::onsubmit() const 3259 3253 { 3260 return inlineEventListenerForType(eventNames().submitEvent);3254 return getInlineEventListener(eventNames().submitEvent); 3261 3255 } 3262 3256 3263 3257 void Node::setOnsubmit(PassRefPtr<EventListener> eventListener) 3264 3258 { 3265 setInlineEventListener ForType(eventNames().submitEvent, eventListener);3259 setInlineEventListener(eventNames().submitEvent, eventListener); 3266 3260 } 3267 3261 3268 3262 EventListener* Node::onunload() const 3269 3263 { 3270 return inlineEventListenerForType(eventNames().unloadEvent);3264 return getInlineEventListener(eventNames().unloadEvent); 3271 3265 } 3272 3266 3273 3267 void Node::setOnunload(PassRefPtr<EventListener> eventListener) 3274 3268 { 3275 setInlineEventListener ForType(eventNames().unloadEvent, eventListener);3269 setInlineEventListener(eventNames().unloadEvent, eventListener); 3276 3270 } 3277 3271 -
trunk/WebCore/dom/Node.h
r42446 r42633 516 516 virtual ScriptExecutionContext* scriptExecutionContext() const; 517 517 518 // Used for standard DOM addEventListener / removeEventListener APIs. 518 519 virtual void addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture); 519 520 virtual void removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture); 521 522 // Used for legacy "onEvent" property APIs. 523 void setInlineEventListener(const AtomicString& eventType, PassRefPtr<EventListener>); 524 void clearInlineEventListener(const AtomicString& eventType); 525 EventListener* getInlineEventListener(const AtomicString& eventType) const; 526 520 527 virtual bool dispatchEvent(PassRefPtr<Event>, ExceptionCode&); 528 bool dispatchEvent(const AtomicString& eventType, bool canBubble, bool cancelable); 529 521 530 void removeAllEventListeners() { if (hasRareData()) removeAllEventListenersSlowCase(); } 522 523 void setInlineEventListenerForType(const AtomicString& eventType, PassRefPtr<EventListener>);524 void setInlineEventListenerForTypeAndAttribute(const AtomicString& eventType, Attribute*);525 void removeInlineEventListenerForType(const AtomicString& eventType);526 bool dispatchEventForType(const AtomicString& eventType, bool canBubble, bool cancelable);527 EventListener* inlineEventListenerForType(const AtomicString& eventType) const;528 531 529 532 void dispatchSubtreeModifiedEvent(); -
trunk/WebCore/editing/ReplaceSelectionCommand.cpp
r42549 r42633 125 125 Node* shadowAncestorNode = editableRoot->shadowAncestorNode(); 126 126 127 if (!editableRoot-> inlineEventListenerForType(eventNames().webkitBeforeTextInsertedEvent) &&127 if (!editableRoot->getInlineEventListener(eventNames().webkitBeforeTextInsertedEvent) && 128 128 // FIXME: Remove these checks once textareas and textfields actually register an event handler. 129 129 !(shadowAncestorNode && shadowAncestorNode->renderer() && shadowAncestorNode->renderer()->isTextControl()) && -
trunk/WebCore/html/HTMLBodyElement.cpp
r42424 r42633 37 37 #include "HTMLFrameElementBase.h" 38 38 #include "HTMLNames.h" 39 #include "JSLazyEventListener.h" 39 40 40 41 namespace WebCore { … … 133 134 document()->recalcStyle(Force); 134 135 } else if (attr->name() == onloadAttr) 135 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().loadEvent, attr);136 setWindowInlineEventListener(eventNames().loadEvent, createInlineEventListener(document()->frame(), attr)); 136 137 else if (attr->name() == onbeforeunloadAttr) 137 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().beforeunloadEvent, attr);138 setWindowInlineEventListener(eventNames().beforeunloadEvent, createInlineEventListener(document()->frame(), attr)); 138 139 else if (attr->name() == onunloadAttr) 139 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().unloadEvent, attr);140 setWindowInlineEventListener(eventNames().unloadEvent, createInlineEventListener(document()->frame(), attr)); 140 141 else if (attr->name() == onblurAttr) 141 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().blurEvent, attr);142 setWindowInlineEventListener(eventNames().blurEvent, createInlineEventListener(document()->frame(), attr)); 142 143 else if (attr->name() == onfocusAttr) 143 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().focusEvent, attr);144 setWindowInlineEventListener(eventNames().focusEvent, createInlineEventListener(document()->frame(), attr)); 144 145 else if (attr->name() == onresizeAttr) 145 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().resizeEvent, attr);146 setWindowInlineEventListener(eventNames().resizeEvent, createInlineEventListener(document()->frame(), attr)); 146 147 else if (attr->name() == onscrollAttr) 147 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().scrollEvent, attr);148 setWindowInlineEventListener(eventNames().scrollEvent, createInlineEventListener(document()->frame(), attr)); 148 149 else if (attr->name() == onstorageAttr) { 149 150 // The HTML5 spec currently specifies that storage events are fired only at the body element of 150 151 // an HTMLDocument, which is why the onstorage attribute differs from the ones before it. 151 152 // The spec might change on this, and then so should we! 152 setInlineEventListener ForTypeAndAttribute(eventNames().storageEvent, attr);153 setInlineEventListener(eventNames().storageEvent, createInlineEventListener(document()->frame(), attr)); 153 154 } else 154 155 HTMLElement::parseMappedAttribute(attr); -
trunk/WebCore/html/HTMLButtonElement.cpp
r39601 r42633 31 31 #include "HTMLFormElement.h" 32 32 #include "HTMLNames.h" 33 #include "JSLazyEventListener.h" 33 34 #include "KeyboardEvent.h" 34 35 #include "RenderButton.h" … … 90 91 // See http://bugs.webkit.org/show_bug.cgi?id=12071 91 92 } else if (attr->name() == onfocusAttr) { 92 setInlineEventListener ForTypeAndAttribute(eventNames().focusEvent, attr);93 setInlineEventListener(eventNames().focusEvent, createInlineEventListener(this, attr)); 93 94 } else if (attr->name() == onblurAttr) { 94 setInlineEventListener ForTypeAndAttribute(eventNames().blurEvent, attr);95 setInlineEventListener(eventNames().blurEvent, createInlineEventListener(this, attr)); 95 96 } else 96 97 HTMLFormControlElement::parseMappedAttribute(attr); -
trunk/WebCore/html/HTMLElement.cpp
r42377 r42633 37 37 #include "HTMLFormElement.h" 38 38 #include "HTMLNames.h" 39 #include "HTMLTokenizer.h" // parseHTMLDocumentFragment 39 #include "HTMLTokenizer.h" 40 #include "JSLazyEventListener.h" 40 41 #include "RenderWordBreak.h" 41 42 #include "Settings.h" … … 142 143 // standard events 143 144 else if (attr->name() == onclickAttr) { 144 setInlineEventListener ForTypeAndAttribute(eventNames().clickEvent, attr);145 setInlineEventListener(eventNames().clickEvent, createInlineEventListener(this, attr)); 145 146 } else if (attr->name() == oncontextmenuAttr) { 146 setInlineEventListener ForTypeAndAttribute(eventNames().contextmenuEvent, attr);147 setInlineEventListener(eventNames().contextmenuEvent, createInlineEventListener(this, attr)); 147 148 } else if (attr->name() == ondblclickAttr) { 148 setInlineEventListener ForTypeAndAttribute(eventNames().dblclickEvent, attr);149 setInlineEventListener(eventNames().dblclickEvent, createInlineEventListener(this, attr)); 149 150 } else if (attr->name() == onmousedownAttr) { 150 setInlineEventListener ForTypeAndAttribute(eventNames().mousedownEvent, attr);151 setInlineEventListener(eventNames().mousedownEvent, createInlineEventListener(this, attr)); 151 152 } else if (attr->name() == onmousemoveAttr) { 152 setInlineEventListener ForTypeAndAttribute(eventNames().mousemoveEvent, attr);153 setInlineEventListener(eventNames().mousemoveEvent, createInlineEventListener(this, attr)); 153 154 } else if (attr->name() == onmouseoutAttr) { 154 setInlineEventListener ForTypeAndAttribute(eventNames().mouseoutEvent, attr);155 setInlineEventListener(eventNames().mouseoutEvent, createInlineEventListener(this, attr)); 155 156 } else if (attr->name() == onmouseoverAttr) { 156 setInlineEventListener ForTypeAndAttribute(eventNames().mouseoverEvent, attr);157 setInlineEventListener(eventNames().mouseoverEvent, createInlineEventListener(this, attr)); 157 158 } else if (attr->name() == onmouseupAttr) { 158 setInlineEventListener ForTypeAndAttribute(eventNames().mouseupEvent, attr);159 setInlineEventListener(eventNames().mouseupEvent, createInlineEventListener(this, attr)); 159 160 } else if (attr->name() == onmousewheelAttr) { 160 setInlineEventListener ForTypeAndAttribute(eventNames().mousewheelEvent, attr);161 setInlineEventListener(eventNames().mousewheelEvent, createInlineEventListener(this, attr)); 161 162 } else if (attr->name() == onfocusAttr) { 162 setInlineEventListener ForTypeAndAttribute(eventNames().focusEvent, attr);163 setInlineEventListener(eventNames().focusEvent, createInlineEventListener(this, attr)); 163 164 } else if (attr->name() == onblurAttr) { 164 setInlineEventListener ForTypeAndAttribute(eventNames().blurEvent, attr);165 setInlineEventListener(eventNames().blurEvent, createInlineEventListener(this, attr)); 165 166 } else if (attr->name() == onkeydownAttr) { 166 setInlineEventListener ForTypeAndAttribute(eventNames().keydownEvent, attr);167 setInlineEventListener(eventNames().keydownEvent, createInlineEventListener(this, attr)); 167 168 } else if (attr->name() == onkeypressAttr) { 168 setInlineEventListener ForTypeAndAttribute(eventNames().keypressEvent, attr);169 setInlineEventListener(eventNames().keypressEvent, createInlineEventListener(this, attr)); 169 170 } else if (attr->name() == onkeyupAttr) { 170 setInlineEventListener ForTypeAndAttribute(eventNames().keyupEvent, attr);171 setInlineEventListener(eventNames().keyupEvent, createInlineEventListener(this, attr)); 171 172 } else if (attr->name() == onscrollAttr) { 172 setInlineEventListener ForTypeAndAttribute(eventNames().scrollEvent, attr);173 setInlineEventListener(eventNames().scrollEvent, createInlineEventListener(this, attr)); 173 174 } else if (attr->name() == onbeforecutAttr) { 174 setInlineEventListener ForTypeAndAttribute(eventNames().beforecutEvent, attr);175 setInlineEventListener(eventNames().beforecutEvent, createInlineEventListener(this, attr)); 175 176 } else if (attr->name() == oncutAttr) { 176 setInlineEventListener ForTypeAndAttribute(eventNames().cutEvent, attr);177 setInlineEventListener(eventNames().cutEvent, createInlineEventListener(this, attr)); 177 178 } else if (attr->name() == onbeforecopyAttr) { 178 setInlineEventListener ForTypeAndAttribute(eventNames().beforecopyEvent, attr);179 setInlineEventListener(eventNames().beforecopyEvent, createInlineEventListener(this, attr)); 179 180 } else if (attr->name() == oncopyAttr) { 180 setInlineEventListener ForTypeAndAttribute(eventNames().copyEvent, attr);181 setInlineEventListener(eventNames().copyEvent, createInlineEventListener(this, attr)); 181 182 } else if (attr->name() == onbeforepasteAttr) { 182 setInlineEventListener ForTypeAndAttribute(eventNames().beforepasteEvent, attr);183 setInlineEventListener(eventNames().beforepasteEvent, createInlineEventListener(this, attr)); 183 184 } else if (attr->name() == onpasteAttr) { 184 setInlineEventListener ForTypeAndAttribute(eventNames().pasteEvent, attr);185 setInlineEventListener(eventNames().pasteEvent, createInlineEventListener(this, attr)); 185 186 } else if (attr->name() == ondragenterAttr) { 186 setInlineEventListener ForTypeAndAttribute(eventNames().dragenterEvent, attr);187 setInlineEventListener(eventNames().dragenterEvent, createInlineEventListener(this, attr)); 187 188 } else if (attr->name() == ondragoverAttr) { 188 setInlineEventListener ForTypeAndAttribute(eventNames().dragoverEvent, attr);189 setInlineEventListener(eventNames().dragoverEvent, createInlineEventListener(this, attr)); 189 190 } else if (attr->name() == ondragleaveAttr) { 190 setInlineEventListener ForTypeAndAttribute(eventNames().dragleaveEvent, attr);191 setInlineEventListener(eventNames().dragleaveEvent, createInlineEventListener(this, attr)); 191 192 } else if (attr->name() == ondropAttr) { 192 setInlineEventListener ForTypeAndAttribute(eventNames().dropEvent, attr);193 setInlineEventListener(eventNames().dropEvent, createInlineEventListener(this, attr)); 193 194 } else if (attr->name() == ondragstartAttr) { 194 setInlineEventListener ForTypeAndAttribute(eventNames().dragstartEvent, attr);195 setInlineEventListener(eventNames().dragstartEvent, createInlineEventListener(this, attr)); 195 196 } else if (attr->name() == ondragAttr) { 196 setInlineEventListener ForTypeAndAttribute(eventNames().dragEvent, attr);197 setInlineEventListener(eventNames().dragEvent, createInlineEventListener(this, attr)); 197 198 } else if (attr->name() == ondragendAttr) { 198 setInlineEventListener ForTypeAndAttribute(eventNames().dragendEvent, attr);199 setInlineEventListener(eventNames().dragendEvent, createInlineEventListener(this, attr)); 199 200 } else if (attr->name() == onselectstartAttr) { 200 setInlineEventListener ForTypeAndAttribute(eventNames().selectstartEvent, attr);201 setInlineEventListener(eventNames().selectstartEvent, createInlineEventListener(this, attr)); 201 202 } else if (attr->name() == onsubmitAttr) { 202 setInlineEventListener ForTypeAndAttribute(eventNames().submitEvent, attr);203 setInlineEventListener(eventNames().submitEvent, createInlineEventListener(this, attr)); 203 204 } else if (attr->name() == onerrorAttr) { 204 setInlineEventListener ForTypeAndAttribute(eventNames().errorEvent, attr);205 setInlineEventListener(eventNames().errorEvent, createInlineEventListener(this, attr)); 205 206 } else if (attr->name() == onwebkitanimationstartAttr) { 206 setInlineEventListener ForTypeAndAttribute(eventNames().webkitAnimationStartEvent, attr);207 setInlineEventListener(eventNames().webkitAnimationStartEvent, createInlineEventListener(this, attr)); 207 208 } else if (attr->name() == onwebkitanimationiterationAttr) { 208 setInlineEventListener ForTypeAndAttribute(eventNames().webkitAnimationIterationEvent, attr);209 setInlineEventListener(eventNames().webkitAnimationIterationEvent, createInlineEventListener(this, attr)); 209 210 } else if (attr->name() == onwebkitanimationendAttr) { 210 setInlineEventListener ForTypeAndAttribute(eventNames().webkitAnimationEndEvent, attr);211 setInlineEventListener(eventNames().webkitAnimationEndEvent, createInlineEventListener(this, attr)); 211 212 } else if (attr->name() == onwebkittransitionendAttr) { 212 setInlineEventListener ForTypeAndAttribute(eventNames().webkitTransitionEndEvent, attr);213 setInlineEventListener(eventNames().webkitTransitionEndEvent, createInlineEventListener(this, attr)); 213 214 } 214 215 } -
trunk/WebCore/html/HTMLFormControlElement.cpp
r42377 r42633 165 165 void HTMLFormControlElement::onChange() 166 166 { 167 dispatchEvent ForType(eventNames().changeEvent, true, false);167 dispatchEvent(eventNames().changeEvent, true, false); 168 168 } 169 169 -
trunk/WebCore/html/HTMLFormElement.cpp
r42586 r42633 43 43 #include "HTMLInputElement.h" 44 44 #include "HTMLNames.h" 45 #include "JSLazyEventListener.h" 45 46 #include "MIMETypeRegistry.h" 46 47 #include "Page.h" … … 298 299 m_doingsubmit = false; 299 300 300 if (dispatchEvent ForType(eventNames().submitEvent, true, true) && !m_doingsubmit)301 if (dispatchEvent(eventNames().submitEvent, true, true) && !m_doingsubmit) 301 302 m_doingsubmit = true; 302 303 … … 418 419 // ### DOM2 labels this event as not cancelable, however 419 420 // common browsers( sick! ) allow it be cancelled. 420 if ( !dispatchEvent ForType(eventNames().resetEvent,true, true) ) {421 if ( !dispatchEvent(eventNames().resetEvent,true, true) ) { 421 422 m_inreset = false; 422 423 return; … … 452 453 document()->unregisterForDocumentActivationCallbacks(this); 453 454 } else if (attr->name() == onsubmitAttr) 454 setInlineEventListener ForTypeAndAttribute(eventNames().submitEvent, attr);455 setInlineEventListener(eventNames().submitEvent, createInlineEventListener(this, attr)); 455 456 else if (attr->name() == onresetAttr) 456 setInlineEventListener ForTypeAndAttribute(eventNames().resetEvent, attr);457 setInlineEventListener(eventNames().resetEvent, createInlineEventListener(this, attr)); 457 458 else if (attr->name() == nameAttr) { 458 459 const AtomicString& newName = attr->value(); -
trunk/WebCore/html/HTMLFrameElementBase.cpp
r42192 r42633 35 35 #include "HTMLFrameSetElement.h" 36 36 #include "HTMLNames.h" 37 #include "JSLazyEventListener.h" 37 38 #include "KURL.h" 38 39 #include "Page.h" … … 141 142 contentFrame()->setInViewSourceMode(viewSourceMode()); 142 143 } else if (attr->name() == onloadAttr) { 143 setInlineEventListener ForTypeAndAttribute(eventNames().loadEvent, attr);144 setInlineEventListener(eventNames().loadEvent, createInlineEventListener(this, attr)); 144 145 } else if (attr->name() == onbeforeunloadAttr) { 145 146 // FIXME: should <frame> elements have beforeunload handlers? 146 setInlineEventListener ForTypeAndAttribute(eventNames().beforeunloadEvent, attr);147 setInlineEventListener(eventNames().beforeunloadEvent, createInlineEventListener(this, attr)); 147 148 } else 148 149 HTMLFrameOwnerElement::parseMappedAttribute(attr); -
trunk/WebCore/html/HTMLFrameSetElement.cpp
r42377 r42633 30 30 #include "EventNames.h" 31 31 #include "HTMLNames.h" 32 #include "JSLazyEventListener.h" 32 33 #include "Length.h" 33 34 #include "Length.h" … … 126 127 } 127 128 } else if (attr->name() == onloadAttr) { 128 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().loadEvent, attr);129 setWindowInlineEventListener(eventNames().loadEvent, createInlineEventListener(document()->frame(), attr)); 129 130 } else if (attr->name() == onbeforeunloadAttr) { 130 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().beforeunloadEvent, attr);131 setWindowInlineEventListener(eventNames().beforeunloadEvent, createInlineEventListener(document()->frame(), attr)); 131 132 } else if (attr->name() == onunloadAttr) { 132 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().unloadEvent, attr);133 setWindowInlineEventListener(eventNames().unloadEvent, createInlineEventListener(document()->frame(), attr)); 133 134 } else 134 135 HTMLElement::parseMappedAttribute(attr); -
trunk/WebCore/html/HTMLImageElement.cpp
r40638 r42633 31 31 #include "HTMLFormElement.h" 32 32 #include "HTMLNames.h" 33 #include "JSLazyEventListener.h" 33 34 #include "RenderImage.h" 34 35 … … 114 115 ismap = true; 115 116 else if (attrName == onabortAttr) 116 setInlineEventListener ForTypeAndAttribute(eventNames().abortEvent, attr);117 setInlineEventListener(eventNames().abortEvent, createInlineEventListener(this, attr)); 117 118 else if (attrName == onloadAttr) 118 setInlineEventListener ForTypeAndAttribute(eventNames().loadEvent, attr);119 setInlineEventListener(eventNames().loadEvent, createInlineEventListener(this, attr)); 119 120 else if (attrName == compositeAttr) { 120 121 if (!parseCompositeOperator(attr->value(), m_compositeOperator)) -
trunk/WebCore/html/HTMLImageLoader.cpp
r42189 r42633 46 46 if (!errorOccurred && image()->httpStatusCodeErrorOccurred()) 47 47 errorOccurred = element()->hasTagName(HTMLNames::objectTag); // An <object> considers a 404 to be an error and should fire onerror. 48 element()->dispatchEvent ForType(errorOccurred ? eventNames().errorEvent : eventNames().loadEvent, false, false);48 element()->dispatchEvent(errorOccurred ? eventNames().errorEvent : eventNames().loadEvent, false, false); 49 49 } 50 50 -
trunk/WebCore/html/HTMLInputElement.cpp
r42377 r42633 27 27 #include "HTMLInputElement.h" 28 28 29 #include "CSSPropertyNames.h" 29 30 #include "ChromeClient.h" 30 #include "CSSPropertyNames.h"31 31 #include "Document.h" 32 32 #include "Editor.h" … … 42 42 #include "HTMLImageLoader.h" 43 43 #include "HTMLNames.h" 44 #include "JSLazyEventListener.h" 44 45 #include "KeyboardEvent.h" 45 46 #include "LocalizedStrings.h" … … 588 589 addCSSLength(attr, CSSPropertyHeight, attr->value()); 589 590 } else if (attr->name() == onfocusAttr) { 590 setInlineEventListener ForTypeAndAttribute(eventNames().focusEvent, attr);591 setInlineEventListener(eventNames().focusEvent, createInlineEventListener(this, attr)); 591 592 } else if (attr->name() == onblurAttr) { 592 setInlineEventListener ForTypeAndAttribute(eventNames().blurEvent, attr);593 setInlineEventListener(eventNames().blurEvent, createInlineEventListener(this, attr)); 593 594 } else if (attr->name() == onselectAttr) { 594 setInlineEventListener ForTypeAndAttribute(eventNames().selectEvent, attr);595 setInlineEventListener(eventNames().selectEvent, createInlineEventListener(this, attr)); 595 596 } else if (attr->name() == onchangeAttr) { 596 setInlineEventListener ForTypeAndAttribute(eventNames().changeEvent, attr);597 setInlineEventListener(eventNames().changeEvent, createInlineEventListener(this, attr)); 597 598 } else if (attr->name() == oninputAttr) { 598 setInlineEventListener ForTypeAndAttribute(eventNames().inputEvent, attr);599 setInlineEventListener(eventNames().inputEvent, createInlineEventListener(this, attr)); 599 600 } 600 601 // Search field and slider attributes all just cause updateFromElement to be called through style 601 602 // recalcing. 602 603 else if (attr->name() == onsearchAttr) { 603 setInlineEventListener ForTypeAndAttribute(eventNames().searchEvent, attr);604 setInlineEventListener(eventNames().searchEvent, createInlineEventListener(this, attr)); 604 605 } else if (attr->name() == resultsAttr) { 605 606 int oldResults = m_maxResults; … … 1517 1518 if (renderer()) 1518 1519 static_cast<RenderTextControlSingleLine*>(renderer())->stopSearchEventTimer(); 1519 dispatchEvent ForType(eventNames().searchEvent, true, false);1520 dispatchEvent(eventNames().searchEvent, true, false); 1520 1521 } 1521 1522 -
trunk/WebCore/html/HTMLMediaElement.cpp
r42619 r42633 411 411 m_player->seek(0); 412 412 } 413 dispatchEvent ForType(eventNames().emptiedEvent, false, true);413 dispatchEvent(eventNames().emptiedEvent, false, true); 414 414 } 415 415 -
trunk/WebCore/html/HTMLObjectElement.cpp
r42377 r42633 33 33 #include "HTMLImageLoader.h" 34 34 #include "HTMLNames.h" 35 #include "JSLazyEventListener.h" 35 36 #include "MIMETypeRegistry.h" 36 37 #include "RenderImage.h" … … 40 41 #include "Settings.h" 41 42 #include "Text.h" 42 43 43 44 44 namespace WebCore { … … 96 96 m_needWidgetUpdate = true; 97 97 } else if (attr->name() == onloadAttr) { 98 setInlineEventListener ForTypeAndAttribute(eventNames().loadEvent, attr);98 setInlineEventListener(eventNames().loadEvent, createInlineEventListener(this, attr)); 99 99 } else if (attr->name() == nameAttr) { 100 100 const AtomicString& newName = attr->value(); -
trunk/WebCore/html/HTMLScriptElement.cpp
r39441 r42633 27 27 #include "EventNames.h" 28 28 #include "HTMLNames.h" 29 #include "JSLazyEventListener.h" 29 30 #include "Text.h" 30 31 … … 68 69 handleSourceAttribute(m_data, attr->value()); 69 70 else if (attrName == onloadAttr) 70 setInlineEventListener ForTypeAndAttribute(eventNames().loadEvent, attr);71 setInlineEventListener(eventNames().loadEvent, createInlineEventListener(this, attr)); 71 72 else 72 73 HTMLElement::parseMappedAttribute(attr); … … 216 217 m_data.setHaveFiredLoadEvent(true); 217 218 218 dispatchEvent ForType(eventNames().loadEvent, false, false);219 dispatchEvent(eventNames().loadEvent, false, false); 219 220 } 220 221 221 222 void HTMLScriptElement::dispatchErrorEvent() 222 223 { 223 dispatchEvent ForType(eventNames().errorEvent, true, false);224 } 225 226 } 224 dispatchEvent(eventNames().errorEvent, true, false); 225 } 226 227 } -
trunk/WebCore/html/HTMLSelectElement.cpp
r42377 r42633 43 43 #include "HTMLOptionElement.h" 44 44 #include "HTMLOptionsCollection.h" 45 #include "JSLazyEventListener.h" 45 46 #include "KeyboardEvent.h" 46 47 #include "MouseEvent.h" … … 327 328 // See http://bugs.webkit.org/show_bug.cgi?id=12072 328 329 } else if (attr->name() == onfocusAttr) { 329 setInlineEventListener ForTypeAndAttribute(eventNames().focusEvent, attr);330 setInlineEventListener(eventNames().focusEvent, createInlineEventListener(this, attr)); 330 331 } else if (attr->name() == onblurAttr) { 331 setInlineEventListener ForTypeAndAttribute(eventNames().blurEvent, attr);332 setInlineEventListener(eventNames().blurEvent, createInlineEventListener(this, attr)); 332 333 } else if (attr->name() == onchangeAttr) { 333 setInlineEventListener ForTypeAndAttribute(eventNames().changeEvent, attr);334 setInlineEventListener(eventNames().changeEvent, createInlineEventListener(this, attr)); 334 335 } else 335 336 HTMLFormControlElementWithState::parseMappedAttribute(attr); -
trunk/WebCore/html/HTMLTextAreaElement.cpp
r42377 r42633 35 35 #include "Frame.h" 36 36 #include "HTMLNames.h" 37 #include "JSLazyEventListener.h" 37 38 #include "Page.h" 38 39 #include "RenderStyle.h" … … 180 181 // See http://bugs.webkit.org/show_bug.cgi?id=7075 181 182 } else if (attr->name() == onfocusAttr) 182 setInlineEventListener ForTypeAndAttribute(eventNames().focusEvent, attr);183 setInlineEventListener(eventNames().focusEvent, createInlineEventListener(this, attr)); 183 184 else if (attr->name() == onblurAttr) 184 setInlineEventListener ForTypeAndAttribute(eventNames().blurEvent, attr);185 setInlineEventListener(eventNames().blurEvent, createInlineEventListener(this, attr)); 185 186 else if (attr->name() == onselectAttr) 186 setInlineEventListener ForTypeAndAttribute(eventNames().selectEvent, attr);187 setInlineEventListener(eventNames().selectEvent, createInlineEventListener(this, attr)); 187 188 else if (attr->name() == onchangeAttr) 188 setInlineEventListener ForTypeAndAttribute(eventNames().changeEvent, attr);189 setInlineEventListener(eventNames().changeEvent, createInlineEventListener(this, attr)); 189 190 else 190 191 HTMLFormControlElementWithState::parseMappedAttribute(attr); -
trunk/WebCore/html/HTMLTokenizer.cpp
r42589 r42633 1987 1987 1988 1988 if (errorOccurred) 1989 n->dispatchEvent ForType(eventNames().errorEvent, true, false);1989 n->dispatchEvent(eventNames().errorEvent, true, false); 1990 1990 else { 1991 1991 if (static_cast<HTMLScriptElement*>(n.get())->shouldExecuteAsJavaScript()) 1992 1992 m_state = scriptExecution(sourceCode, m_state); 1993 n->dispatchEvent ForType(eventNames().loadEvent, false, false);1993 n->dispatchEvent(eventNames().loadEvent, false, false); 1994 1994 } 1995 1995 -
trunk/WebCore/page/AccessibilityRenderObject.cpp
r42590 r42633 574 574 // FIXME: Do the continuation search like anchorElement does 575 575 for (Element* element = static_cast<Element*>(node); element; element = element->parentElement()) { 576 if (element-> inlineEventListenerForType(eventNames().clickEvent) || element->inlineEventListenerForType(eventNames().mousedownEvent) || element->inlineEventListenerForType(eventNames().mouseupEvent))576 if (element->getInlineEventListener(eventNames().clickEvent) || element->getInlineEventListener(eventNames().mousedownEvent) || element->getInlineEventListener(eventNames().mouseupEvent)) 577 577 return element; 578 578 } -
trunk/WebCore/page/DOMWindow.cpp
r42593 r42633 1069 1069 } 1070 1070 1071 void DOMWindow::setInlineEventListener ForType(const AtomicString& eventType, PassRefPtr<EventListener> eventListener)1072 { 1073 removeInlineEventListenerForType(eventType);1074 if ( eventListener)1075 addEventListener(eventType, eventListener, false);1076 } 1077 1078 void DOMWindow:: removeInlineEventListenerForType(const AtomicString& eventType)1071 void DOMWindow::setInlineEventListener(const AtomicString& eventType, PassRefPtr<EventListener> listener) 1072 { 1073 clearInlineEventListener(eventType); 1074 if (listener) 1075 addEventListener(eventType, listener, false); 1076 } 1077 1078 void DOMWindow::clearInlineEventListener(const AtomicString& eventType) 1079 1079 { 1080 1080 size_t size = m_eventListeners.size(); … … 1093 1093 } 1094 1094 1095 EventListener* DOMWindow:: inlineEventListenerForType(const AtomicString& eventType) const1095 EventListener* DOMWindow::getInlineEventListener(const AtomicString& eventType) const 1096 1096 { 1097 1097 size_t size = m_eventListeners.size(); … … 1130 1130 EventListener* DOMWindow::onabort() const 1131 1131 { 1132 return inlineEventListenerForType(eventNames().abortEvent);1132 return getInlineEventListener(eventNames().abortEvent); 1133 1133 } 1134 1134 1135 1135 void DOMWindow::setOnabort(PassRefPtr<EventListener> eventListener) 1136 1136 { 1137 setInlineEventListener ForType(eventNames().abortEvent, eventListener);1137 setInlineEventListener(eventNames().abortEvent, eventListener); 1138 1138 } 1139 1139 1140 1140 EventListener* DOMWindow::onblur() const 1141 1141 { 1142 return inlineEventListenerForType(eventNames().blurEvent);1142 return getInlineEventListener(eventNames().blurEvent); 1143 1143 } 1144 1144 1145 1145 void DOMWindow::setOnblur(PassRefPtr<EventListener> eventListener) 1146 1146 { 1147 setInlineEventListener ForType(eventNames().blurEvent, eventListener);1147 setInlineEventListener(eventNames().blurEvent, eventListener); 1148 1148 } 1149 1149 1150 1150 EventListener* DOMWindow::onchange() const 1151 1151 { 1152 return inlineEventListenerForType(eventNames().changeEvent);1152 return getInlineEventListener(eventNames().changeEvent); 1153 1153 } 1154 1154 1155 1155 void DOMWindow::setOnchange(PassRefPtr<EventListener> eventListener) 1156 1156 { 1157 setInlineEventListener ForType(eventNames().changeEvent, eventListener);1157 setInlineEventListener(eventNames().changeEvent, eventListener); 1158 1158 } 1159 1159 1160 1160 EventListener* DOMWindow::onclick() const 1161 1161 { 1162 return inlineEventListenerForType(eventNames().clickEvent);1162 return getInlineEventListener(eventNames().clickEvent); 1163 1163 } 1164 1164 1165 1165 void DOMWindow::setOnclick(PassRefPtr<EventListener> eventListener) 1166 1166 { 1167 setInlineEventListener ForType(eventNames().clickEvent, eventListener);1167 setInlineEventListener(eventNames().clickEvent, eventListener); 1168 1168 } 1169 1169 1170 1170 EventListener* DOMWindow::ondblclick() const 1171 1171 { 1172 return inlineEventListenerForType(eventNames().dblclickEvent);1172 return getInlineEventListener(eventNames().dblclickEvent); 1173 1173 } 1174 1174 1175 1175 void DOMWindow::setOndblclick(PassRefPtr<EventListener> eventListener) 1176 1176 { 1177 setInlineEventListener ForType(eventNames().dblclickEvent, eventListener);1177 setInlineEventListener(eventNames().dblclickEvent, eventListener); 1178 1178 } 1179 1179 1180 1180 EventListener* DOMWindow::onerror() const 1181 1181 { 1182 return inlineEventListenerForType(eventNames().errorEvent);1182 return getInlineEventListener(eventNames().errorEvent); 1183 1183 } 1184 1184 1185 1185 void DOMWindow::setOnerror(PassRefPtr<EventListener> eventListener) 1186 1186 { 1187 setInlineEventListener ForType(eventNames().errorEvent, eventListener);1187 setInlineEventListener(eventNames().errorEvent, eventListener); 1188 1188 } 1189 1189 1190 1190 EventListener* DOMWindow::onfocus() const 1191 1191 { 1192 return inlineEventListenerForType(eventNames().focusEvent);1192 return getInlineEventListener(eventNames().focusEvent); 1193 1193 } 1194 1194 1195 1195 void DOMWindow::setOnfocus(PassRefPtr<EventListener> eventListener) 1196 1196 { 1197 setInlineEventListener ForType(eventNames().focusEvent, eventListener);1197 setInlineEventListener(eventNames().focusEvent, eventListener); 1198 1198 } 1199 1199 1200 1200 EventListener* DOMWindow::onkeydown() const 1201 1201 { 1202 return inlineEventListenerForType(eventNames().keydownEvent);1202 return getInlineEventListener(eventNames().keydownEvent); 1203 1203 } 1204 1204 1205 1205 void DOMWindow::setOnkeydown(PassRefPtr<EventListener> eventListener) 1206 1206 { 1207 setInlineEventListener ForType(eventNames().keydownEvent, eventListener);1207 setInlineEventListener(eventNames().keydownEvent, eventListener); 1208 1208 } 1209 1209 1210 1210 EventListener* DOMWindow::onkeypress() const 1211 1211 { 1212 return inlineEventListenerForType(eventNames().keypressEvent);1212 return getInlineEventListener(eventNames().keypressEvent); 1213 1213 } 1214 1214 1215 1215 void DOMWindow::setOnkeypress(PassRefPtr<EventListener> eventListener) 1216 1216 { 1217 setInlineEventListener ForType(eventNames().keypressEvent, eventListener);1217 setInlineEventListener(eventNames().keypressEvent, eventListener); 1218 1218 } 1219 1219 1220 1220 EventListener* DOMWindow::onkeyup() const 1221 1221 { 1222 return inlineEventListenerForType(eventNames().keyupEvent);1222 return getInlineEventListener(eventNames().keyupEvent); 1223 1223 } 1224 1224 1225 1225 void DOMWindow::setOnkeyup(PassRefPtr<EventListener> eventListener) 1226 1226 { 1227 setInlineEventListener ForType(eventNames().keyupEvent, eventListener);1227 setInlineEventListener(eventNames().keyupEvent, eventListener); 1228 1228 } 1229 1229 1230 1230 EventListener* DOMWindow::onload() const 1231 1231 { 1232 return inlineEventListenerForType(eventNames().loadEvent);1232 return getInlineEventListener(eventNames().loadEvent); 1233 1233 } 1234 1234 1235 1235 void DOMWindow::setOnload(PassRefPtr<EventListener> eventListener) 1236 1236 { 1237 setInlineEventListener ForType(eventNames().loadEvent, eventListener);1237 setInlineEventListener(eventNames().loadEvent, eventListener); 1238 1238 } 1239 1239 1240 1240 EventListener* DOMWindow::onmousedown() const 1241 1241 { 1242 return inlineEventListenerForType(eventNames().mousedownEvent);1242 return getInlineEventListener(eventNames().mousedownEvent); 1243 1243 } 1244 1244 1245 1245 void DOMWindow::setOnmousedown(PassRefPtr<EventListener> eventListener) 1246 1246 { 1247 setInlineEventListener ForType(eventNames().mousedownEvent, eventListener);1247 setInlineEventListener(eventNames().mousedownEvent, eventListener); 1248 1248 } 1249 1249 1250 1250 EventListener* DOMWindow::onmousemove() const 1251 1251 { 1252 return inlineEventListenerForType(eventNames().mousemoveEvent);1252 return getInlineEventListener(eventNames().mousemoveEvent); 1253 1253 } 1254 1254 1255 1255 void DOMWindow::setOnmousemove(PassRefPtr<EventListener> eventListener) 1256 1256 { 1257 setInlineEventListener ForType(eventNames().mousemoveEvent, eventListener);1257 setInlineEventListener(eventNames().mousemoveEvent, eventListener); 1258 1258 } 1259 1259 1260 1260 EventListener* DOMWindow::onmouseout() const 1261 1261 { 1262 return inlineEventListenerForType(eventNames().mouseoutEvent);1262 return getInlineEventListener(eventNames().mouseoutEvent); 1263 1263 } 1264 1264 1265 1265 void DOMWindow::setOnmouseout(PassRefPtr<EventListener> eventListener) 1266 1266 { 1267 setInlineEventListener ForType(eventNames().mouseoutEvent, eventListener);1267 setInlineEventListener(eventNames().mouseoutEvent, eventListener); 1268 1268 } 1269 1269 1270 1270 EventListener* DOMWindow::onmouseover() const 1271 1271 { 1272 return inlineEventListenerForType(eventNames().mouseoverEvent);1272 return getInlineEventListener(eventNames().mouseoverEvent); 1273 1273 } 1274 1274 1275 1275 void DOMWindow::setOnmouseover(PassRefPtr<EventListener> eventListener) 1276 1276 { 1277 setInlineEventListener ForType(eventNames().mouseoverEvent, eventListener);1277 setInlineEventListener(eventNames().mouseoverEvent, eventListener); 1278 1278 } 1279 1279 1280 1280 EventListener* DOMWindow::onmouseup() const 1281 1281 { 1282 return inlineEventListenerForType(eventNames().mouseupEvent);1282 return getInlineEventListener(eventNames().mouseupEvent); 1283 1283 } 1284 1284 1285 1285 void DOMWindow::setOnmouseup(PassRefPtr<EventListener> eventListener) 1286 1286 { 1287 setInlineEventListener ForType(eventNames().mouseupEvent, eventListener);1287 setInlineEventListener(eventNames().mouseupEvent, eventListener); 1288 1288 } 1289 1289 1290 1290 EventListener* DOMWindow::onmousewheel() const 1291 1291 { 1292 return inlineEventListenerForType(eventNames().mousewheelEvent);1292 return getInlineEventListener(eventNames().mousewheelEvent); 1293 1293 } 1294 1294 1295 1295 void DOMWindow::setOnmousewheel(PassRefPtr<EventListener> eventListener) 1296 1296 { 1297 setInlineEventListener ForType(eventNames().mousewheelEvent, eventListener);1297 setInlineEventListener(eventNames().mousewheelEvent, eventListener); 1298 1298 } 1299 1299 1300 1300 EventListener* DOMWindow::onreset() const 1301 1301 { 1302 return inlineEventListenerForType(eventNames().resetEvent);1302 return getInlineEventListener(eventNames().resetEvent); 1303 1303 } 1304 1304 1305 1305 void DOMWindow::setOnreset(PassRefPtr<EventListener> eventListener) 1306 1306 { 1307 setInlineEventListener ForType(eventNames().resetEvent, eventListener);1307 setInlineEventListener(eventNames().resetEvent, eventListener); 1308 1308 } 1309 1309 1310 1310 EventListener* DOMWindow::onresize() const 1311 1311 { 1312 return inlineEventListenerForType(eventNames().resizeEvent);1312 return getInlineEventListener(eventNames().resizeEvent); 1313 1313 } 1314 1314 1315 1315 void DOMWindow::setOnresize(PassRefPtr<EventListener> eventListener) 1316 1316 { 1317 setInlineEventListener ForType(eventNames().resizeEvent, eventListener);1317 setInlineEventListener(eventNames().resizeEvent, eventListener); 1318 1318 } 1319 1319 1320 1320 EventListener* DOMWindow::onscroll() const 1321 1321 { 1322 return inlineEventListenerForType(eventNames().scrollEvent);1322 return getInlineEventListener(eventNames().scrollEvent); 1323 1323 } 1324 1324 1325 1325 void DOMWindow::setOnscroll(PassRefPtr<EventListener> eventListener) 1326 1326 { 1327 setInlineEventListener ForType(eventNames().scrollEvent, eventListener);1327 setInlineEventListener(eventNames().scrollEvent, eventListener); 1328 1328 } 1329 1329 1330 1330 EventListener* DOMWindow::onsearch() const 1331 1331 { 1332 return inlineEventListenerForType(eventNames().searchEvent);1332 return getInlineEventListener(eventNames().searchEvent); 1333 1333 } 1334 1334 1335 1335 void DOMWindow::setOnsearch(PassRefPtr<EventListener> eventListener) 1336 1336 { 1337 setInlineEventListener ForType(eventNames().searchEvent, eventListener);1337 setInlineEventListener(eventNames().searchEvent, eventListener); 1338 1338 } 1339 1339 1340 1340 EventListener* DOMWindow::onselect() const 1341 1341 { 1342 return inlineEventListenerForType(eventNames().selectEvent);1342 return getInlineEventListener(eventNames().selectEvent); 1343 1343 } 1344 1344 1345 1345 void DOMWindow::setOnselect(PassRefPtr<EventListener> eventListener) 1346 1346 { 1347 setInlineEventListener ForType(eventNames().selectEvent, eventListener);1347 setInlineEventListener(eventNames().selectEvent, eventListener); 1348 1348 } 1349 1349 1350 1350 EventListener* DOMWindow::onsubmit() const 1351 1351 { 1352 return inlineEventListenerForType(eventNames().submitEvent);1352 return getInlineEventListener(eventNames().submitEvent); 1353 1353 } 1354 1354 1355 1355 void DOMWindow::setOnsubmit(PassRefPtr<EventListener> eventListener) 1356 1356 { 1357 setInlineEventListener ForType(eventNames().submitEvent, eventListener);1357 setInlineEventListener(eventNames().submitEvent, eventListener); 1358 1358 } 1359 1359 1360 1360 EventListener* DOMWindow::onunload() const 1361 1361 { 1362 return inlineEventListenerForType(eventNames().unloadEvent);1362 return getInlineEventListener(eventNames().unloadEvent); 1363 1363 } 1364 1364 1365 1365 void DOMWindow::setOnunload(PassRefPtr<EventListener> eventListener) 1366 1366 { 1367 setInlineEventListener ForType(eventNames().unloadEvent, eventListener);1367 setInlineEventListener(eventNames().unloadEvent, eventListener); 1368 1368 } 1369 1369 1370 1370 EventListener* DOMWindow::onbeforeunload() const 1371 1371 { 1372 return inlineEventListenerForType(eventNames().beforeunloadEvent);1372 return getInlineEventListener(eventNames().beforeunloadEvent); 1373 1373 } 1374 1374 1375 1375 void DOMWindow::setOnbeforeunload(PassRefPtr<EventListener> eventListener) 1376 1376 { 1377 setInlineEventListener ForType(eventNames().beforeunloadEvent, eventListener);1377 setInlineEventListener(eventNames().beforeunloadEvent, eventListener); 1378 1378 } 1379 1379 1380 1380 EventListener* DOMWindow::onwebkitanimationstart() const 1381 1381 { 1382 return inlineEventListenerForType(eventNames().webkitAnimationStartEvent);1382 return getInlineEventListener(eventNames().webkitAnimationStartEvent); 1383 1383 } 1384 1384 1385 1385 void DOMWindow::setOnwebkitanimationstart(PassRefPtr<EventListener> eventListener) 1386 1386 { 1387 setInlineEventListener ForType(eventNames().webkitAnimationStartEvent, eventListener);1387 setInlineEventListener(eventNames().webkitAnimationStartEvent, eventListener); 1388 1388 } 1389 1389 1390 1390 EventListener* DOMWindow::onwebkitanimationiteration() const 1391 1391 { 1392 return inlineEventListenerForType(eventNames().webkitAnimationIterationEvent);1392 return getInlineEventListener(eventNames().webkitAnimationIterationEvent); 1393 1393 } 1394 1394 1395 1395 void DOMWindow::setOnwebkitanimationiteration(PassRefPtr<EventListener> eventListener) 1396 1396 { 1397 setInlineEventListener ForType(eventNames().webkitAnimationIterationEvent, eventListener);1397 setInlineEventListener(eventNames().webkitAnimationIterationEvent, eventListener); 1398 1398 } 1399 1399 1400 1400 EventListener* DOMWindow::onwebkitanimationend() const 1401 1401 { 1402 return inlineEventListenerForType(eventNames().webkitAnimationEndEvent);1402 return getInlineEventListener(eventNames().webkitAnimationEndEvent); 1403 1403 } 1404 1404 1405 1405 void DOMWindow::setOnwebkitanimationend(PassRefPtr<EventListener> eventListener) 1406 1406 { 1407 setInlineEventListener ForType(eventNames().webkitAnimationEndEvent, eventListener);1407 setInlineEventListener(eventNames().webkitAnimationEndEvent, eventListener); 1408 1408 } 1409 1409 1410 1410 EventListener* DOMWindow::onwebkittransitionend() const 1411 1411 { 1412 return inlineEventListenerForType(eventNames().webkitTransitionEndEvent);1412 return getInlineEventListener(eventNames().webkitTransitionEndEvent); 1413 1413 } 1414 1414 1415 1415 void DOMWindow::setOnwebkittransitionend(PassRefPtr<EventListener> eventListener) 1416 1416 { 1417 setInlineEventListener ForType(eventNames().webkitTransitionEndEvent, eventListener);1417 setInlineEventListener(eventNames().webkitTransitionEndEvent, eventListener); 1418 1418 } 1419 1419 -
trunk/WebCore/page/DOMWindow.h
r42545 r42633 205 205 void handleEvent(Event*, bool useCapture); 206 206 207 // Used for standard DOM addEventListener / removeEventListener APIs. 207 208 void addEventListener(const AtomicString& eventType, PassRefPtr<EventListener>, bool useCapture); 208 209 void removeEventListener(const AtomicString& eventType, EventListener*, bool useCapture); 210 211 // Used for legacy "onEvent" property APIs. 212 void setInlineEventListener(const AtomicString& eventType, PassRefPtr<EventListener>); 213 void clearInlineEventListener(const AtomicString& eventType); 214 EventListener* getInlineEventListener(const AtomicString& eventType) const; 215 216 const RegisteredEventListenerVector& eventListeners() const { return m_eventListeners; } 209 217 bool hasEventListener(const AtomicString& eventType); 210 218 void removeAllEventListeners(); 211 const RegisteredEventListenerVector& eventListeners() const { return m_eventListeners; }212 213 void setInlineEventListenerForType(const AtomicString& eventType, PassRefPtr<EventListener>);214 219 215 220 EventListener* onabort() const; … … 294 299 #endif 295 300 296 void removeInlineEventListenerForType(const AtomicString& eventType);297 EventListener* inlineEventListenerForType(const AtomicString& eventType) const;298 299 301 private: 300 302 DOMWindow(Frame*); -
trunk/WebCore/page/EventHandler.cpp
r42460 r42633 1777 1777 for (RenderObject* curr = node->renderer(); curr; curr = curr->parent()) { 1778 1778 if (Node* node = curr->node()) 1779 return node->dispatchEvent ForType(eventNames().selectstartEvent, true, true);1779 return node->dispatchEvent(eventNames().selectstartEvent, true, true); 1780 1780 } 1781 1781 … … 1790 1790 for (RenderObject* curr = node->renderer(); curr; curr = curr->parent()) { 1791 1791 if (Node* node = curr->node()) 1792 return node->dispatchEvent ForType(eventNames().selectstartEvent, true, true);1792 return node->dispatchEvent(eventNames().selectstartEvent, true, true); 1793 1793 } 1794 1794 … … 2376 2376 return; 2377 2377 v->setWasScrolledByUser(true); 2378 m_frame->document()->dispatchEvent ForType(eventNames().scrollEvent, true, false);2378 m_frame->document()->dispatchEvent(eventNames().scrollEvent, true, false); 2379 2379 } 2380 2380 -
trunk/WebCore/page/Page.cpp
r42084 r42633 100 100 eventTarget = document; 101 101 102 eventTarget->dispatchEvent ForType(eventName, false, false);102 eventTarget->dispatchEvent(eventName, false, false); 103 103 } 104 104 } -
trunk/WebCore/rendering/RenderListBox.cpp
r41233 r42633 528 528 repaint(); 529 529 // Fire the scroll DOM event. 530 node()->dispatchEvent ForType(eventNames().scrollEvent, false, false);530 node()->dispatchEvent(eventNames().scrollEvent, false, false); 531 531 } 532 532 } -
trunk/WebCore/rendering/RenderTextControl.cpp
r41792 r42633 517 517 if (Frame* frame = document()->frame()) { 518 518 if (frame->selection()->isRange() && userTriggered) 519 node()->dispatchEvent ForType(eventNames().selectEvent, true, false);519 node()->dispatchEvent(eventNames().selectEvent, true, false); 520 520 } 521 521 } -
trunk/WebCore/svg/SVGElement.cpp
r39818 r42633 34 34 #include "FrameView.h" 35 35 #include "HTMLNames.h" 36 #include "JSLazyEventListener.h" 36 37 #include "PlatformString.h" 37 38 #include "RegisteredEventListener.h" … … 151 152 // standard events 152 153 if (attr->name() == onloadAttr) 153 setInlineEventListener ForTypeAndAttribute(eventNames().loadEvent, attr);154 setInlineEventListener(eventNames().loadEvent, createInlineEventListener(this, attr)); 154 155 else if (attr->name() == onclickAttr) 155 setInlineEventListener ForTypeAndAttribute(eventNames().clickEvent, attr);156 setInlineEventListener(eventNames().clickEvent, createInlineEventListener(this, attr)); 156 157 else if (attr->name() == onmousedownAttr) 157 setInlineEventListener ForTypeAndAttribute(eventNames().mousedownEvent, attr);158 setInlineEventListener(eventNames().mousedownEvent, createInlineEventListener(this, attr)); 158 159 else if (attr->name() == onmousemoveAttr) 159 setInlineEventListener ForTypeAndAttribute(eventNames().mousemoveEvent, attr);160 setInlineEventListener(eventNames().mousemoveEvent, createInlineEventListener(this, attr)); 160 161 else if (attr->name() == onmouseoutAttr) 161 setInlineEventListener ForTypeAndAttribute(eventNames().mouseoutEvent, attr);162 setInlineEventListener(eventNames().mouseoutEvent, createInlineEventListener(this, attr)); 162 163 else if (attr->name() == onmouseoverAttr) 163 setInlineEventListener ForTypeAndAttribute(eventNames().mouseoverEvent, attr);164 setInlineEventListener(eventNames().mouseoverEvent, createInlineEventListener(this, attr)); 164 165 else if (attr->name() == onmouseupAttr) 165 setInlineEventListener ForTypeAndAttribute(eventNames().mouseupEvent, attr);166 setInlineEventListener(eventNames().mouseupEvent, createInlineEventListener(this, attr)); 166 167 else if (attr->name() == SVGNames::onfocusinAttr) 167 setInlineEventListener ForTypeAndAttribute(eventNames().DOMFocusInEvent, attr);168 setInlineEventListener(eventNames().DOMFocusInEvent, createInlineEventListener(this, attr)); 168 169 else if (attr->name() == SVGNames::onfocusoutAttr) 169 setInlineEventListener ForTypeAndAttribute(eventNames().DOMFocusOutEvent, attr);170 setInlineEventListener(eventNames().DOMFocusOutEvent, createInlineEventListener(this, attr)); 170 171 else if (attr->name() == SVGNames::onactivateAttr) 171 setInlineEventListener ForTypeAndAttribute(eventNames().DOMActivateEvent, attr);172 setInlineEventListener(eventNames().DOMActivateEvent, createInlineEventListener(this, attr)); 172 173 else 173 174 StyledElement::parseMappedAttribute(attr); -
trunk/WebCore/svg/SVGElementInstance.cpp
r42377 r42633 175 175 EventListener* SVGElementInstance::onabort() const 176 176 { 177 return correspondingElement()-> inlineEventListenerForType(eventNames().abortEvent);177 return correspondingElement()->getInlineEventListener(eventNames().abortEvent); 178 178 } 179 179 180 180 void SVGElementInstance::setOnabort(PassRefPtr<EventListener> eventListener) 181 181 { 182 correspondingElement()->setInlineEventListener ForType(eventNames().abortEvent, eventListener);182 correspondingElement()->setInlineEventListener(eventNames().abortEvent, eventListener); 183 183 } 184 184 185 185 EventListener* SVGElementInstance::onblur() const 186 186 { 187 return correspondingElement()-> inlineEventListenerForType(eventNames().blurEvent);187 return correspondingElement()->getInlineEventListener(eventNames().blurEvent); 188 188 } 189 189 190 190 void SVGElementInstance::setOnblur(PassRefPtr<EventListener> eventListener) 191 191 { 192 correspondingElement()->setInlineEventListener ForType(eventNames().blurEvent, eventListener);192 correspondingElement()->setInlineEventListener(eventNames().blurEvent, eventListener); 193 193 } 194 194 195 195 EventListener* SVGElementInstance::onchange() const 196 196 { 197 return correspondingElement()-> inlineEventListenerForType(eventNames().changeEvent);197 return correspondingElement()->getInlineEventListener(eventNames().changeEvent); 198 198 } 199 199 200 200 void SVGElementInstance::setOnchange(PassRefPtr<EventListener> eventListener) 201 201 { 202 correspondingElement()->setInlineEventListener ForType(eventNames().changeEvent, eventListener);202 correspondingElement()->setInlineEventListener(eventNames().changeEvent, eventListener); 203 203 } 204 204 205 205 EventListener* SVGElementInstance::onclick() const 206 206 { 207 return correspondingElement()-> inlineEventListenerForType(eventNames().clickEvent);207 return correspondingElement()->getInlineEventListener(eventNames().clickEvent); 208 208 } 209 209 210 210 void SVGElementInstance::setOnclick(PassRefPtr<EventListener> eventListener) 211 211 { 212 correspondingElement()->setInlineEventListener ForType(eventNames().clickEvent, eventListener);212 correspondingElement()->setInlineEventListener(eventNames().clickEvent, eventListener); 213 213 } 214 214 215 215 EventListener* SVGElementInstance::oncontextmenu() const 216 216 { 217 return correspondingElement()-> inlineEventListenerForType(eventNames().contextmenuEvent);217 return correspondingElement()->getInlineEventListener(eventNames().contextmenuEvent); 218 218 } 219 219 220 220 void SVGElementInstance::setOncontextmenu(PassRefPtr<EventListener> eventListener) 221 221 { 222 correspondingElement()->setInlineEventListener ForType(eventNames().contextmenuEvent, eventListener);222 correspondingElement()->setInlineEventListener(eventNames().contextmenuEvent, eventListener); 223 223 } 224 224 225 225 EventListener* SVGElementInstance::ondblclick() const 226 226 { 227 return correspondingElement()-> inlineEventListenerForType(eventNames().dblclickEvent);227 return correspondingElement()->getInlineEventListener(eventNames().dblclickEvent); 228 228 } 229 229 230 230 void SVGElementInstance::setOndblclick(PassRefPtr<EventListener> eventListener) 231 231 { 232 correspondingElement()->setInlineEventListener ForType(eventNames().dblclickEvent, eventListener);232 correspondingElement()->setInlineEventListener(eventNames().dblclickEvent, eventListener); 233 233 } 234 234 235 235 EventListener* SVGElementInstance::onerror() const 236 236 { 237 return correspondingElement()-> inlineEventListenerForType(eventNames().errorEvent);237 return correspondingElement()->getInlineEventListener(eventNames().errorEvent); 238 238 } 239 239 240 240 void SVGElementInstance::setOnerror(PassRefPtr<EventListener> eventListener) 241 241 { 242 correspondingElement()->setInlineEventListener ForType(eventNames().errorEvent, eventListener);242 correspondingElement()->setInlineEventListener(eventNames().errorEvent, eventListener); 243 243 } 244 244 245 245 EventListener* SVGElementInstance::onfocus() const 246 246 { 247 return correspondingElement()-> inlineEventListenerForType(eventNames().focusEvent);247 return correspondingElement()->getInlineEventListener(eventNames().focusEvent); 248 248 } 249 249 250 250 void SVGElementInstance::setOnfocus(PassRefPtr<EventListener> eventListener) 251 251 { 252 correspondingElement()->setInlineEventListener ForType(eventNames().focusEvent, eventListener);252 correspondingElement()->setInlineEventListener(eventNames().focusEvent, eventListener); 253 253 } 254 254 255 255 EventListener* SVGElementInstance::oninput() const 256 256 { 257 return correspondingElement()-> inlineEventListenerForType(eventNames().inputEvent);257 return correspondingElement()->getInlineEventListener(eventNames().inputEvent); 258 258 } 259 259 260 260 void SVGElementInstance::setOninput(PassRefPtr<EventListener> eventListener) 261 261 { 262 correspondingElement()->setInlineEventListener ForType(eventNames().inputEvent, eventListener);262 correspondingElement()->setInlineEventListener(eventNames().inputEvent, eventListener); 263 263 } 264 264 265 265 EventListener* SVGElementInstance::onkeydown() const 266 266 { 267 return correspondingElement()-> inlineEventListenerForType(eventNames().keydownEvent);267 return correspondingElement()->getInlineEventListener(eventNames().keydownEvent); 268 268 } 269 269 270 270 void SVGElementInstance::setOnkeydown(PassRefPtr<EventListener> eventListener) 271 271 { 272 correspondingElement()->setInlineEventListener ForType(eventNames().keydownEvent, eventListener);272 correspondingElement()->setInlineEventListener(eventNames().keydownEvent, eventListener); 273 273 } 274 274 275 275 EventListener* SVGElementInstance::onkeypress() const 276 276 { 277 return correspondingElement()-> inlineEventListenerForType(eventNames().keypressEvent);277 return correspondingElement()->getInlineEventListener(eventNames().keypressEvent); 278 278 } 279 279 280 280 void SVGElementInstance::setOnkeypress(PassRefPtr<EventListener> eventListener) 281 281 { 282 correspondingElement()->setInlineEventListener ForType(eventNames().keypressEvent, eventListener);282 correspondingElement()->setInlineEventListener(eventNames().keypressEvent, eventListener); 283 283 } 284 284 285 285 EventListener* SVGElementInstance::onkeyup() const 286 286 { 287 return correspondingElement()-> inlineEventListenerForType(eventNames().keyupEvent);287 return correspondingElement()->getInlineEventListener(eventNames().keyupEvent); 288 288 } 289 289 290 290 void SVGElementInstance::setOnkeyup(PassRefPtr<EventListener> eventListener) 291 291 { 292 correspondingElement()->setInlineEventListener ForType(eventNames().keyupEvent, eventListener);292 correspondingElement()->setInlineEventListener(eventNames().keyupEvent, eventListener); 293 293 } 294 294 295 295 EventListener* SVGElementInstance::onload() const 296 296 { 297 return correspondingElement()-> inlineEventListenerForType(eventNames().loadEvent);297 return correspondingElement()->getInlineEventListener(eventNames().loadEvent); 298 298 } 299 299 300 300 void SVGElementInstance::setOnload(PassRefPtr<EventListener> eventListener) 301 301 { 302 correspondingElement()->setInlineEventListener ForType(eventNames().loadEvent, eventListener);302 correspondingElement()->setInlineEventListener(eventNames().loadEvent, eventListener); 303 303 } 304 304 305 305 EventListener* SVGElementInstance::onmousedown() const 306 306 { 307 return correspondingElement()-> inlineEventListenerForType(eventNames().mousedownEvent);307 return correspondingElement()->getInlineEventListener(eventNames().mousedownEvent); 308 308 } 309 309 310 310 void SVGElementInstance::setOnmousedown(PassRefPtr<EventListener> eventListener) 311 311 { 312 correspondingElement()->setInlineEventListener ForType(eventNames().mousedownEvent, eventListener);312 correspondingElement()->setInlineEventListener(eventNames().mousedownEvent, eventListener); 313 313 } 314 314 315 315 EventListener* SVGElementInstance::onmousemove() const 316 316 { 317 return correspondingElement()-> inlineEventListenerForType(eventNames().mousemoveEvent);317 return correspondingElement()->getInlineEventListener(eventNames().mousemoveEvent); 318 318 } 319 319 320 320 void SVGElementInstance::setOnmousemove(PassRefPtr<EventListener> eventListener) 321 321 { 322 correspondingElement()->setInlineEventListener ForType(eventNames().mousemoveEvent, eventListener);322 correspondingElement()->setInlineEventListener(eventNames().mousemoveEvent, eventListener); 323 323 } 324 324 325 325 EventListener* SVGElementInstance::onmouseout() const 326 326 { 327 return correspondingElement()-> inlineEventListenerForType(eventNames().mouseoutEvent);327 return correspondingElement()->getInlineEventListener(eventNames().mouseoutEvent); 328 328 } 329 329 330 330 void SVGElementInstance::setOnmouseout(PassRefPtr<EventListener> eventListener) 331 331 { 332 correspondingElement()->setInlineEventListener ForType(eventNames().mouseoutEvent, eventListener);332 correspondingElement()->setInlineEventListener(eventNames().mouseoutEvent, eventListener); 333 333 } 334 334 335 335 EventListener* SVGElementInstance::onmouseover() const 336 336 { 337 return correspondingElement()-> inlineEventListenerForType(eventNames().mouseoverEvent);337 return correspondingElement()->getInlineEventListener(eventNames().mouseoverEvent); 338 338 } 339 339 340 340 void SVGElementInstance::setOnmouseover(PassRefPtr<EventListener> eventListener) 341 341 { 342 correspondingElement()->setInlineEventListener ForType(eventNames().mouseoverEvent, eventListener);342 correspondingElement()->setInlineEventListener(eventNames().mouseoverEvent, eventListener); 343 343 } 344 344 345 345 EventListener* SVGElementInstance::onmouseup() const 346 346 { 347 return correspondingElement()-> inlineEventListenerForType(eventNames().mouseupEvent);347 return correspondingElement()->getInlineEventListener(eventNames().mouseupEvent); 348 348 } 349 349 350 350 void SVGElementInstance::setOnmouseup(PassRefPtr<EventListener> eventListener) 351 351 { 352 correspondingElement()->setInlineEventListener ForType(eventNames().mouseupEvent, eventListener);352 correspondingElement()->setInlineEventListener(eventNames().mouseupEvent, eventListener); 353 353 } 354 354 355 355 EventListener* SVGElementInstance::onmousewheel() const 356 356 { 357 return correspondingElement()-> inlineEventListenerForType(eventNames().mousewheelEvent);357 return correspondingElement()->getInlineEventListener(eventNames().mousewheelEvent); 358 358 } 359 359 360 360 void SVGElementInstance::setOnmousewheel(PassRefPtr<EventListener> eventListener) 361 361 { 362 correspondingElement()->setInlineEventListener ForType(eventNames().mousewheelEvent, eventListener);362 correspondingElement()->setInlineEventListener(eventNames().mousewheelEvent, eventListener); 363 363 } 364 364 365 365 EventListener* SVGElementInstance::onbeforecut() const 366 366 { 367 return correspondingElement()-> inlineEventListenerForType(eventNames().beforecutEvent);367 return correspondingElement()->getInlineEventListener(eventNames().beforecutEvent); 368 368 } 369 369 370 370 void SVGElementInstance::setOnbeforecut(PassRefPtr<EventListener> eventListener) 371 371 { 372 correspondingElement()->setInlineEventListener ForType(eventNames().beforecutEvent, eventListener);372 correspondingElement()->setInlineEventListener(eventNames().beforecutEvent, eventListener); 373 373 } 374 374 375 375 EventListener* SVGElementInstance::oncut() const 376 376 { 377 return correspondingElement()-> inlineEventListenerForType(eventNames().cutEvent);377 return correspondingElement()->getInlineEventListener(eventNames().cutEvent); 378 378 } 379 379 380 380 void SVGElementInstance::setOncut(PassRefPtr<EventListener> eventListener) 381 381 { 382 correspondingElement()->setInlineEventListener ForType(eventNames().cutEvent, eventListener);382 correspondingElement()->setInlineEventListener(eventNames().cutEvent, eventListener); 383 383 } 384 384 385 385 EventListener* SVGElementInstance::onbeforecopy() const 386 386 { 387 return correspondingElement()-> inlineEventListenerForType(eventNames().beforecopyEvent);387 return correspondingElement()->getInlineEventListener(eventNames().beforecopyEvent); 388 388 } 389 389 390 390 void SVGElementInstance::setOnbeforecopy(PassRefPtr<EventListener> eventListener) 391 391 { 392 correspondingElement()->setInlineEventListener ForType(eventNames().beforecopyEvent, eventListener);392 correspondingElement()->setInlineEventListener(eventNames().beforecopyEvent, eventListener); 393 393 } 394 394 395 395 EventListener* SVGElementInstance::oncopy() const 396 396 { 397 return correspondingElement()-> inlineEventListenerForType(eventNames().copyEvent);397 return correspondingElement()->getInlineEventListener(eventNames().copyEvent); 398 398 } 399 399 400 400 void SVGElementInstance::setOncopy(PassRefPtr<EventListener> eventListener) 401 401 { 402 correspondingElement()->setInlineEventListener ForType(eventNames().copyEvent, eventListener);402 correspondingElement()->setInlineEventListener(eventNames().copyEvent, eventListener); 403 403 } 404 404 405 405 EventListener* SVGElementInstance::onbeforepaste() const 406 406 { 407 return correspondingElement()-> inlineEventListenerForType(eventNames().beforepasteEvent);407 return correspondingElement()->getInlineEventListener(eventNames().beforepasteEvent); 408 408 } 409 409 410 410 void SVGElementInstance::setOnbeforepaste(PassRefPtr<EventListener> eventListener) 411 411 { 412 correspondingElement()->setInlineEventListener ForType(eventNames().beforepasteEvent, eventListener);412 correspondingElement()->setInlineEventListener(eventNames().beforepasteEvent, eventListener); 413 413 } 414 414 415 415 EventListener* SVGElementInstance::onpaste() const 416 416 { 417 return correspondingElement()-> inlineEventListenerForType(eventNames().pasteEvent);417 return correspondingElement()->getInlineEventListener(eventNames().pasteEvent); 418 418 } 419 419 420 420 void SVGElementInstance::setOnpaste(PassRefPtr<EventListener> eventListener) 421 421 { 422 correspondingElement()->setInlineEventListener ForType(eventNames().pasteEvent, eventListener);422 correspondingElement()->setInlineEventListener(eventNames().pasteEvent, eventListener); 423 423 } 424 424 425 425 EventListener* SVGElementInstance::ondragenter() const 426 426 { 427 return correspondingElement()-> inlineEventListenerForType(eventNames().dragenterEvent);427 return correspondingElement()->getInlineEventListener(eventNames().dragenterEvent); 428 428 } 429 429 430 430 void SVGElementInstance::setOndragenter(PassRefPtr<EventListener> eventListener) 431 431 { 432 correspondingElement()->setInlineEventListener ForType(eventNames().dragenterEvent, eventListener);432 correspondingElement()->setInlineEventListener(eventNames().dragenterEvent, eventListener); 433 433 } 434 434 435 435 EventListener* SVGElementInstance::ondragover() const 436 436 { 437 return correspondingElement()-> inlineEventListenerForType(eventNames().dragoverEvent);437 return correspondingElement()->getInlineEventListener(eventNames().dragoverEvent); 438 438 } 439 439 440 440 void SVGElementInstance::setOndragover(PassRefPtr<EventListener> eventListener) 441 441 { 442 correspondingElement()->setInlineEventListener ForType(eventNames().dragoverEvent, eventListener);442 correspondingElement()->setInlineEventListener(eventNames().dragoverEvent, eventListener); 443 443 } 444 444 445 445 EventListener* SVGElementInstance::ondragleave() const 446 446 { 447 return correspondingElement()-> inlineEventListenerForType(eventNames().dragleaveEvent);447 return correspondingElement()->getInlineEventListener(eventNames().dragleaveEvent); 448 448 } 449 449 450 450 void SVGElementInstance::setOndragleave(PassRefPtr<EventListener> eventListener) 451 451 { 452 correspondingElement()->setInlineEventListener ForType(eventNames().dragleaveEvent, eventListener);452 correspondingElement()->setInlineEventListener(eventNames().dragleaveEvent, eventListener); 453 453 } 454 454 455 455 EventListener* SVGElementInstance::ondrop() const 456 456 { 457 return correspondingElement()-> inlineEventListenerForType(eventNames().dropEvent);457 return correspondingElement()->getInlineEventListener(eventNames().dropEvent); 458 458 } 459 459 460 460 void SVGElementInstance::setOndrop(PassRefPtr<EventListener> eventListener) 461 461 { 462 correspondingElement()->setInlineEventListener ForType(eventNames().dropEvent, eventListener);462 correspondingElement()->setInlineEventListener(eventNames().dropEvent, eventListener); 463 463 } 464 464 465 465 EventListener* SVGElementInstance::ondragstart() const 466 466 { 467 return correspondingElement()-> inlineEventListenerForType(eventNames().dragstartEvent);467 return correspondingElement()->getInlineEventListener(eventNames().dragstartEvent); 468 468 } 469 469 470 470 void SVGElementInstance::setOndragstart(PassRefPtr<EventListener> eventListener) 471 471 { 472 correspondingElement()->setInlineEventListener ForType(eventNames().dragstartEvent, eventListener);472 correspondingElement()->setInlineEventListener(eventNames().dragstartEvent, eventListener); 473 473 } 474 474 475 475 EventListener* SVGElementInstance::ondrag() const 476 476 { 477 return correspondingElement()-> inlineEventListenerForType(eventNames().dragEvent);477 return correspondingElement()->getInlineEventListener(eventNames().dragEvent); 478 478 } 479 479 480 480 void SVGElementInstance::setOndrag(PassRefPtr<EventListener> eventListener) 481 481 { 482 correspondingElement()->setInlineEventListener ForType(eventNames().dragEvent, eventListener);482 correspondingElement()->setInlineEventListener(eventNames().dragEvent, eventListener); 483 483 } 484 484 485 485 EventListener* SVGElementInstance::ondragend() const 486 486 { 487 return correspondingElement()-> inlineEventListenerForType(eventNames().dragendEvent);487 return correspondingElement()->getInlineEventListener(eventNames().dragendEvent); 488 488 } 489 489 490 490 void SVGElementInstance::setOndragend(PassRefPtr<EventListener> eventListener) 491 491 { 492 correspondingElement()->setInlineEventListener ForType(eventNames().dragendEvent, eventListener);492 correspondingElement()->setInlineEventListener(eventNames().dragendEvent, eventListener); 493 493 } 494 494 495 495 EventListener* SVGElementInstance::onreset() const 496 496 { 497 return correspondingElement()-> inlineEventListenerForType(eventNames().resetEvent);497 return correspondingElement()->getInlineEventListener(eventNames().resetEvent); 498 498 } 499 499 500 500 void SVGElementInstance::setOnreset(PassRefPtr<EventListener> eventListener) 501 501 { 502 correspondingElement()->setInlineEventListener ForType(eventNames().resetEvent, eventListener);502 correspondingElement()->setInlineEventListener(eventNames().resetEvent, eventListener); 503 503 } 504 504 505 505 EventListener* SVGElementInstance::onresize() const 506 506 { 507 return correspondingElement()-> inlineEventListenerForType(eventNames().resizeEvent);507 return correspondingElement()->getInlineEventListener(eventNames().resizeEvent); 508 508 } 509 509 510 510 void SVGElementInstance::setOnresize(PassRefPtr<EventListener> eventListener) 511 511 { 512 correspondingElement()->setInlineEventListener ForType(eventNames().resizeEvent, eventListener);512 correspondingElement()->setInlineEventListener(eventNames().resizeEvent, eventListener); 513 513 } 514 514 515 515 EventListener* SVGElementInstance::onscroll() const 516 516 { 517 return correspondingElement()-> inlineEventListenerForType(eventNames().scrollEvent);517 return correspondingElement()->getInlineEventListener(eventNames().scrollEvent); 518 518 } 519 519 520 520 void SVGElementInstance::setOnscroll(PassRefPtr<EventListener> eventListener) 521 521 { 522 correspondingElement()->setInlineEventListener ForType(eventNames().scrollEvent, eventListener);522 correspondingElement()->setInlineEventListener(eventNames().scrollEvent, eventListener); 523 523 } 524 524 525 525 EventListener* SVGElementInstance::onsearch() const 526 526 { 527 return correspondingElement()-> inlineEventListenerForType(eventNames().searchEvent);527 return correspondingElement()->getInlineEventListener(eventNames().searchEvent); 528 528 } 529 529 530 530 void SVGElementInstance::setOnsearch(PassRefPtr<EventListener> eventListener) 531 531 { 532 correspondingElement()->setInlineEventListener ForType(eventNames().searchEvent, eventListener);532 correspondingElement()->setInlineEventListener(eventNames().searchEvent, eventListener); 533 533 } 534 534 535 535 EventListener* SVGElementInstance::onselect() const 536 536 { 537 return correspondingElement()-> inlineEventListenerForType(eventNames().selectEvent);537 return correspondingElement()->getInlineEventListener(eventNames().selectEvent); 538 538 } 539 539 540 540 void SVGElementInstance::setOnselect(PassRefPtr<EventListener> eventListener) 541 541 { 542 correspondingElement()->setInlineEventListener ForType(eventNames().selectEvent, eventListener);542 correspondingElement()->setInlineEventListener(eventNames().selectEvent, eventListener); 543 543 } 544 544 545 545 EventListener* SVGElementInstance::onselectstart() const 546 546 { 547 return correspondingElement()-> inlineEventListenerForType(eventNames().selectstartEvent);547 return correspondingElement()->getInlineEventListener(eventNames().selectstartEvent); 548 548 } 549 549 550 550 void SVGElementInstance::setOnselectstart(PassRefPtr<EventListener> eventListener) 551 551 { 552 correspondingElement()->setInlineEventListener ForType(eventNames().selectstartEvent, eventListener);552 correspondingElement()->setInlineEventListener(eventNames().selectstartEvent, eventListener); 553 553 } 554 554 555 555 EventListener* SVGElementInstance::onsubmit() const 556 556 { 557 return correspondingElement()-> inlineEventListenerForType(eventNames().submitEvent);557 return correspondingElement()->getInlineEventListener(eventNames().submitEvent); 558 558 } 559 559 560 560 void SVGElementInstance::setOnsubmit(PassRefPtr<EventListener> eventListener) 561 561 { 562 correspondingElement()->setInlineEventListener ForType(eventNames().submitEvent, eventListener);562 correspondingElement()->setInlineEventListener(eventNames().submitEvent, eventListener); 563 563 } 564 564 565 565 EventListener* SVGElementInstance::onunload() const 566 566 { 567 return correspondingElement()-> inlineEventListenerForType(eventNames().unloadEvent);567 return correspondingElement()->getInlineEventListener(eventNames().unloadEvent); 568 568 } 569 569 570 570 void SVGElementInstance::setOnunload(PassRefPtr<EventListener> eventListener) 571 571 { 572 correspondingElement()->setInlineEventListener ForType(eventNames().unloadEvent, eventListener);572 correspondingElement()->setInlineEventListener(eventNames().unloadEvent, eventListener); 573 573 } 574 574 -
trunk/WebCore/svg/SVGImageLoader.cpp
r41766 r42633 44 44 { 45 45 if (image()->errorOccurred()) 46 element()->dispatchEvent ForType(eventNames().errorEvent, false, false);46 element()->dispatchEvent(eventNames().errorEvent, false, false); 47 47 else { 48 48 SVGImageElement* imageElement = static_cast<SVGImageElement*>(element()); -
trunk/WebCore/svg/SVGSVGElement.cpp
r42374 r42633 35 35 #include "Frame.h" 36 36 #include "HTMLNames.h" 37 #include "JSLazyEventListener.h" 37 38 #include "RenderSVGViewportContainer.h" 38 39 #include "RenderSVGRoot.h" … … 221 222 // Only handle events if we're the outermost <svg> element 222 223 if (attr->name() == onunloadAttr) 223 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().unloadEvent, attr);224 setWindowInlineEventListener(eventNames().unloadEvent, createInlineEventListener(document()->frame(), attr)); 224 225 else if (attr->name() == onresizeAttr) 225 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().resizeEvent, attr);226 setWindowInlineEventListener(eventNames().resizeEvent, createInlineEventListener(document()->frame(), attr)); 226 227 else if (attr->name() == onscrollAttr) 227 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().scrollEvent, attr);228 setWindowInlineEventListener(eventNames().scrollEvent, createInlineEventListener(document()->frame(), attr)); 228 229 else if (attr->name() == SVGNames::onzoomAttr) 229 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().zoomEvent, attr);230 setWindowInlineEventListener(eventNames().zoomEvent, createInlineEventListener(document()->frame(), attr)); 230 231 else 231 232 setListener = false; … … 236 237 237 238 if (attr->name() == onabortAttr) 238 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().abortEvent, attr);239 setWindowInlineEventListener(eventNames().abortEvent, createInlineEventListener(document()->frame(), attr)); 239 240 else if (attr->name() == onerrorAttr) 240 document()->setWindowInlineEventListenerForTypeAndAttribute(eventNames().errorEvent, attr);241 setWindowInlineEventListener(eventNames().errorEvent, createInlineEventListener(document()->frame(), attr)); 241 242 else if (attr->name() == SVGNames::xAttr) 242 243 setXBaseValue(SVGLength(LengthModeWidth, attr->value())); -
trunk/WebCore/svg/SVGScriptElement.cpp
r39441 r42633 204 204 void SVGScriptElement::dispatchErrorEvent() 205 205 { 206 dispatchEvent ForType(eventNames().errorEvent, true, false);206 dispatchEvent(eventNames().errorEvent, true, false); 207 207 } 208 208 -
trunk/WebCore/wml/WMLInputElement.cpp
r42622 r42633 302 302 RenderObject* r = renderer(); 303 303 if (r && toRenderTextControl(r)->isEdited()) { 304 dispatchEvent ForType(eventNames().changeEvent, true, false);304 dispatchEvent(eventNames().changeEvent, true, false); 305 305 306 306 // Refetch the renderer since arbitrary JS code run during onchange can do anything, including destroying it.
Note: See TracChangeset
for help on using the changeset viewer.