Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(130)

Side by Side Diff: Source/bindings/core/v8/ScriptWrappable.cpp

Issue 478243002: bindings: Adds virtual ScriptWrappable::wrap method. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Synced and sent out to the code review. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "bindings/core/v8/ScriptWrappable.h" 6 #include "bindings/core/v8/ScriptWrappable.h"
7 7
8 #include "bindings/core/v8/DOMDataStore.h"
9 #include "bindings/core/v8/V8DOMWrapper.h"
10
8 namespace blink { 11 namespace blink {
9 12
10 #if COMPILER(MSVC) 13 #if COMPILER(MSVC)
11 __declspec(align(4)) 14 __declspec(align(4))
12 #endif 15 #endif
13 struct SameSizeAsScriptWrappableBase { }; 16 struct SameSizeAsScriptWrappableBase { };
14 17
15 COMPILE_ASSERT(sizeof(ScriptWrappableBase) <= sizeof(SameSizeAsScriptWrappableBa se), ScriptWrappableBase_should_stay_small); 18 COMPILE_ASSERT(sizeof(ScriptWrappableBase) <= sizeof(SameSizeAsScriptWrappableBa se), ScriptWrappableBase_should_stay_small);
16 19
17 struct SameSizeAsScriptWrappable : public ScriptWrappableBase { 20 struct SameSizeAsScriptWrappable : public ScriptWrappableBase {
18 virtual ~SameSizeAsScriptWrappable() { } 21 virtual ~SameSizeAsScriptWrappable() { }
19 uintptr_t m_wrapperOrTypeInfo; 22 uintptr_t m_wrapperOrTypeInfo;
20 }; 23 };
21 24
22 COMPILE_ASSERT(sizeof(ScriptWrappable) <= sizeof(SameSizeAsScriptWrappable), Scr iptWrappable_should_stay_small); 25 COMPILE_ASSERT(sizeof(ScriptWrappable) <= sizeof(SameSizeAsScriptWrappable), Scr iptWrappable_should_stay_small);
23 26
27 v8::Handle<v8::Object> ScriptWrappable::wrap(v8::Handle<v8::Object> creationCont ext, v8::Isolate* isolate)
28 {
29 ASSERT(!DOMDataStore::containsWrapperNonTemplate(this, isolate));
30
31 const WrapperTypeInfo* wrapperType = wrapperTypeInfo();
32
33 // Might be a XXXConstructor::wrapperTypeInfo instead of an
34 // XXX::wrapperTypeInfo. These will both have the same object de-ref
35 // functions, though, so use that as the basis of the check.
36 RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(typeInfo()->derefObjectFunction == wrapperType->derefObjectFunction);
haraken 2014/08/29 05:24:04 Do we need to check this? I guess we can drop this
Yuki 2014/09/01 06:06:39 Done.
37
38 v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(creationContext , wrapperType, toInternalPointer(), isolate);
39 if (UNLIKELY(wrapper.IsEmpty()))
40 return wrapper;
41
42 wrapperType->installConditionallyEnabledProperties(wrapper, isolate);
43 wrapperType->refObject(toInternalPointer());
44 V8DOMWrapper::associateObjectWithWrapperNonTemplate(this, wrapperType, wrapp er, isolate, WrapperConfiguration::Dependent);
haraken 2014/08/29 05:24:04 It looks wrong to always use WrapperConfiguration:
Yuki 2014/09/01 06:06:39 Nice catch! Thanks for pointing this out. As you
45 return wrapper;
46 }
47
24 } // namespace blink 48 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698