| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 WrapperTypeInfo_h | 31 #ifndef WrapperTypeInfo_h |
| 32 #define WrapperTypeInfo_h | 32 #define WrapperTypeInfo_h |
| 33 | 33 |
| 34 #include "bindings/core/v8/ActiveScriptWrappable.h" | |
| 35 #include "gin/public/wrapper_info.h" | 34 #include "gin/public/wrapper_info.h" |
| 35 #include "platform/bindings/ActiveScriptWrappable.h" |
| 36 #include "platform/heap/Handle.h" | 36 #include "platform/heap/Handle.h" |
| 37 #include "platform/wtf/Allocator.h" | 37 #include "platform/wtf/Allocator.h" |
| 38 #include "platform/wtf/Assertions.h" | 38 #include "platform/wtf/Assertions.h" |
| 39 #include "v8/include/v8.h" | 39 #include "v8/include/v8.h" |
| 40 | 40 |
| 41 namespace blink { | 41 namespace blink { |
| 42 | 42 |
| 43 class DOMWrapperWorld; | 43 class DOMWrapperWorld; |
| 44 class ScriptWrappable; | 44 class ScriptWrappable; |
| 45 | 45 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 DCHECK(trace_wrappers_function); | 149 DCHECK(trace_wrappers_function); |
| 150 return trace_wrappers_function(visitor, script_wrappable); | 150 return trace_wrappers_function(visitor, script_wrappable); |
| 151 } | 151 } |
| 152 | 152 |
| 153 void PreparePrototypeAndInterfaceObject( | 153 void PreparePrototypeAndInterfaceObject( |
| 154 v8::Local<v8::Context> context, | 154 v8::Local<v8::Context> context, |
| 155 const DOMWrapperWorld& world, | 155 const DOMWrapperWorld& world, |
| 156 v8::Local<v8::Object> prototype_object, | 156 v8::Local<v8::Object> prototype_object, |
| 157 v8::Local<v8::Function> interface_object, | 157 v8::Local<v8::Function> interface_object, |
| 158 v8::Local<v8::FunctionTemplate> interface_template) const { | 158 v8::Local<v8::FunctionTemplate> interface_template) const { |
| 159 if (prepare_prototype_and_interface_object_function) | 159 if (prepare_prototype_and_interface_object_function) { |
| 160 prepare_prototype_and_interface_object_function( | 160 prepare_prototype_and_interface_object_function( |
| 161 context, world, prototype_object, interface_object, | 161 context, world, prototype_object, interface_object, |
| 162 interface_template); | 162 interface_template); |
| 163 } |
| 163 } | 164 } |
| 164 | 165 |
| 165 bool IsActiveScriptWrappable() const { | 166 bool IsActiveScriptWrappable() const { |
| 166 return active_script_wrappable_inheritance == | 167 return active_script_wrappable_inheritance == |
| 167 kInheritFromActiveScriptWrappable; | 168 kInheritFromActiveScriptWrappable; |
| 168 } | 169 } |
| 169 | 170 |
| 170 // This field must be the first member of the struct WrapperTypeInfo. | 171 // This field must be the first member of the struct WrapperTypeInfo. |
| 171 // See also static_assert() in .cpp file. | 172 // See also static_assert() in .cpp file. |
| 172 const gin::GinEmbedder gin_embedder; | 173 const gin::GinEmbedder gin_embedder; |
| 173 | 174 |
| 174 DomTemplateFunction dom_template_function; | 175 DomTemplateFunction dom_template_function; |
| 175 const TraceFunction trace_function; | 176 const TraceFunction trace_function; |
| 176 const TraceWrappersFunction trace_wrappers_function; | 177 const TraceWrappersFunction trace_wrappers_function; |
| 177 PreparePrototypeAndInterfaceObjectFunction | 178 PreparePrototypeAndInterfaceObjectFunction |
| 178 prepare_prototype_and_interface_object_function; | 179 prepare_prototype_and_interface_object_function; |
| 179 const char* const interface_name; | 180 const char* const interface_name; |
| 180 const WrapperTypeInfo* parent_class; | 181 const WrapperTypeInfo* parent_class; |
| 181 const unsigned wrapper_type_prototype : 1; // WrapperTypePrototype | 182 const unsigned wrapper_type_prototype : 1; // WrapperTypePrototype |
| 182 const unsigned wrapper_class_id : 2; // WrapperClassId | 183 const unsigned wrapper_class_id : 2; // WrapperClassId |
| 183 const unsigned // ActiveScriptWrappableInheritance | 184 const unsigned // ActiveScriptWrappableInheritance |
| 184 active_script_wrappable_inheritance : 1; | 185 active_script_wrappable_inheritance : 1; |
| 185 const unsigned lifetime : 1; // Lifetime | 186 const unsigned lifetime : 1; // Lifetime |
| 186 }; | 187 }; |
| 187 | 188 |
| 188 template <typename T, int offset> | 189 template <typename T, int offset> |
| 189 inline T* GetInternalField(const v8::PersistentBase<v8::Object>& persistent) { | 190 inline T* GetInternalField(const v8::PersistentBase<v8::Object>& persistent) { |
| 190 DCHECK_LT(offset, v8::Object::InternalFieldCount(persistent)); | 191 DCHECK_LT(offset, v8::Object::InternalFieldCount(persistent)); |
| 191 return reinterpret_cast<T*>( | 192 return reinterpret_cast<T*>( |
| 192 v8::Object::GetAlignedPointerFromInternalField(persistent, offset)); | 193 v8::Object::GetAlignedPointerFromInternalField(persistent, offset)); |
| 193 } | 194 } |
| 194 | 195 |
| 195 template <typename T, int offset> | 196 template <typename T, int offset> |
| (...skipping 19 matching lines...) Expand all Loading... |
| 215 return GetInternalField<WrapperTypeInfo, kV8DOMWrapperTypeIndex>(wrapper); | 216 return GetInternalField<WrapperTypeInfo, kV8DOMWrapperTypeIndex>(wrapper); |
| 216 } | 217 } |
| 217 | 218 |
| 218 inline const WrapperTypeInfo* ToWrapperTypeInfo(v8::Local<v8::Object> wrapper) { | 219 inline const WrapperTypeInfo* ToWrapperTypeInfo(v8::Local<v8::Object> wrapper) { |
| 219 return GetInternalField<WrapperTypeInfo, kV8DOMWrapperTypeIndex>(wrapper); | 220 return GetInternalField<WrapperTypeInfo, kV8DOMWrapperTypeIndex>(wrapper); |
| 220 } | 221 } |
| 221 | 222 |
| 222 } // namespace blink | 223 } // namespace blink |
| 223 | 224 |
| 224 #endif // WrapperTypeInfo_h | 225 #endif // WrapperTypeInfo_h |
| OLD | NEW |