OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 13 matching lines...) Expand all Loading... |
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #ifndef V8AbstractEventListener_h | 31 #ifndef V8AbstractEventListener_h |
32 #define V8AbstractEventListener_h | 32 #define V8AbstractEventListener_h |
33 | 33 |
| 34 #include "DOMWrapperWorld.h" |
34 #include "EventListener.h" | 35 #include "EventListener.h" |
35 #include "ScopedPersistent.h" | 36 #include "ScopedPersistent.h" |
36 #include "V8Utilities.h" | 37 #include "V8Utilities.h" |
37 #include "WorldContextHandle.h" | |
38 #include <v8.h> | 38 #include <v8.h> |
39 #include <wtf/PassRefPtr.h> | 39 #include <wtf/PassRefPtr.h> |
40 #include <wtf/RefCounted.h> | 40 #include <wtf/RefCounted.h> |
41 | 41 |
42 namespace WebCore { | 42 namespace WebCore { |
43 | 43 |
44 class Event; | 44 class Event; |
45 | 45 |
46 // There are two kinds of event listeners: HTML or non-HMTL. onload, | 46 // There are two kinds of event listeners: HTML or non-HMTL. onload, |
47 // onfocus, etc (attributes) are always HTML event handler type; Event | 47 // onfocus, etc (attributes) are always HTML event handler type; Event |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 v8::Persistent<v8::Object> existingListenerObjectPersistentHandle() | 98 v8::Persistent<v8::Object> existingListenerObjectPersistentHandle() |
99 { | 99 { |
100 return m_listener.get(); | 100 return m_listener.get(); |
101 } | 101 } |
102 | 102 |
103 bool hasExistingListenerObject() | 103 bool hasExistingListenerObject() |
104 { | 104 { |
105 return !m_listener.isEmpty(); | 105 return !m_listener.isEmpty(); |
106 } | 106 } |
107 | 107 |
108 const WorldContextHandle& worldContext() const { return m_worldContext;
} | 108 DOMWrapperWorld* world() const { return m_world.get(); } |
109 | 109 |
110 protected: | 110 protected: |
111 V8AbstractEventListener(bool isAttribute, const WorldContextHandle&, v8:
:Isolate*); | 111 V8AbstractEventListener(bool isAttribute, PassRefPtr<DOMWrapperWorld>, v
8::Isolate*); |
112 | 112 |
113 virtual void prepareListenerObject(ScriptExecutionContext*) { } | 113 virtual void prepareListenerObject(ScriptExecutionContext*) { } |
114 | 114 |
115 void setListenerObject(v8::Handle<v8::Object> listener); | 115 void setListenerObject(v8::Handle<v8::Object> listener); |
116 | 116 |
117 void invokeEventHandler(ScriptExecutionContext*, Event*, v8::Handle<v8::
Value> jsEvent); | 117 void invokeEventHandler(ScriptExecutionContext*, Event*, v8::Handle<v8::
Value> jsEvent); |
118 | 118 |
119 // Get the receiver object to use for event listener call. | 119 // Get the receiver object to use for event listener call. |
120 v8::Local<v8::Object> getReceiverObject(ScriptExecutionContext*, Event*)
; | 120 v8::Local<v8::Object> getReceiverObject(ScriptExecutionContext*, Event*)
; |
121 | 121 |
122 private: | 122 private: |
123 static void weakEventListenerCallback(v8::Isolate*, v8::Persistent<v8::V
alue>, void* parameter); | 123 static void weakEventListenerCallback(v8::Isolate*, v8::Persistent<v8::V
alue>, void* parameter); |
124 | 124 |
125 // Implementation of EventListener function. | 125 // Implementation of EventListener function. |
126 virtual bool virtualisAttribute() const { return m_isAttribute; } | 126 virtual bool virtualisAttribute() const { return m_isAttribute; } |
127 | 127 |
128 virtual v8::Local<v8::Value> callListenerFunction(ScriptExecutionContext
*, v8::Handle<v8::Value> jsevent, Event*) = 0; | 128 virtual v8::Local<v8::Value> callListenerFunction(ScriptExecutionContext
*, v8::Handle<v8::Value> jsevent, Event*) = 0; |
129 | 129 |
130 virtual bool shouldPreventDefault(v8::Local<v8::Value> returnValue); | 130 virtual bool shouldPreventDefault(v8::Local<v8::Value> returnValue); |
131 | 131 |
132 ScopedPersistent<v8::Object> m_listener; | 132 ScopedPersistent<v8::Object> m_listener; |
133 | 133 |
134 // Indicates if this is an HTML type listener. | 134 // Indicates if this is an HTML type listener. |
135 bool m_isAttribute; | 135 bool m_isAttribute; |
136 | 136 |
137 WorldContextHandle m_worldContext; | 137 RefPtr<DOMWrapperWorld> m_world; |
138 v8::Isolate* m_isolate; | 138 v8::Isolate* m_isolate; |
139 }; | 139 }; |
140 | 140 |
141 } // namespace WebCore | 141 } // namespace WebCore |
142 | 142 |
143 #endif // V8AbstractEventListener_h | 143 #endif // V8AbstractEventListener_h |
OLD | NEW |