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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
141 // adopted and so forth. The overloaded initializeScriptWrappableForInterfac e() | 141 // adopted and so forth. The overloaded initializeScriptWrappableForInterfac e() |
142 // functions are implemented by the generated V8 bindings code. Declaring th e | 142 // functions are implemented by the generated V8 bindings code. Declaring th e |
143 // extern function in the template avoids making a centralized header of all | 143 // extern function in the template avoids making a centralized header of all |
144 // the bindings in the universe. C++11's extern template feature may provide | 144 // the bindings in the universe. C++11's extern template feature may provide |
145 // a cleaner solution someday. | 145 // a cleaner solution someday. |
146 template <class C> static void init(C* object) | 146 template <class C> static void init(C* object) |
147 { | 147 { |
148 initializeScriptWrappableHelper(object); | 148 initializeScriptWrappableHelper(object); |
149 } | 149 } |
150 | 150 |
151 // Returns the WrapperTypeInfo of the instance. | |
152 // | |
153 // This method must be overridden by using DEFINE_WRAPPERTYPEINFO macro. | |
haraken
2014/08/29 05:24:04
by using => by
Yuki
2014/09/01 06:06:39
Done.
Yuki
2014/09/01 06:06:39
Done.
| |
154 virtual const WrapperTypeInfo* wrapperTypeInfo() const = 0; | |
155 | |
156 // Creates and returns a new wrapper object. | |
157 virtual v8::Handle<v8::Object> wrap(v8::Handle<v8::Object> creationContext, v8::Isolate*); | |
158 | |
151 void setWrapper(v8::Handle<v8::Object> wrapper, v8::Isolate* isolate, const WrapperConfiguration& configuration) | 159 void setWrapper(v8::Handle<v8::Object> wrapper, v8::Isolate* isolate, const WrapperConfiguration& configuration) |
152 { | 160 { |
153 ASSERT(!containsWrapper()); | 161 ASSERT(!containsWrapper()); |
154 if (!*wrapper) { | 162 if (!*wrapper) { |
155 m_wrapperOrTypeInfo = 0; | 163 m_wrapperOrTypeInfo = 0; |
156 return; | 164 return; |
157 } | 165 } |
158 v8::Persistent<v8::Object> persistent(isolate, wrapper); | 166 v8::Persistent<v8::Object> persistent(isolate, wrapper); |
159 configuration.configureWrapper(&persistent); | 167 configuration.configureWrapper(&persistent); |
160 persistent.SetWeak(this, &setWeakCallback); | 168 persistent.SetWeak(this, &setWeakCallback); |
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
331 ASSERT(persistent == data.GetValue()); | 339 ASSERT(persistent == data.GetValue()); |
332 data.GetParameter()->disposeWrapper(data.GetValue()); | 340 data.GetParameter()->disposeWrapper(data.GetValue()); |
333 | 341 |
334 // FIXME: I noticed that 50%~ of minor GC cycle times can be consumed | 342 // FIXME: I noticed that 50%~ of minor GC cycle times can be consumed |
335 // inside data.GetParameter()->deref(), which causes Node destructions. We should | 343 // inside data.GetParameter()->deref(), which causes Node destructions. We should |
336 // make Node destructions incremental. | 344 // make Node destructions incremental. |
337 releaseObject(data.GetValue()); | 345 releaseObject(data.GetValue()); |
338 } | 346 } |
339 }; | 347 }; |
340 | 348 |
349 // Defines 'wrapperTypeInfo' virtual method which returns the WrapperTypeInfo of | |
350 // the instance. Also declares a static member of type WrapperTypeInfo, of which | |
351 // the definition is given by the IDL code generator. | |
352 // | |
353 // All the derived classes of ScriptWrappable, regardless of directly or | |
354 // indirectly, must write this macro in the class definition except for the case | |
355 // that the class is NoInterfaceObject. | |
haraken
2014/08/29 05:24:04
Help me understand: What's the relationship betwee
Yuki
2014/09/01 06:06:39
Added more comment.
| |
356 #define DEFINE_WRAPPERTYPEINFO() \ | |
357 public: \ | |
358 virtual const WrapperTypeInfo* wrapperTypeInfo() const OVERRIDE \ | |
359 { \ | |
360 return &s_wrapperTypeInfo; \ | |
361 } \ | |
362 private: \ | |
363 static const WrapperTypeInfo& s_wrapperTypeInfo | |
364 | |
341 } // namespace blink | 365 } // namespace blink |
342 | 366 |
343 #endif // ScriptWrappable_h | 367 #endif // ScriptWrappable_h |
OLD | NEW |