OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
3 * Copyright (C) 2012 Ericsson AB. All rights reserved. | 3 * Copyright (C) 2012 Ericsson AB. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 inline void v8SetReturnValueStringOrUndefined(const CallbackInfo& info, const St
ring& string, v8::Isolate* isolate) | 170 inline void v8SetReturnValueStringOrUndefined(const CallbackInfo& info, const St
ring& string, v8::Isolate* isolate) |
171 { | 171 { |
172 if (string.isNull()) { | 172 if (string.isNull()) { |
173 v8SetReturnValueUndefined(info); | 173 v8SetReturnValueUndefined(info); |
174 return; | 174 return; |
175 } | 175 } |
176 V8PerIsolateData::from(isolate)->stringCache()->setReturnValueFromString(inf
o.GetReturnValue(), string.impl()); | 176 V8PerIsolateData::from(isolate)->stringCache()->setReturnValueFromString(inf
o.GetReturnValue(), string.impl()); |
177 } | 177 } |
178 | 178 |
179 template<typename CallbackInfo> | 179 template<typename CallbackInfo> |
180 inline void v8SetReturnValue(const CallbackInfo& callbackInfo, ScriptWrappableBa
se* impl, const WrapperTypeInfo* wrapperTypeInfo) | |
181 { | |
182 if (UNLIKELY(!impl)) { | |
183 v8SetReturnValueNull(callbackInfo); | |
184 return; | |
185 } | |
186 if (DOMDataStore::setReturnValue(callbackInfo.GetReturnValue(), impl)) | |
187 return; | |
188 v8::Handle<v8::Object> wrapper = impl->wrap(callbackInfo.Holder(), callbackI
nfo.GetIsolate(), wrapperTypeInfo); | |
189 v8SetReturnValue(callbackInfo, wrapper); | |
190 } | |
191 | |
192 template<typename CallbackInfo> | |
193 inline void v8SetReturnValue(const CallbackInfo& callbackInfo, ScriptWrappable*
impl) | 180 inline void v8SetReturnValue(const CallbackInfo& callbackInfo, ScriptWrappable*
impl) |
194 { | 181 { |
195 if (UNLIKELY(!impl)) { | 182 if (UNLIKELY(!impl)) { |
196 v8SetReturnValueNull(callbackInfo); | 183 v8SetReturnValueNull(callbackInfo); |
197 return; | 184 return; |
198 } | 185 } |
199 if (DOMDataStore::setReturnValue(callbackInfo.GetReturnValue(), impl)) | 186 if (DOMDataStore::setReturnValue(callbackInfo.GetReturnValue(), impl)) |
200 return; | 187 return; |
201 v8::Handle<v8::Object> wrapper = impl->wrap(callbackInfo.Holder(), callbackI
nfo.GetIsolate()); | 188 v8::Handle<v8::Object> wrapper = impl->wrap(callbackInfo.Holder(), callbackI
nfo.GetIsolate()); |
202 v8SetReturnValue(callbackInfo, wrapper); | 189 v8SetReturnValue(callbackInfo, wrapper); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 if (UNLIKELY(!impl)) { | 282 if (UNLIKELY(!impl)) { |
296 v8SetReturnValueNull(callbackInfo); | 283 v8SetReturnValueNull(callbackInfo); |
297 return; | 284 return; |
298 } | 285 } |
299 if (DOMDataStore::setReturnValueFast(callbackInfo.GetReturnValue(), impl, ca
llbackInfo.Holder(), wrappable)) | 286 if (DOMDataStore::setReturnValueFast(callbackInfo.GetReturnValue(), impl, ca
llbackInfo.Holder(), wrappable)) |
300 return; | 287 return; |
301 v8::Handle<v8::Object> wrapper = ScriptWrappable::fromNode(impl)->wrap(callb
ackInfo.Holder(), callbackInfo.GetIsolate()); | 288 v8::Handle<v8::Object> wrapper = ScriptWrappable::fromNode(impl)->wrap(callb
ackInfo.Holder(), callbackInfo.GetIsolate()); |
302 v8SetReturnValue(callbackInfo, wrapper); | 289 v8SetReturnValue(callbackInfo, wrapper); |
303 } | 290 } |
304 | 291 |
305 template<typename CallbackInfo> | |
306 inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, ScriptWrappab
le* impl, const ScriptWrappableBase*) | |
307 { | |
308 // If the third arg is not ScriptWrappable, there is no fast path. | |
309 v8SetReturnValue(callbackInfo, impl); | |
310 } | |
311 | |
312 template<typename CallbackInfo, typename T, typename Wrappable> | 292 template<typename CallbackInfo, typename T, typename Wrappable> |
313 inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, PassRefPtr<T>
impl, const Wrappable* wrappable) | 293 inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, PassRefPtr<T>
impl, const Wrappable* wrappable) |
314 { | 294 { |
315 v8SetReturnValueFast(callbackInfo, impl.get(), wrappable); | 295 v8SetReturnValueFast(callbackInfo, impl.get(), wrappable); |
316 } | 296 } |
317 | 297 |
318 template<typename CallbackInfo, typename T, typename Wrappable> | 298 template<typename CallbackInfo, typename T, typename Wrappable> |
319 inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, RawPtr<T> imp
l, const Wrappable* wrappable) | 299 inline void v8SetReturnValueFast(const CallbackInfo& callbackInfo, RawPtr<T> imp
l, const Wrappable* wrappable) |
320 { | 300 { |
321 v8SetReturnValueFast(callbackInfo, impl.get(), wrappable); | 301 v8SetReturnValueFast(callbackInfo, impl.get(), wrappable); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 { | 359 { |
380 ASSERT(isolate); | 360 ASSERT(isolate); |
381 return v8::String::NewFromUtf8(isolate, str, v8::String::kInternalizedString
, length); | 361 return v8::String::NewFromUtf8(isolate, str, v8::String::kInternalizedString
, length); |
382 } | 362 } |
383 | 363 |
384 inline v8::Handle<v8::Value> v8Undefined() | 364 inline v8::Handle<v8::Value> v8Undefined() |
385 { | 365 { |
386 return v8::Handle<v8::Value>(); | 366 return v8::Handle<v8::Value>(); |
387 } | 367 } |
388 | 368 |
389 inline v8::Handle<v8::Value> toV8(ScriptWrappableBase* impl, v8::Handle<v8::Obje
ct> creationContext, v8::Isolate* isolate, const WrapperTypeInfo* wrapperTypeInf
o) | |
390 { | |
391 if (UNLIKELY(!impl)) | |
392 return v8::Null(isolate); | |
393 v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapper(impl, isolate); | |
394 if (!wrapper.IsEmpty()) | |
395 return wrapper; | |
396 | |
397 return impl->wrap(creationContext, isolate, wrapperTypeInfo); | |
398 } | |
399 | |
400 inline v8::Handle<v8::Value> toV8(ScriptWrappable* impl, v8::Handle<v8::Object>
creationContext, v8::Isolate* isolate) | 369 inline v8::Handle<v8::Value> toV8(ScriptWrappable* impl, v8::Handle<v8::Object>
creationContext, v8::Isolate* isolate) |
401 { | 370 { |
402 if (UNLIKELY(!impl)) | 371 if (UNLIKELY(!impl)) |
403 return v8::Null(isolate); | 372 return v8::Null(isolate); |
404 v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapper(impl, isolate); | 373 v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapper(impl, isolate); |
405 if (!wrapper.IsEmpty()) | 374 if (!wrapper.IsEmpty()) |
406 return wrapper; | 375 return wrapper; |
407 | 376 |
408 return impl->wrap(creationContext, isolate); | 377 return impl->wrap(creationContext, isolate); |
409 } | 378 } |
410 | 379 |
411 inline v8::Handle<v8::Value> toV8(Node* impl, v8::Handle<v8::Object> creationCon
text, v8::Isolate* isolate) | 380 inline v8::Handle<v8::Value> toV8(Node* impl, v8::Handle<v8::Object> creationCon
text, v8::Isolate* isolate) |
412 { | 381 { |
413 if (UNLIKELY(!impl)) | 382 if (UNLIKELY(!impl)) |
414 return v8::Null(isolate); | 383 return v8::Null(isolate); |
415 v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapper(impl, isolate); | 384 v8::Handle<v8::Value> wrapper = DOMDataStore::getWrapper(impl, isolate); |
416 if (!wrapper.IsEmpty()) | 385 if (!wrapper.IsEmpty()) |
417 return wrapper; | 386 return wrapper; |
418 | 387 |
419 return ScriptWrappable::fromNode(impl)->wrap(creationContext, isolate); | 388 return ScriptWrappable::fromNode(impl)->wrap(creationContext, isolate); |
420 } | 389 } |
421 | 390 |
422 template<typename T> | 391 template<typename T> |
423 inline v8::Handle<v8::Value> toV8(RefPtr<T>& impl, v8::Handle<v8::Object> creati
onContext, v8::Isolate* isolate) | |
424 { | |
425 return toV8(impl.get(), creationContext, isolate); | |
426 } | |
427 | |
428 template<typename T> | |
429 inline v8::Handle<v8::Value> toV8(PassRefPtr<T> impl, v8::Handle<v8::Object> cre
ationContext, v8::Isolate* isolate) | 392 inline v8::Handle<v8::Value> toV8(PassRefPtr<T> impl, v8::Handle<v8::Object> cre
ationContext, v8::Isolate* isolate) |
430 { | 393 { |
431 return toV8(impl.get(), creationContext, isolate); | 394 return toV8(impl.get(), creationContext, isolate); |
432 } | 395 } |
433 | 396 |
434 template<typename T> | 397 template<typename T> |
435 inline v8::Handle<v8::Value> toV8(RawPtr<T> impl, v8::Handle<v8::Object> creatio
nContext, v8::Isolate* isolate) | 398 inline v8::Handle<v8::Value> toV8(RawPtr<T> impl, v8::Handle<v8::Object> creatio
nContext, v8::Isolate* isolate) |
436 { | 399 { |
437 return toV8(impl.get(), creationContext, isolate); | 400 return toV8(impl.get(), creationContext, isolate); |
438 } | 401 } |
(...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 v8::Local<v8::Value> v8IteratorResult(ScriptState* scriptState, const T& value) | 1221 v8::Local<v8::Value> v8IteratorResult(ScriptState* scriptState, const T& value) |
1259 { | 1222 { |
1260 return v8IteratorResult(scriptState->isolate(), V8ValueTraits<T>::toV8Value(
value, scriptState->context()->Global(), scriptState->isolate())); | 1223 return v8IteratorResult(scriptState->isolate(), V8ValueTraits<T>::toV8Value(
value, scriptState->context()->Global(), scriptState->isolate())); |
1261 } | 1224 } |
1262 | 1225 |
1263 typedef void (*InstallTemplateFunction)(v8::Handle<v8::FunctionTemplate>, v8::Is
olate*); | 1226 typedef void (*InstallTemplateFunction)(v8::Handle<v8::FunctionTemplate>, v8::Is
olate*); |
1264 | 1227 |
1265 } // namespace blink | 1228 } // namespace blink |
1266 | 1229 |
1267 #endif // V8Binding_h | 1230 #endif // V8Binding_h |
OLD | NEW |