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 478 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 if (success) | 489 if (success) |
490 *success = false; | 490 *success = false; |
491 throwTypeError("Invalid Array element type", isolate); | 491 throwTypeError("Invalid Array element type", isolate); |
492 return Vector<RefPtr<T> >(); | 492 return Vector<RefPtr<T> >(); |
493 } | 493 } |
494 } | 494 } |
495 return result; | 495 return result; |
496 } | 496 } |
497 | 497 |
498 template <class T, class V8T> | 498 template <class T, class V8T> |
499 WillBeHeapVector<RefPtrWillBeMember<T> > toRefPtrWillBeMemberNativeArrayUnch
ecked(v8::Local<v8::Value> v8Value, uint32_t length, v8::Isolate* isolate, bool*
success = 0) | 499 HeapVector<Member<T> > toRefPtrNativeArrayUnchecked(v8::Local<v8::Value> v8V
alue, uint32_t length, v8::Isolate* isolate, bool* success = 0) |
500 { | 500 { |
501 WillBeHeapVector<RefPtrWillBeMember<T> > result; | 501 HeapVector<Member<T> > result; |
502 result.reserveInitialCapacity(length); | 502 result.reserveInitialCapacity(length); |
503 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); | 503 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); |
504 for (uint32_t i = 0; i < length; ++i) { | 504 for (uint32_t i = 0; i < length; ++i) { |
505 v8::Handle<v8::Value> element = object->Get(i); | 505 v8::Handle<v8::Value> element = object->Get(i); |
506 | 506 |
507 if (V8T::hasInstance(element, isolate)) { | 507 if (V8T::hasInstance(element, isolate)) { |
508 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::C
ast(element); | 508 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::C
ast(element); |
509 result.uncheckedAppend(V8T::toNative(elementObject)); | 509 result.uncheckedAppend(V8T::toNative(elementObject)); |
510 } else { | 510 } else { |
511 if (success) | 511 if (success) |
512 *success = false; | 512 *success = false; |
513 throwTypeError("Invalid Array element type", isolate); | 513 throwTypeError("Invalid Array element type", isolate); |
514 return WillBeHeapVector<RefPtrWillBeMember<T> >(); | 514 return HeapVector<Member<T> >(); |
515 } | 515 } |
516 } | 516 } |
517 return result; | 517 return result; |
518 } | 518 } |
519 | 519 |
520 v8::Handle<v8::Value> toV8Sequence(v8::Handle<v8::Value>, uint32_t& length,
v8::Isolate*); | 520 v8::Handle<v8::Value> toV8Sequence(v8::Handle<v8::Value>, uint32_t& length,
v8::Isolate*); |
521 | 521 |
522 template <class T, class V8T> | 522 template <class T, class V8T> |
523 Vector<RefPtr<T> > toRefPtrNativeArray(v8::Handle<v8::Value> value, int argu
mentIndex, v8::Isolate* isolate, bool* success = 0) | 523 Vector<RefPtr<T> > toRefPtrNativeArray(v8::Handle<v8::Value> value, int argu
mentIndex, v8::Isolate* isolate, bool* success = 0) |
524 { | 524 { |
525 if (success) | 525 if (success) |
526 *success = true; | 526 *success = true; |
527 | 527 |
528 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 528 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
529 uint32_t length = 0; | 529 uint32_t length = 0; |
530 if (value->IsArray()) { | 530 if (value->IsArray()) { |
531 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 531 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
532 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { | 532 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { |
533 throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argu
mentIndex), isolate); | 533 throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argu
mentIndex), isolate); |
534 return Vector<RefPtr<T> >(); | 534 return Vector<RefPtr<T> >(); |
535 } | 535 } |
536 | 536 |
537 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, su
ccess); | 537 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, su
ccess); |
538 } | 538 } |
539 | 539 |
540 template <class T, class V8T> | 540 template <class T, class V8T> |
541 WillBeHeapVector<RefPtrWillBeMember<T> > toRefPtrWillBeMemberNativeArray(v8:
:Handle<v8::Value> value, int argumentIndex, v8::Isolate* isolate, bool* success
= 0) | 541 HeapVector<Member<T> > toRefPtrNativeArray(v8::Handle<v8::Value> value, int
argumentIndex, v8::Isolate* isolate, bool* success = 0) |
542 { | 542 { |
543 if (success) | 543 if (success) |
544 *success = true; | 544 *success = true; |
545 | 545 |
546 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 546 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
547 uint32_t length = 0; | 547 uint32_t length = 0; |
548 if (value->IsArray()) { | 548 if (value->IsArray()) { |
549 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 549 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
550 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { | 550 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { |
551 throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argu
mentIndex), isolate); | 551 throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argu
mentIndex), isolate); |
552 return WillBeHeapVector<RefPtrWillBeMember<T> >(); | 552 return HeapVector<Member<T> >(); |
553 } | 553 } |
554 | 554 |
555 return toRefPtrWillBeMemberNativeArrayUnchecked<T, V8T>(v8Value, length,
isolate, success); | 555 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, su
ccess); |
556 } | 556 } |
557 | 557 |
558 template <class T, class V8T> | 558 template <class T, class V8T> |
559 Vector<RefPtr<T> > toRefPtrNativeArray(v8::Handle<v8::Value> value, const St
ring& propertyName, v8::Isolate* isolate, bool* success = 0) | 559 Vector<RefPtr<T> > toRefPtrNativeArray(v8::Handle<v8::Value> value, const St
ring& propertyName, v8::Isolate* isolate, bool* success = 0) |
560 { | 560 { |
561 if (success) | 561 if (success) |
562 *success = true; | 562 *success = true; |
563 | 563 |
564 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 564 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
565 uint32_t length = 0; | 565 uint32_t length = 0; |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 m_isolate->ClearInterrupt(); | 750 m_isolate->ClearInterrupt(); |
751 } | 751 } |
752 | 752 |
753 private: | 753 private: |
754 v8::Isolate* m_isolate; | 754 v8::Isolate* m_isolate; |
755 }; | 755 }; |
756 | 756 |
757 } // namespace WebCore | 757 } // namespace WebCore |
758 | 758 |
759 #endif // V8Binding_h | 759 #endif // V8Binding_h |
OLD | NEW |