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

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

Issue 721383003: bindings: Retires ScriptWrappableBase mostly. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month 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" 8 #include "bindings/core/v8/DOMDataStore.h"
9 #include "bindings/core/v8/V8DOMWrapper.h" 9 #include "bindings/core/v8/V8DOMWrapper.h"
10 10
(...skipping 28 matching lines...) Expand all
39 m_wrapperTypeInfo->derefObject(m_scriptWrappableBase); 39 m_wrapperTypeInfo->derefObject(m_scriptWrappableBase);
40 } 40 }
41 41
42 private: 42 private:
43 ScriptWrappableBase* m_scriptWrappableBase; 43 ScriptWrappableBase* m_scriptWrappableBase;
44 const WrapperTypeInfo* m_wrapperTypeInfo; 44 const WrapperTypeInfo* m_wrapperTypeInfo;
45 }; 45 };
46 46
47 } // namespace 47 } // namespace
48 48
49 // ScriptWrappableBase
50
51 v8::Handle<v8::Object> ScriptWrappableBase::wrap(v8::Handle<v8::Object> creation Context, v8::Isolate* isolate, const WrapperTypeInfo* wrapperTypeInfo)
52 {
53 // It's possible that no one except for the new wrapper owns this object at
54 // this moment, so we have to prevent GC to collect this object until the
55 // object gets associated with the wrapper.
56 ScriptWrappableBaseProtector protect(this, wrapperTypeInfo);
57
58 ASSERT(!DOMDataStore::containsWrapper(this, isolate));
59
60 v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(isolate, creati onContext, wrapperTypeInfo, this);
61 if (UNLIKELY(wrapper.IsEmpty()))
62 return wrapper;
63
64 wrapperTypeInfo->installConditionallyEnabledProperties(wrapper, isolate);
65 return V8DOMWrapper::associateObjectWithWrapper(isolate, this, wrapperTypeIn fo, wrapper);
66 }
67
68 // ScriptWrappable
69
70 v8::Handle<v8::Object> ScriptWrappable::wrap(v8::Handle<v8::Object> creationCont ext, v8::Isolate* isolate) 49 v8::Handle<v8::Object> ScriptWrappable::wrap(v8::Handle<v8::Object> creationCont ext, v8::Isolate* isolate)
71 { 50 {
72 const WrapperTypeInfo* wrapperTypeInfo = this->wrapperTypeInfo(); 51 const WrapperTypeInfo* wrapperTypeInfo = this->wrapperTypeInfo();
73 52
74 // It's possible that no one except for the new wrapper owns this object at 53 // It's possible that no one except for the new wrapper owns this object at
75 // this moment, so we have to prevent GC to collect this object until the 54 // this moment, so we have to prevent GC to collect this object until the
76 // object gets associated with the wrapper. 55 // object gets associated with the wrapper.
77 ScriptWrappableBaseProtector protect(this, wrapperTypeInfo); 56 ScriptWrappableBaseProtector protect(this, wrapperTypeInfo);
78 57
79 ASSERT(!DOMDataStore::containsWrapper(this, isolate)); 58 ASSERT(!DOMDataStore::containsWrapper(this, isolate));
80 59
81 v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(isolate, creati onContext, wrapperTypeInfo, toScriptWrappableBase()); 60 v8::Handle<v8::Object> wrapper = V8DOMWrapper::createWrapper(isolate, creati onContext, wrapperTypeInfo, toScriptWrappableBase());
82 if (UNLIKELY(wrapper.IsEmpty())) 61 if (UNLIKELY(wrapper.IsEmpty()))
83 return wrapper; 62 return wrapper;
84 63
85 wrapperTypeInfo->installConditionallyEnabledProperties(wrapper, isolate); 64 wrapperTypeInfo->installConditionallyEnabledProperties(wrapper, isolate);
86 return associateWithWrapper(wrapperTypeInfo, wrapper, isolate); 65 return associateWithWrapper(wrapperTypeInfo, wrapper, isolate);
87 } 66 }
88 67
89 v8::Handle<v8::Object> ScriptWrappable::associateWithWrapper(const WrapperTypeIn fo* wrapperTypeInfo, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate) 68 v8::Handle<v8::Object> ScriptWrappable::associateWithWrapper(const WrapperTypeIn fo* wrapperTypeInfo, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate)
90 { 69 {
91 return V8DOMWrapper::associateObjectWithWrapper(isolate, this, wrapperTypeIn fo, wrapper); 70 return V8DOMWrapper::associateObjectWithWrapper(isolate, this, wrapperTypeIn fo, wrapper);
92 } 71 }
93 72
94 } // namespace blink 73 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698