| 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 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 PassRefPtrWillBeRawPtr<NodeFilter> toNodeFilter(v8::Handle<v8::Value>, v8::Handl
e<v8::Object>, ScriptState*); | 513 PassRefPtrWillBeRawPtr<NodeFilter> toNodeFilter(v8::Handle<v8::Value>, v8::Handl
e<v8::Object>, ScriptState*); |
| 514 PassRefPtrWillBeRawPtr<XPathNSResolver> toXPathNSResolver(v8::Isolate*, v8::Hand
le<v8::Value>); | 514 PassRefPtrWillBeRawPtr<XPathNSResolver> toXPathNSResolver(v8::Isolate*, v8::Hand
le<v8::Value>); |
| 515 | 515 |
| 516 template<class T> struct NativeValueTraits; | 516 template<class T> struct NativeValueTraits; |
| 517 | 517 |
| 518 bool toV8Sequence(v8::Handle<v8::Value>, uint32_t& length, v8::Isolate*, Excepti
onState&); | 518 bool toV8Sequence(v8::Handle<v8::Value>, uint32_t& length, v8::Isolate*, Excepti
onState&); |
| 519 | 519 |
| 520 // Converts a JavaScript value to an array as per the Web IDL specification: | 520 // Converts a JavaScript value to an array as per the Web IDL specification: |
| 521 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-array | 521 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-array |
| 522 template <class T, class V8T> | 522 template <class T, class V8T> |
| 523 Vector<RefPtr<T> > toRefPtrNativeArrayUnchecked(v8::Local<v8::Value> v8Value, ui
nt32_t length, v8::Isolate* isolate, ExceptionState& exceptionState) | 523 Vector<RefPtr<T>> toRefPtrNativeArrayUnchecked(v8::Local<v8::Value> v8Value, uin
t32_t length, v8::Isolate* isolate, ExceptionState& exceptionState) |
| 524 { | 524 { |
| 525 Vector<RefPtr<T> > result; | 525 Vector<RefPtr<T>> result; |
| 526 result.reserveInitialCapacity(length); | 526 result.reserveInitialCapacity(length); |
| 527 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); | 527 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); |
| 528 v8::TryCatch block; | 528 v8::TryCatch block; |
| 529 for (uint32_t i = 0; i < length; ++i) { | 529 for (uint32_t i = 0; i < length; ++i) { |
| 530 v8::Handle<v8::Value> element = object->Get(i); | 530 v8::Handle<v8::Value> element = object->Get(i); |
| 531 if (block.HasCaught()) { | 531 if (block.HasCaught()) { |
| 532 exceptionState.rethrowV8Exception(block.Exception()); | 532 exceptionState.rethrowV8Exception(block.Exception()); |
| 533 return Vector<RefPtr<T> >(); | 533 return Vector<RefPtr<T>>(); |
| 534 } | 534 } |
| 535 if (V8T::hasInstance(element, isolate)) { | 535 if (V8T::hasInstance(element, isolate)) { |
| 536 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); | 536 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); |
| 537 result.uncheckedAppend(V8T::toImpl(elementObject)); | 537 result.uncheckedAppend(V8T::toImpl(elementObject)); |
| 538 } else { | 538 } else { |
| 539 exceptionState.throwTypeError("Invalid Array element type"); | 539 exceptionState.throwTypeError("Invalid Array element type"); |
| 540 return Vector<RefPtr<T> >(); | 540 return Vector<RefPtr<T>>(); |
| 541 } | 541 } |
| 542 } | 542 } |
| 543 return result; | 543 return result; |
| 544 } | 544 } |
| 545 | 545 |
| 546 template <class T, class V8T> | 546 template <class T, class V8T> |
| 547 Vector<RefPtr<T> > toRefPtrNativeArray(v8::Handle<v8::Value> value, int argument
Index, v8::Isolate* isolate, ExceptionState& exceptionState) | 547 Vector<RefPtr<T>> toRefPtrNativeArray(v8::Handle<v8::Value> value, int argumentI
ndex, v8::Isolate* isolate, ExceptionState& exceptionState) |
| 548 { | 548 { |
| 549 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 549 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
| 550 uint32_t length = 0; | 550 uint32_t length = 0; |
| 551 if (value->IsArray()) { | 551 if (value->IsArray()) { |
| 552 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 552 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
| 553 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { | 553 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { |
| 554 if (!exceptionState.hadException()) | 554 if (!exceptionState.hadException()) |
| 555 exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgum
entOrValue(argumentIndex)); | 555 exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgum
entOrValue(argumentIndex)); |
| 556 return Vector<RefPtr<T> >(); | 556 return Vector<RefPtr<T>>(); |
| 557 } | 557 } |
| 558 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, except
ionState); | 558 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, except
ionState); |
| 559 } | 559 } |
| 560 | 560 |
| 561 template <class T, class V8T> | 561 template <class T, class V8T> |
| 562 Vector<RefPtr<T> > toRefPtrNativeArray(v8::Handle<v8::Value> value, const String
& propertyName, v8::Isolate* isolate, ExceptionState& exceptionState) | 562 Vector<RefPtr<T>> toRefPtrNativeArray(v8::Handle<v8::Value> value, const String&
propertyName, v8::Isolate* isolate, ExceptionState& exceptionState) |
| 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; |
| 566 if (value->IsArray()) { | 566 if (value->IsArray()) { |
| 567 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 567 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
| 568 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { | 568 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { |
| 569 if (!exceptionState.hadException()) | 569 if (!exceptionState.hadException()) |
| 570 exceptionState.throwTypeError(ExceptionMessages::notASequenceTypePro
perty(propertyName)); | 570 exceptionState.throwTypeError(ExceptionMessages::notASequenceTypePro
perty(propertyName)); |
| 571 return Vector<RefPtr<T> >(); | 571 return Vector<RefPtr<T>>(); |
| 572 } | 572 } |
| 573 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, except
ionState); | 573 return toRefPtrNativeArrayUnchecked<T, V8T>(v8Value, length, isolate, except
ionState); |
| 574 } | 574 } |
| 575 | 575 |
| 576 template <class T, class V8T> | 576 template <class T, class V8T> |
| 577 WillBeHeapVector<RefPtrWillBeMember<T> > toRefPtrWillBeMemberNativeArray(v8::Han
dle<v8::Value> value, int argumentIndex, v8::Isolate* isolate, ExceptionState& e
xceptionState) | 577 WillBeHeapVector<RefPtrWillBeMember<T>> toRefPtrWillBeMemberNativeArray(v8::Hand
le<v8::Value> value, int argumentIndex, v8::Isolate* isolate, ExceptionState& ex
ceptionState) |
| 578 { | 578 { |
| 579 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 579 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
| 580 uint32_t length = 0; | 580 uint32_t length = 0; |
| 581 if (value->IsArray()) { | 581 if (value->IsArray()) { |
| 582 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 582 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
| 583 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { | 583 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { |
| 584 if (!exceptionState.hadException()) | 584 if (!exceptionState.hadException()) |
| 585 exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgum
entOrValue(argumentIndex)); | 585 exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgum
entOrValue(argumentIndex)); |
| 586 return WillBeHeapVector<RefPtrWillBeMember<T> >(); | 586 return WillBeHeapVector<RefPtrWillBeMember<T>>(); |
| 587 } | 587 } |
| 588 | 588 |
| 589 WillBeHeapVector<RefPtrWillBeMember<T> > result; | 589 WillBeHeapVector<RefPtrWillBeMember<T>> result; |
| 590 result.reserveInitialCapacity(length); | 590 result.reserveInitialCapacity(length); |
| 591 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); | 591 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); |
| 592 v8::TryCatch block; | 592 v8::TryCatch block; |
| 593 for (uint32_t i = 0; i < length; ++i) { | 593 for (uint32_t i = 0; i < length; ++i) { |
| 594 v8::Handle<v8::Value> element = object->Get(i); | 594 v8::Handle<v8::Value> element = object->Get(i); |
| 595 if (block.HasCaught()) { | 595 if (block.HasCaught()) { |
| 596 exceptionState.rethrowV8Exception(block.Exception()); | 596 exceptionState.rethrowV8Exception(block.Exception()); |
| 597 return WillBeHeapVector<RefPtrWillBeMember<T> >(); | 597 return WillBeHeapVector<RefPtrWillBeMember<T>>(); |
| 598 } | 598 } |
| 599 if (V8T::hasInstance(element, isolate)) { | 599 if (V8T::hasInstance(element, isolate)) { |
| 600 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); | 600 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); |
| 601 result.uncheckedAppend(V8T::toImpl(elementObject)); | 601 result.uncheckedAppend(V8T::toImpl(elementObject)); |
| 602 } else { | 602 } else { |
| 603 exceptionState.throwTypeError("Invalid Array element type"); | 603 exceptionState.throwTypeError("Invalid Array element type"); |
| 604 return WillBeHeapVector<RefPtrWillBeMember<T> >(); | 604 return WillBeHeapVector<RefPtrWillBeMember<T>>(); |
| 605 } | 605 } |
| 606 } | 606 } |
| 607 return result; | 607 return result; |
| 608 } | 608 } |
| 609 | 609 |
| 610 template <class T, class V8T> | 610 template <class T, class V8T> |
| 611 WillBeHeapVector<RefPtrWillBeMember<T> > toRefPtrWillBeMemberNativeArray(v8::Han
dle<v8::Value> value, const String& propertyName, v8::Isolate* isolate, Exceptio
nState& exceptionState) | 611 WillBeHeapVector<RefPtrWillBeMember<T>> toRefPtrWillBeMemberNativeArray(v8::Hand
le<v8::Value> value, const String& propertyName, v8::Isolate* isolate, Exception
State& exceptionState) |
| 612 { | 612 { |
| 613 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 613 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
| 614 uint32_t length = 0; | 614 uint32_t length = 0; |
| 615 if (value->IsArray()) { | 615 if (value->IsArray()) { |
| 616 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 616 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
| 617 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { | 617 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { |
| 618 if (!exceptionState.hadException()) | 618 if (!exceptionState.hadException()) |
| 619 exceptionState.throwTypeError(ExceptionMessages::notASequenceTypePro
perty(propertyName)); | 619 exceptionState.throwTypeError(ExceptionMessages::notASequenceTypePro
perty(propertyName)); |
| 620 return WillBeHeapVector<RefPtrWillBeMember<T> >(); | 620 return WillBeHeapVector<RefPtrWillBeMember<T>>(); |
| 621 } | 621 } |
| 622 | 622 |
| 623 WillBeHeapVector<RefPtrWillBeMember<T> > result; | 623 WillBeHeapVector<RefPtrWillBeMember<T>> result; |
| 624 result.reserveInitialCapacity(length); | 624 result.reserveInitialCapacity(length); |
| 625 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); | 625 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); |
| 626 v8::TryCatch block; | 626 v8::TryCatch block; |
| 627 for (uint32_t i = 0; i < length; ++i) { | 627 for (uint32_t i = 0; i < length; ++i) { |
| 628 v8::Handle<v8::Value> element = object->Get(i); | 628 v8::Handle<v8::Value> element = object->Get(i); |
| 629 if (block.HasCaught()) { | 629 if (block.HasCaught()) { |
| 630 exceptionState.rethrowV8Exception(block.Exception()); | 630 exceptionState.rethrowV8Exception(block.Exception()); |
| 631 return WillBeHeapVector<RefPtrWillBeMember<T> >(); | 631 return WillBeHeapVector<RefPtrWillBeMember<T>>(); |
| 632 } | 632 } |
| 633 if (V8T::hasInstance(element, isolate)) { | 633 if (V8T::hasInstance(element, isolate)) { |
| 634 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); | 634 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); |
| 635 result.uncheckedAppend(V8T::toImpl(elementObject)); | 635 result.uncheckedAppend(V8T::toImpl(elementObject)); |
| 636 } else { | 636 } else { |
| 637 exceptionState.throwTypeError("Invalid Array element type"); | 637 exceptionState.throwTypeError("Invalid Array element type"); |
| 638 return WillBeHeapVector<RefPtrWillBeMember<T> >(); | 638 return WillBeHeapVector<RefPtrWillBeMember<T>>(); |
| 639 } | 639 } |
| 640 } | 640 } |
| 641 return result; | 641 return result; |
| 642 } | 642 } |
| 643 | 643 |
| 644 template <class T, class V8T> | 644 template <class T, class V8T> |
| 645 HeapVector<Member<T> > toMemberNativeArray(v8::Handle<v8::Value> value, int argu
mentIndex, v8::Isolate* isolate, ExceptionState& exceptionState) | 645 HeapVector<Member<T>> toMemberNativeArray(v8::Handle<v8::Value> value, int argum
entIndex, v8::Isolate* isolate, ExceptionState& exceptionState) |
| 646 { | 646 { |
| 647 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); | 647 v8::Local<v8::Value> v8Value(v8::Local<v8::Value>::New(isolate, value)); |
| 648 uint32_t length = 0; | 648 uint32_t length = 0; |
| 649 if (value->IsArray()) { | 649 if (value->IsArray()) { |
| 650 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); | 650 length = v8::Local<v8::Array>::Cast(v8Value)->Length(); |
| 651 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { | 651 } else if (!toV8Sequence(value, length, isolate, exceptionState)) { |
| 652 if (!exceptionState.hadException()) | 652 if (!exceptionState.hadException()) |
| 653 exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgum
entOrValue(argumentIndex)); | 653 exceptionState.throwTypeError(ExceptionMessages::notAnArrayTypeArgum
entOrValue(argumentIndex)); |
| 654 return HeapVector<Member<T> >(); | 654 return HeapVector<Member<T>>(); |
| 655 } | 655 } |
| 656 | 656 |
| 657 HeapVector<Member<T> > result; | 657 HeapVector<Member<T>> result; |
| 658 result.reserveInitialCapacity(length); | 658 result.reserveInitialCapacity(length); |
| 659 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); | 659 v8::Local<v8::Object> object = v8::Local<v8::Object>::Cast(v8Value); |
| 660 v8::TryCatch block; | 660 v8::TryCatch block; |
| 661 for (uint32_t i = 0; i < length; ++i) { | 661 for (uint32_t i = 0; i < length; ++i) { |
| 662 v8::Handle<v8::Value> element = object->Get(i); | 662 v8::Handle<v8::Value> element = object->Get(i); |
| 663 if (UNLIKELY(block.HasCaught())) { | 663 if (UNLIKELY(block.HasCaught())) { |
| 664 exceptionState.rethrowV8Exception(block.Exception()); | 664 exceptionState.rethrowV8Exception(block.Exception()); |
| 665 return HeapVector<Member<T> >(); | 665 return HeapVector<Member<T>>(); |
| 666 } | 666 } |
| 667 if (V8T::hasInstance(element, isolate)) { | 667 if (V8T::hasInstance(element, isolate)) { |
| 668 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); | 668 v8::Handle<v8::Object> elementObject = v8::Handle<v8::Object>::Cast(
element); |
| 669 result.uncheckedAppend(V8T::toImpl(elementObject)); | 669 result.uncheckedAppend(V8T::toImpl(elementObject)); |
| 670 } else { | 670 } else { |
| 671 exceptionState.throwTypeError("Invalid Array element type"); | 671 exceptionState.throwTypeError("Invalid Array element type"); |
| 672 return HeapVector<Member<T> >(); | 672 return HeapVector<Member<T>>(); |
| 673 } | 673 } |
| 674 } | 674 } |
| 675 return result; | 675 return result; |
| 676 } | 676 } |
| 677 | 677 |
| 678 // Converts a JavaScript value to an array as per the Web IDL specification: | 678 // Converts a JavaScript value to an array as per the Web IDL specification: |
| 679 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-array | 679 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-array |
| 680 template <class T> | 680 template <class T> |
| 681 Vector<T> toImplArray(v8::Handle<v8::Value> value, int argumentIndex, v8::Isolat
e* isolate, ExceptionState& exceptionState) | 681 Vector<T> toImplArray(v8::Handle<v8::Value> value, int argumentIndex, v8::Isolat
e* isolate, ExceptionState& exceptionState) |
| 682 { | 682 { |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 810 | 810 |
| 811 template<> | 811 template<> |
| 812 struct NativeValueTraits<double> { | 812 struct NativeValueTraits<double> { |
| 813 static inline double nativeValue(const v8::Local<v8::Value>& value, v8::Isol
ate* isolate, ExceptionState& exceptionState) | 813 static inline double nativeValue(const v8::Local<v8::Value>& value, v8::Isol
ate* isolate, ExceptionState& exceptionState) |
| 814 { | 814 { |
| 815 return toDouble(value, exceptionState); | 815 return toDouble(value, exceptionState); |
| 816 } | 816 } |
| 817 }; | 817 }; |
| 818 | 818 |
| 819 template<> | 819 template<> |
| 820 struct NativeValueTraits<v8::Local<v8::Value> > { | 820 struct NativeValueTraits<v8::Local<v8::Value>> { |
| 821 static inline v8::Local<v8::Value> nativeValue(const v8::Local<v8::Value>& v
alue, v8::Isolate* isolate, ExceptionState&) | 821 static inline v8::Local<v8::Value> nativeValue(const v8::Local<v8::Value>& v
alue, v8::Isolate* isolate, ExceptionState&) |
| 822 { | 822 { |
| 823 return value; | 823 return value; |
| 824 } | 824 } |
| 825 }; | 825 }; |
| 826 | 826 |
| 827 template<> | 827 template<> |
| 828 struct NativeValueTraits<ScriptValue> { | 828 struct NativeValueTraits<ScriptValue> { |
| 829 static inline ScriptValue nativeValue(const v8::Local<v8::Value>& value, v8:
:Isolate* isolate, ExceptionState&) | 829 static inline ScriptValue nativeValue(const v8::Local<v8::Value>& value, v8:
:Isolate* isolate, ExceptionState&) |
| 830 { | 830 { |
| 831 return ScriptValue(ScriptState::current(isolate), value); | 831 return ScriptValue(ScriptState::current(isolate), value); |
| 832 } | 832 } |
| 833 }; | 833 }; |
| 834 | 834 |
| 835 template <typename T> | 835 template <typename T> |
| 836 struct NativeValueTraits<Vector<T> > { | 836 struct NativeValueTraits<Vector<T>> { |
| 837 static inline Vector<T> nativeValue(const v8::Local<v8::Value>& value, v8::I
solate* isolate, ExceptionState& exceptionState) | 837 static inline Vector<T> nativeValue(const v8::Local<v8::Value>& value, v8::I
solate* isolate, ExceptionState& exceptionState) |
| 838 { | 838 { |
| 839 return toImplArray<T>(value, 0, isolate, exceptionState); | 839 return toImplArray<T>(value, 0, isolate, exceptionState); |
| 840 } | 840 } |
| 841 }; | 841 }; |
| 842 | 842 |
| 843 v8::Isolate* toIsolate(ExecutionContext*); | 843 v8::Isolate* toIsolate(ExecutionContext*); |
| 844 v8::Isolate* toIsolate(LocalFrame*); | 844 v8::Isolate* toIsolate(LocalFrame*); |
| 845 | 845 |
| 846 DOMWindow* toDOMWindow(v8::Isolate*, v8::Handle<v8::Value>); | 846 DOMWindow* toDOMWindow(v8::Isolate*, v8::Handle<v8::Value>); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 989 | 989 |
| 990 private: | 990 private: |
| 991 v8::TryCatch& m_block; | 991 v8::TryCatch& m_block; |
| 992 }; | 992 }; |
| 993 | 993 |
| 994 typedef void (*InstallTemplateFunction)(v8::Local<v8::FunctionTemplate>, v8::Iso
late*); | 994 typedef void (*InstallTemplateFunction)(v8::Local<v8::FunctionTemplate>, v8::Iso
late*); |
| 995 | 995 |
| 996 } // namespace blink | 996 } // namespace blink |
| 997 | 997 |
| 998 #endif // V8Binding_h | 998 #endif // V8Binding_h |
| OLD | NEW |