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

Side by Side Diff: Source/bindings/v8/custom/V8HTMLPlugInElementCustom.cpp

Issue 146523002: Limit the usage of SharedPersistent to ScriptValue only (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 11 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
« no previous file with comments | « Source/bindings/v8/V8NPObject.cpp ('k') | Source/core/html/HTMLPlugInElement.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 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 15 matching lines...) Expand all
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 #include "config.h" 31 #include "config.h"
32 32
33 #include "V8HTMLAppletElement.h" 33 #include "V8HTMLAppletElement.h"
34 #include "V8HTMLEmbedElement.h" 34 #include "V8HTMLEmbedElement.h"
35 #include "V8HTMLObjectElement.h" 35 #include "V8HTMLObjectElement.h"
36 #include "bindings/v8/SharedPersistent.h" 36 #include "bindings/v8/ScriptValue.h"
37 #include "bindings/v8/V8Binding.h" 37 #include "bindings/v8/V8Binding.h"
38 #include "bindings/v8/V8NPObject.h" 38 #include "bindings/v8/V8NPObject.h"
39 #include "core/frame/UseCounter.h" 39 #include "core/frame/UseCounter.h"
40 40
41 namespace WebCore { 41 namespace WebCore {
42 42
43 // FIXME: Consider moving getter/setter helpers to V8NPObject and renaming this file to V8PluginElementFunctions 43 // FIXME: Consider moving getter/setter helpers to V8NPObject and renaming this file to V8PluginElementFunctions
44 // to match JSC bindings naming convention. 44 // to match JSC bindings naming convention.
45 45
46 template <class C> 46 template <class C>
47 static void npObjectNamedGetter(v8::Local<v8::String> name, const v8::PropertyCa llbackInfo<v8::Value>& info) 47 static void npObjectNamedGetter(v8::Local<v8::String> name, const v8::PropertyCa llbackInfo<v8::Value>& info)
48 { 48 {
49 HTMLPlugInElement* imp = C::toNative(info.Holder()); 49 HTMLPlugInElement* imp = C::toNative(info.Holder());
50 RefPtr<SharedPersistent<v8::Object> > wrapper = imp->pluginWrapper(); 50 v8::Handle<v8::Object> instanceTemplate = v8::Handle<v8::Object>::Cast(imp-> pluginWrapper().v8Value());
51 if (!wrapper)
52 return;
53
54 v8::Local<v8::Object> instanceTemplate = wrapper->newLocal(info.GetIsolate() );
55 if (instanceTemplate.IsEmpty()) 51 if (instanceTemplate.IsEmpty())
56 return; 52 return;
57 53
58 npObjectGetNamedProperty(instanceTemplate, name, info); 54 npObjectGetNamedProperty(instanceTemplate, name, info);
59 } 55 }
60 56
61 template <class C> 57 template <class C>
62 static void npObjectNamedSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<v8::Value>& info) 58 static void npObjectNamedSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::PropertyCallbackInfo<v8::Value>& info)
63 { 59 {
64 HTMLPlugInElement* imp = C::toNative(info.Holder()); 60 HTMLPlugInElement* imp = C::toNative(info.Holder());
65 RefPtr<SharedPersistent<v8::Object> > wrapper = imp->pluginWrapper(); 61 v8::Handle<v8::Object> instanceTemplate = v8::Handle<v8::Object>::Cast(imp-> pluginWrapper().v8Value());
66 if (!wrapper)
67 return;
68
69 v8::Local<v8::Object> instanceTemplate = wrapper->newLocal(info.GetIsolate() );
70 if (instanceTemplate.IsEmpty()) 62 if (instanceTemplate.IsEmpty())
71 return; 63 return;
72 64
73 npObjectSetNamedProperty(instanceTemplate, name, value, info); 65 npObjectSetNamedProperty(instanceTemplate, name, value, info);
74 } 66 }
75 67
76 void V8HTMLAppletElement::namedPropertyGetterCustom(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info) 68 void V8HTMLAppletElement::namedPropertyGetterCustom(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
77 { 69 {
78 npObjectNamedGetter<V8HTMLAppletElement>(name, info); 70 npObjectNamedGetter<V8HTMLAppletElement>(name, info);
79 } 71 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 { 113 {
122 HTMLPlugInElement* imp = V8HTMLObjectElement::toNative(info.Holder()); 114 HTMLPlugInElement* imp = V8HTMLObjectElement::toNative(info.Holder());
123 UseCounter::count(imp->document(), UseCounter::HTMLObjectElementLegacyCall); 115 UseCounter::count(imp->document(), UseCounter::HTMLObjectElementLegacyCall);
124 npObjectInvokeDefaultHandler(info); 116 npObjectInvokeDefaultHandler(info);
125 } 117 }
126 118
127 template <class C> 119 template <class C>
128 void npObjectIndexedGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Va lue>& info) 120 void npObjectIndexedGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Va lue>& info)
129 { 121 {
130 HTMLPlugInElement* imp = C::toNative(info.Holder()); 122 HTMLPlugInElement* imp = C::toNative(info.Holder());
131 RefPtr<SharedPersistent<v8::Object> > wrapper = imp->pluginWrapper(); 123 v8::Handle<v8::Object> instanceTemplate = v8::Handle<v8::Object>::Cast(imp-> pluginWrapper().v8Value());
132 if (!wrapper)
133 return;
134
135 v8::Local<v8::Object> instanceTemplate = wrapper->newLocal(info.GetIsolate() );
136 if (instanceTemplate.IsEmpty()) 124 if (instanceTemplate.IsEmpty())
137 return; 125 return;
138 126
139 npObjectGetIndexedProperty(instanceTemplate, index, info); 127 npObjectGetIndexedProperty(instanceTemplate, index, info);
140 } 128 }
141 129
142 template <class C> 130 template <class C>
143 void npObjectIndexedSetter(uint32_t index, v8::Local<v8::Value> value, const v8: :PropertyCallbackInfo<v8::Value>& info) 131 void npObjectIndexedSetter(uint32_t index, v8::Local<v8::Value> value, const v8: :PropertyCallbackInfo<v8::Value>& info)
144 { 132 {
145 HTMLPlugInElement* imp = C::toNative(info.Holder()); 133 HTMLPlugInElement* imp = C::toNative(info.Holder());
146 RefPtr<SharedPersistent<v8::Object> > wrapper = imp->pluginWrapper(); 134 v8::Handle<v8::Object> instanceTemplate = v8::Handle<v8::Object>::Cast(imp-> pluginWrapper().v8Value());
147 if (!wrapper)
148 return;
149
150 v8::Local<v8::Object> instanceTemplate = wrapper->newLocal(info.GetIsolate() );
151 if (instanceTemplate.IsEmpty()) 135 if (instanceTemplate.IsEmpty())
152 return; 136 return;
153 137
154 npObjectSetIndexedProperty(instanceTemplate, index, value, info); 138 npObjectSetIndexedProperty(instanceTemplate, index, value, info);
155 } 139 }
156 140
157 void V8HTMLAppletElement::indexedPropertyGetterCustom(uint32_t index, const v8:: PropertyCallbackInfo<v8::Value>& info) 141 void V8HTMLAppletElement::indexedPropertyGetterCustom(uint32_t index, const v8:: PropertyCallbackInfo<v8::Value>& info)
158 { 142 {
159 npObjectIndexedGetter<V8HTMLAppletElement>(index, info); 143 npObjectIndexedGetter<V8HTMLAppletElement>(index, info);
160 } 144 }
(...skipping 17 matching lines...) Expand all
178 { 162 {
179 npObjectIndexedSetter<V8HTMLEmbedElement>(index, value, info); 163 npObjectIndexedSetter<V8HTMLEmbedElement>(index, value, info);
180 } 164 }
181 165
182 void V8HTMLObjectElement::indexedPropertySetterCustom(uint32_t index, v8::Local< v8::Value> value, const v8::PropertyCallbackInfo<v8::Value>& info) 166 void V8HTMLObjectElement::indexedPropertySetterCustom(uint32_t index, v8::Local< v8::Value> value, const v8::PropertyCallbackInfo<v8::Value>& info)
183 { 167 {
184 npObjectIndexedSetter<V8HTMLObjectElement>(index, value, info); 168 npObjectIndexedSetter<V8HTMLObjectElement>(index, value, info);
185 } 169 }
186 170
187 } // namespace WebCore 171 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/bindings/v8/V8NPObject.cpp ('k') | Source/core/html/HTMLPlugInElement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698