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 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
539 if (value->IsArray()) { | 539 if (value->IsArray()) { |
540 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 540 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
541 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { | 541 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { |
542 throwTypeError(ExceptionMessages::notASequenceTypeProperty(propertyName)
, isolate); | 542 throwTypeError(ExceptionMessages::notASequenceTypeProperty(propertyName)
, isolate); |
543 return Vector<RefPtr<T> >(); | 543 return Vector<RefPtr<T> >(); |
544 } | 544 } |
545 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, succes
s); | 545 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, succes
s); |
546 } | 546 } |
547 | 547 |
548 template <class T, class V8T> | 548 template <class T, class V8T> |
549 HeapVector<Member<T> > toMemberNativeArray(v8::Handle<v8::Value> value, int argu
mentIndex, v8::Isolate* isolate, bool* success = 0) | 549 WillBeHeapVector<RefPtrWillBeMember<T> > toRefPtrWillBeMemberNativeArray(v8::Han
dle<v8::Value> value, int argumentIndex, v8::Isolate* isolate, bool* success = 0
) |
550 { | 550 { |
551 if (success) | 551 if (success) |
552 *success = true; | 552 *success = true; |
553 | 553 |
554 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 554 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
555 uint32_t length = 0; | 555 uint32_t length = 0; |
556 if (value->IsArray()) { | 556 if (value->IsArray()) { |
557 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 557 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
558 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { | 558 } else if (toV8Sequence(value, length, isolate).IsEmpty()) { |
559 throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argument
Index), isolate); | 559 throwTypeError(ExceptionMessages::notAnArrayTypeArgumentOrValue(argument
Index), isolate); |
560 return HeapVector<Member<T> >(); | 560 return WillBeHeapVector<RefPtrWillBeMember<T> >(); |
561 } | 561 } |
562 | 562 |
563 HeapVector<Member<T> > result; | 563 WillBeHeapVector<RefPtrWillBeMember<T> > result; |
564 result.reserveInitialCapacity(length); | 564 result.reserveInitialCapacity(length); |
565 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); | 565 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); |
566 for (uint32_t i = 0; i < length; ++i) { | 566 for (uint32_t i = 0; i < length; ++i) { |
567 v8::Handle<v8::Value> element = object->Get(i); | 567 v8::Handle<v8::Value> element = object->Get(i); |
568 if (V8T::hasInstance(element, isolate)) { | 568 if (V8T::hasInstance(element, isolate)) { |
569 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); | 569 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); |
570 result.uncheckedAppend(V8T::toNative(elementObject)); | 570 result.uncheckedAppend(V8T::toNative(elementObject)); |
571 } else { | 571 } else { |
572 if (success) | 572 if (success) |
573 *success = false; | 573 *success = false; |
574 throwTypeError("Invalid Array element type", isolate); | 574 throwTypeError("Invalid Array element type", isolate); |
575 return HeapVector<Member<T> >(); | 575 return WillBeHeapVector<RefPtrWillBeMember<T> >(); |
576 } | 576 } |
577 } | 577 } |
578 return result; | 578 return result; |
579 } | 579 } |
580 | 580 |
581 // Converts a JavaScript value to an array as per the Web IDL specification: | 581 // Converts a JavaScript value to an array as per the Web IDL specification: |
582 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-array | 582 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-array |
583 template <class T> | 583 template <class T> |
584 Vector<T> toNativeArray(v8::Handle<v8::Value> value, int argumentIndex, v8::Isol
ate* isolate) | 584 Vector<T> toNativeArray(v8::Handle<v8::Value> value, int argumentIndex, v8::Isol
ate* isolate) |
585 { | 585 { |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
759 | 759 |
760 private: | 760 private: |
761 v8::HandleScope m_handleScope; | 761 v8::HandleScope m_handleScope; |
762 v8::Context::Scope m_contextScope; | 762 v8::Context::Scope m_contextScope; |
763 RefPtr<NewScriptState> m_scriptState; | 763 RefPtr<NewScriptState> m_scriptState; |
764 }; | 764 }; |
765 | 765 |
766 } // namespace WebCore | 766 } // namespace WebCore |
767 | 767 |
768 #endif // V8Binding_h | 768 #endif // V8Binding_h |
OLD | NEW |