OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 | 431 |
432 #if ENABLE(CONDITION_PARTIAL) | 432 #if ENABLE(CONDITION_PARTIAL) |
433 static void Node13AttributeSetterCallback(v8::Local<v8::String>, v8::Local<v8::V
alue> jsValue, const v8::PropertyCallbackInfo<void>& info) | 433 static void Node13AttributeSetterCallback(v8::Local<v8::String>, v8::Local<v8::V
alue> jsValue, const v8::PropertyCallbackInfo<void>& info) |
434 { | 434 { |
435 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); | 435 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMSetter"); |
436 TestInterfaceV8Internal::Node13AttributeSetter(jsValue, info); | 436 TestInterfaceV8Internal::Node13AttributeSetter(jsValue, info); |
437 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 437 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
438 } | 438 } |
439 #endif // ENABLE(CONDITION_PARTIAL) | 439 #endif // ENABLE(CONDITION_PARTIAL) |
440 | 440 |
| 441 static void namedItemMethod(const v8::FunctionCallbackInfo<v8::Value>& info) |
| 442 { |
| 443 if (UNLIKELY(info.Length() < 1)) { |
| 444 throwTypeError(ExceptionMessages::failedToExecute("namedItem", "TestInte
rface", ExceptionMessages::notEnoughArguments(1, info.Length())), info.GetIsolat
e()); |
| 445 return; |
| 446 } |
| 447 TestInterface* imp = V8TestInterface::toNative(info.Holder()); |
| 448 V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, name, info[0]); |
| 449 bool result0Enabled = false; |
| 450 RefPtr<Node> result0; |
| 451 bool result1Enabled = false; |
| 452 RefPtr<NodeList> result1; |
| 453 imp->getItem(name, result0Enabled, result0, result1Enabled, result1); |
| 454 if (result0Enabled) { |
| 455 v8SetReturnValue(info, result0.release()); |
| 456 return; |
| 457 } |
| 458 |
| 459 if (result1Enabled) { |
| 460 v8SetReturnValue(info, result1.release()); |
| 461 return; |
| 462 } |
| 463 |
| 464 v8SetReturnValueNull(info); |
| 465 } |
| 466 |
| 467 static void namedItemMethodCallback(const v8::FunctionCallbackInfo<v8::Value>& i
nfo) |
| 468 { |
| 469 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
| 470 TestInterfaceV8Internal::namedItemMethod(info); |
| 471 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
| 472 } |
| 473 |
441 static void implementsVoidMethodMethod(const v8::FunctionCallbackInfo<v8::Value>
& info) | 474 static void implementsVoidMethodMethod(const v8::FunctionCallbackInfo<v8::Value>
& info) |
442 { | 475 { |
443 TestInterface* imp = V8TestInterface::toNative(info.Holder()); | 476 TestInterface* imp = V8TestInterface::toNative(info.Holder()); |
444 TestImplements::implementsVoidMethod(imp); | 477 TestImplements::implementsVoidMethod(imp); |
445 } | 478 } |
446 | 479 |
447 static void implementsVoidMethodMethodCallback(const v8::FunctionCallbackInfo<v8
::Value>& info) | 480 static void implementsVoidMethodMethodCallback(const v8::FunctionCallbackInfo<v8
::Value>& info) |
448 { | 481 { |
449 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); | 482 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMMethod"); |
450 TestInterfaceV8Internal::implementsVoidMethodMethod(info); | 483 TestInterfaceV8Internal::implementsVoidMethodMethod(info); |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 if (info.Holder()->HasRealNamedProperty(name)) | 628 if (info.Holder()->HasRealNamedProperty(name)) |
596 return; | 629 return; |
597 | 630 |
598 TestInterface* collection = V8TestInterface::toNative(info.Holder()); | 631 TestInterface* collection = V8TestInterface::toNative(info.Holder()); |
599 AtomicString propertyName = toCoreAtomicString(name); | 632 AtomicString propertyName = toCoreAtomicString(name); |
600 bool element0Enabled = false; | 633 bool element0Enabled = false; |
601 RefPtr<Node> element0; | 634 RefPtr<Node> element0; |
602 bool element1Enabled = false; | 635 bool element1Enabled = false; |
603 RefPtr<NodeList> element1; | 636 RefPtr<NodeList> element1; |
604 collection->getItem(propertyName, element0Enabled, element0, element1Enabled
, element1); | 637 collection->getItem(propertyName, element0Enabled, element0, element1Enabled
, element1); |
| 638 if (!element0Enabled && !element1Enabled) |
| 639 return; |
605 if (element0Enabled) { | 640 if (element0Enabled) { |
606 v8SetReturnValueFast(info, element0.release(), collection); | 641 v8SetReturnValueFast(info, element0.release(), collection); |
607 return; | 642 return; |
608 } | 643 } |
609 | 644 |
610 if (element1Enabled) { | 645 if (element1Enabled) { |
611 v8SetReturnValueFast(info, element1.release(), collection); | 646 v8SetReturnValueFast(info, element1.release(), collection); |
612 return; | 647 return; |
613 } | 648 } |
614 | 649 |
615 return; | 650 v8SetReturnValueNull(info); |
616 } | 651 } |
617 | 652 |
618 static void namedPropertyGetterCallback(v8::Local<v8::String> name, const v8::Pr
opertyCallbackInfo<v8::Value>& info) | 653 static void namedPropertyGetterCallback(v8::Local<v8::String> name, const v8::Pr
opertyCallbackInfo<v8::Value>& info) |
619 { | 654 { |
620 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMNamedProperty"); | 655 TRACE_EVENT_SET_SAMPLING_STATE("Blink", "DOMNamedProperty"); |
621 TestInterfaceV8Internal::namedPropertyGetter(name, info); | 656 TestInterfaceV8Internal::namedPropertyGetter(name, info); |
622 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); | 657 TRACE_EVENT_SET_SAMPLING_STATE("V8", "V8Execution"); |
623 } | 658 } |
624 | 659 |
625 static void namedPropertySetterCallback(v8::Local<v8::String> name, v8::Local<v8
::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info) | 660 static void namedPropertySetterCallback(v8::Local<v8::String> name, v8::Local<v8
::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info) |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 #endif // ENABLE(CONDITION_PARTIAL) | 731 #endif // ENABLE(CONDITION_PARTIAL) |
697 #if ENABLE(CONDITION_PARTIAL) | 732 #if ENABLE(CONDITION_PARTIAL) |
698 {"supplementalStr2", TestInterfaceV8Internal::supplementalStr2AttributeGette
rCallback, TestInterfaceV8Internal::supplementalStr2AttributeSetterCallback, 0,
0, 0, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttri
bute>(v8::None), 0 /* on instance */}, | 733 {"supplementalStr2", TestInterfaceV8Internal::supplementalStr2AttributeGette
rCallback, TestInterfaceV8Internal::supplementalStr2AttributeSetterCallback, 0,
0, 0, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttri
bute>(v8::None), 0 /* on instance */}, |
699 #endif // ENABLE(CONDITION_PARTIAL) | 734 #endif // ENABLE(CONDITION_PARTIAL) |
700 #if ENABLE(CONDITION_PARTIAL) | 735 #if ENABLE(CONDITION_PARTIAL) |
701 {"supplementalNode", TestInterfaceV8Internal::supplementalNodeAttributeGette
rCallback, TestInterfaceV8Internal::supplementalNodeAttributeSetterCallback, 0,
0, 0, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttri
bute>(v8::None), 0 /* on instance */}, | 736 {"supplementalNode", TestInterfaceV8Internal::supplementalNodeAttributeGette
rCallback, TestInterfaceV8Internal::supplementalNodeAttributeSetterCallback, 0,
0, 0, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttri
bute>(v8::None), 0 /* on instance */}, |
702 #endif // ENABLE(CONDITION_PARTIAL) | 737 #endif // ENABLE(CONDITION_PARTIAL) |
703 }; | 738 }; |
704 | 739 |
705 static const V8DOMConfiguration::MethodConfiguration V8TestInterfaceMethods[] =
{ | 740 static const V8DOMConfiguration::MethodConfiguration V8TestInterfaceMethods[] =
{ |
| 741 {"namedItem", TestInterfaceV8Internal::namedItemMethodCallback, 0, 1}, |
706 {"implementsVoidMethod", TestInterfaceV8Internal::implementsVoidMethodMethod
Callback, 0, 0}, | 742 {"implementsVoidMethod", TestInterfaceV8Internal::implementsVoidMethodMethod
Callback, 0, 0}, |
707 {"implementsComplexMethod", TestInterfaceV8Internal::implementsComplexMethod
MethodCallback, 0, 2}, | 743 {"implementsComplexMethod", TestInterfaceV8Internal::implementsComplexMethod
MethodCallback, 0, 2}, |
708 {"implementsCustomVoidMethod", TestInterfaceV8Internal::implementsCustomVoid
MethodMethodCallback, 0, 0}, | 744 {"implementsCustomVoidMethod", TestInterfaceV8Internal::implementsCustomVoid
MethodMethodCallback, 0, 0}, |
709 #if ENABLE(CONDITION_PARTIAL) | 745 #if ENABLE(CONDITION_PARTIAL) |
710 {"supplementalMethod1", TestInterfaceV8Internal::supplementalMethod1MethodCa
llback, 0, 0}, | 746 {"supplementalMethod1", TestInterfaceV8Internal::supplementalMethod1MethodCa
llback, 0, 0}, |
711 #endif // ENABLE(CONDITION_PARTIAL) | 747 #endif // ENABLE(CONDITION_PARTIAL) |
712 #if ENABLE(CONDITION_PARTIAL) | 748 #if ENABLE(CONDITION_PARTIAL) |
713 {"supplementalMethod2", TestInterfaceV8Internal::supplementalMethod2MethodCa
llback, 0, 2}, | 749 {"supplementalMethod2", TestInterfaceV8Internal::supplementalMethod2MethodCa
llback, 0, 2}, |
714 #endif // ENABLE(CONDITION_PARTIAL) | 750 #endif // ENABLE(CONDITION_PARTIAL) |
715 #if ENABLE(CONDITION_PARTIAL) | 751 #if ENABLE(CONDITION_PARTIAL) |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 } | 886 } |
851 | 887 |
852 template<> | 888 template<> |
853 v8::Handle<v8::Value> toV8NoInline(TestInterface* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) | 889 v8::Handle<v8::Value> toV8NoInline(TestInterface* impl, v8::Handle<v8::Object> c
reationContext, v8::Isolate* isolate) |
854 { | 890 { |
855 return toV8(impl, creationContext, isolate); | 891 return toV8(impl, creationContext, isolate); |
856 } | 892 } |
857 | 893 |
858 } // namespace WebCore | 894 } // namespace WebCore |
859 #endif // ENABLE(Condition1) || ENABLE(Condition2) | 895 #endif // ENABLE(Condition1) || ENABLE(Condition2) |
OLD | NEW |