| OLD | NEW |
| 1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |
| 2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> | 2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> |
| 3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> | 3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> |
| 4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> | 4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> |
| 5 # Copyright (C) 2006 Apple Computer, Inc. | 5 # Copyright (C) 2006 Apple Computer, Inc. |
| 6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. | 6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. |
| 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> | 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> |
| 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. | 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 10 # Copyright (C) 2012 Ericsson AB. All rights reserved. | 10 # Copyright (C) 2012 Ericsson AB. All rights reserved. |
| (...skipping 1239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1250 | 1250 |
| 1251 AddToImplIncludes("bindings/v8/BindingSecurity.h"); | 1251 AddToImplIncludes("bindings/v8/BindingSecurity.h"); |
| 1252 AddToImplIncludes("bindings/v8/ExceptionState.h"); | 1252 AddToImplIncludes("bindings/v8/ExceptionState.h"); |
| 1253 $implementation{nameSpaceInternal}->add(<<END); | 1253 $implementation{nameSpaceInternal}->add(<<END); |
| 1254 static void ${implClassName}DomainSafeFunctionSetter(v8::Local<v8::String> name,
v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) | 1254 static void ${implClassName}DomainSafeFunctionSetter(v8::Local<v8::String> name,
v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) |
| 1255 { | 1255 { |
| 1256 v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${
v8ClassName}::GetTemplate(info.GetIsolate(), worldType(info.GetIsolate()))); | 1256 v8::Handle<v8::Object> holder = info.This()->FindInstanceInPrototypeChain(${
v8ClassName}::GetTemplate(info.GetIsolate(), worldType(info.GetIsolate()))); |
| 1257 if (holder.IsEmpty()) | 1257 if (holder.IsEmpty()) |
| 1258 return; | 1258 return; |
| 1259 ${implClassName}* imp = ${v8ClassName}::toNative(holder); | 1259 ${implClassName}* imp = ${v8ClassName}::toNative(holder); |
| 1260 ExceptionState es(info.GetIsolate()); | 1260 ExceptionState es(info.Holder(), info.GetIsolate()); |
| 1261 if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), es)) { | 1261 if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), es)) { |
| 1262 es.throwIfNeeded(); | 1262 es.throwIfNeeded(); |
| 1263 return; | 1263 return; |
| 1264 } | 1264 } |
| 1265 | 1265 |
| 1266 info.This()->SetHiddenValue(name, jsValue); | 1266 info.This()->SetHiddenValue(name, jsValue); |
| 1267 } | 1267 } |
| 1268 | 1268 |
| 1269 END | 1269 END |
| 1270 } | 1270 } |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1488 $code .= <<END; | 1488 $code .= <<END; |
| 1489 ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder()); | 1489 ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder()); |
| 1490 END | 1490 END |
| 1491 } | 1491 } |
| 1492 } | 1492 } |
| 1493 | 1493 |
| 1494 my $useExceptions = 1 if $attribute->extendedAttributes->{"GetterRaisesExcep
tion"} || $attribute->extendedAttributes->{"RaisesException"}; | 1494 my $useExceptions = 1 if $attribute->extendedAttributes->{"GetterRaisesExcep
tion"} || $attribute->extendedAttributes->{"RaisesException"}; |
| 1495 if ($useExceptions || $attribute->extendedAttributes->{"CheckSecurityForNode
"}) { | 1495 if ($useExceptions || $attribute->extendedAttributes->{"CheckSecurityForNode
"}) { |
| 1496 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); | 1496 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); |
| 1497 AddToImplIncludes("bindings/v8/ExceptionState.h"); | 1497 AddToImplIncludes("bindings/v8/ExceptionState.h"); |
| 1498 $code .= " ExceptionState es(info.GetIsolate());\n"; | 1498 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 1499 } | 1499 } |
| 1500 | 1500 |
| 1501 # Generate security checks if necessary | 1501 # Generate security checks if necessary |
| 1502 if ($attribute->extendedAttributes->{"CheckSecurityForNode"}) { | 1502 if ($attribute->extendedAttributes->{"CheckSecurityForNode"}) { |
| 1503 AddToImplIncludes("bindings/v8/BindingSecurity.h"); | 1503 AddToImplIncludes("bindings/v8/BindingSecurity.h"); |
| 1504 $code .= " if (!BindingSecurity::shouldAllowAccessToNode(imp->" . Get
ImplName($attribute) . "(), es)) {\n"; | 1504 $code .= " if (!BindingSecurity::shouldAllowAccessToNode(imp->" . Get
ImplName($attribute) . "(), es)) {\n"; |
| 1505 $code .= " v8SetReturnValueNull(info);\n"; | 1505 $code .= " v8SetReturnValueNull(info);\n"; |
| 1506 $code .= " es.throwIfNeeded();\n"; | 1506 $code .= " es.throwIfNeeded();\n"; |
| 1507 $code .= " return;\n"; | 1507 $code .= " return;\n"; |
| 1508 $code .= " }\n"; | 1508 $code .= " }\n"; |
| (...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1757 | 1757 |
| 1758 my $code = ""; | 1758 my $code = ""; |
| 1759 $code .= <<END; | 1759 $code .= <<END; |
| 1760 static void ${implClassName}ReplaceableAttributeSetter(v8::Local<v8::String> nam
e, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) | 1760 static void ${implClassName}ReplaceableAttributeSetter(v8::Local<v8::String> nam
e, v8::Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<void>& info) |
| 1761 { | 1761 { |
| 1762 END | 1762 END |
| 1763 if ($interface->extendedAttributes->{"CheckSecurity"}) { | 1763 if ($interface->extendedAttributes->{"CheckSecurity"}) { |
| 1764 AddToImplIncludes("bindings/v8/BindingSecurity.h"); | 1764 AddToImplIncludes("bindings/v8/BindingSecurity.h"); |
| 1765 $code .= <<END; | 1765 $code .= <<END; |
| 1766 ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder()); | 1766 ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder()); |
| 1767 ExceptionState es(info.GetIsolate()); | 1767 ExceptionState es(info.Holder(), info.GetIsolate()); |
| 1768 if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), es)) { | 1768 if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), es)) { |
| 1769 es.throwIfNeeded(); | 1769 es.throwIfNeeded(); |
| 1770 return; | 1770 return; |
| 1771 } | 1771 } |
| 1772 END | 1772 END |
| 1773 } | 1773 } |
| 1774 | 1774 |
| 1775 $code .= <<END; | 1775 $code .= <<END; |
| 1776 info.This()->ForceSet(name, jsValue); | 1776 info.This()->ForceSet(name, jsValue); |
| 1777 } | 1777 } |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1990 } | 1990 } |
| 1991 END | 1991 END |
| 1992 $expression = $expression . "->propertyReference()"; | 1992 $expression = $expression . "->propertyReference()"; |
| 1993 } | 1993 } |
| 1994 | 1994 |
| 1995 my $useExceptions = 1 if $attribute->extendedAttributes->{"SetterRaisesExcep
tion"} || $attribute->extendedAttributes->{"RaisesException"}; | 1995 my $useExceptions = 1 if $attribute->extendedAttributes->{"SetterRaisesExcep
tion"} || $attribute->extendedAttributes->{"RaisesException"}; |
| 1996 | 1996 |
| 1997 if ($useExceptions) { | 1997 if ($useExceptions) { |
| 1998 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); | 1998 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); |
| 1999 AddToImplIncludes("bindings/v8/ExceptionState.h"); | 1999 AddToImplIncludes("bindings/v8/ExceptionState.h"); |
| 2000 $code .= " ExceptionState es(info.GetIsolate());\n"; | 2000 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 2001 } | 2001 } |
| 2002 | 2002 |
| 2003 if ($attribute->type eq "EventHandler") { | 2003 if ($attribute->type eq "EventHandler") { |
| 2004 my $implementedBy = $attribute->extendedAttributes->{"ImplementedBy"}; | 2004 my $implementedBy = $attribute->extendedAttributes->{"ImplementedBy"}; |
| 2005 my $implementedByImplName; | 2005 my $implementedByImplName; |
| 2006 if ($implementedBy) { | 2006 if ($implementedBy) { |
| 2007 $implementedByImplName = GetImplNameFromImplementedBy($implementedBy
); | 2007 $implementedByImplName = GetImplNameFromImplementedBy($implementedBy
); |
| 2008 } | 2008 } |
| 2009 if (!InheritsInterface($interface, "Node")) { | 2009 if (!InheritsInterface($interface, "Node")) { |
| 2010 my $attrImplName = GetImplName($attribute); | 2010 my $attrImplName = GetImplName($attribute); |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2293 my $passRefPtrHandling = ($name eq "addEventListener") ? "" : ".get()"; | 2293 my $passRefPtrHandling = ($name eq "addEventListener") ? "" : ".get()"; |
| 2294 my $hiddenDependencyAction = ($name eq "addEventListener") ? "create" :
"remove"; | 2294 my $hiddenDependencyAction = ($name eq "addEventListener") ? "create" :
"remove"; |
| 2295 | 2295 |
| 2296 AddToImplIncludes("bindings/v8/BindingSecurity.h"); | 2296 AddToImplIncludes("bindings/v8/BindingSecurity.h"); |
| 2297 AddToImplIncludes("bindings/v8/ExceptionState.h"); | 2297 AddToImplIncludes("bindings/v8/ExceptionState.h"); |
| 2298 AddToImplIncludes("bindings/v8/V8EventListenerList.h"); | 2298 AddToImplIncludes("bindings/v8/V8EventListenerList.h"); |
| 2299 AddToImplIncludes("core/frame/DOMWindow.h"); | 2299 AddToImplIncludes("core/frame/DOMWindow.h"); |
| 2300 $code .= <<END; | 2300 $code .= <<END; |
| 2301 EventTarget* impl = ${v8ClassName}::toNative(info.Holder()); | 2301 EventTarget* impl = ${v8ClassName}::toNative(info.Holder()); |
| 2302 if (DOMWindow* window = impl->toDOMWindow()) { | 2302 if (DOMWindow* window = impl->toDOMWindow()) { |
| 2303 ExceptionState es(info.GetIsolate()); | 2303 ExceptionState es(info.Holder(), info.GetIsolate()); |
| 2304 if (!BindingSecurity::shouldAllowAccessToFrame(window->frame(), es)) { | 2304 if (!BindingSecurity::shouldAllowAccessToFrame(window->frame(), es)) { |
| 2305 es.throwIfNeeded(); | 2305 es.throwIfNeeded(); |
| 2306 return; | 2306 return; |
| 2307 } | 2307 } |
| 2308 | 2308 |
| 2309 if (!window->document()) | 2309 if (!window->document()) |
| 2310 return; | 2310 return; |
| 2311 } | 2311 } |
| 2312 | 2312 |
| 2313 RefPtr<EventListener> listener = V8EventListenerList::getEventListener(info[
1], false, ListenerFind${lookupType}); | 2313 RefPtr<EventListener> listener = V8EventListenerList::getEventListener(info[
1], false, ListenerFind${lookupType}); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2362 ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder()); | 2362 ${implClassName}* imp = ${v8ClassName}::toNative(info.Holder()); |
| 2363 END | 2363 END |
| 2364 } | 2364 } |
| 2365 | 2365 |
| 2366 $code .= GenerateCustomElementInvocationScopeIfNeeded($funcExt); | 2366 $code .= GenerateCustomElementInvocationScopeIfNeeded($funcExt); |
| 2367 | 2367 |
| 2368 my $raisesExceptions = $function->extendedAttributes->{"RaisesException"} ||
($interface->extendedAttributes->{"CheckSecurity"} && !$function->extendedAttri
butes->{"DoNotCheckSecurity"}); | 2368 my $raisesExceptions = $function->extendedAttributes->{"RaisesException"} ||
($interface->extendedAttributes->{"CheckSecurity"} && !$function->extendedAttri
butes->{"DoNotCheckSecurity"}); |
| 2369 if ($raisesExceptions) { | 2369 if ($raisesExceptions) { |
| 2370 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); | 2370 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); |
| 2371 AddToImplIncludes("bindings/v8/ExceptionState.h"); | 2371 AddToImplIncludes("bindings/v8/ExceptionState.h"); |
| 2372 $code .= " ExceptionState es(info.GetIsolate());\n"; | 2372 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 2373 } | 2373 } |
| 2374 | 2374 |
| 2375 # Check domain security if needed | 2375 # Check domain security if needed |
| 2376 if ($interface->extendedAttributes->{"CheckSecurity"} && !$function->extende
dAttributes->{"DoNotCheckSecurity"}) { | 2376 if ($interface->extendedAttributes->{"CheckSecurity"} && !$function->extende
dAttributes->{"DoNotCheckSecurity"}) { |
| 2377 # We have not find real use cases yet. | 2377 # We have not find real use cases yet. |
| 2378 AddToImplIncludes("bindings/v8/BindingSecurity.h"); | 2378 AddToImplIncludes("bindings/v8/BindingSecurity.h"); |
| 2379 $code .= <<END; | 2379 $code .= <<END; |
| 2380 if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), es)) { | 2380 if (!BindingSecurity::shouldAllowAccessToFrame(imp->frame(), es)) { |
| 2381 es.throwIfNeeded(); | 2381 es.throwIfNeeded(); |
| 2382 return; | 2382 return; |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2691 { | 2691 { |
| 2692 END | 2692 END |
| 2693 | 2693 |
| 2694 if ($function->overloadedIndex == 0) { | 2694 if ($function->overloadedIndex == 0) { |
| 2695 $code .= GenerateArgumentsCountCheck($function, $interface); | 2695 $code .= GenerateArgumentsCountCheck($function, $interface); |
| 2696 } | 2696 } |
| 2697 | 2697 |
| 2698 if ($raisesExceptions) { | 2698 if ($raisesExceptions) { |
| 2699 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); | 2699 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); |
| 2700 AddToImplIncludes("bindings/v8/ExceptionState.h"); | 2700 AddToImplIncludes("bindings/v8/ExceptionState.h"); |
| 2701 $code .= " ExceptionState es(info.GetIsolate());\n"; | 2701 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 2702 } | 2702 } |
| 2703 | 2703 |
| 2704 # FIXME: Currently [Constructor(...)] does not yet support optional argument
s without [Default=...] | 2704 # FIXME: Currently [Constructor(...)] does not yet support optional argument
s without [Default=...] |
| 2705 my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersC
heck($function, $interface, ""); | 2705 my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersC
heck($function, $interface, ""); |
| 2706 $code .= $parameterCheckString; | 2706 $code .= $parameterCheckString; |
| 2707 | 2707 |
| 2708 if ($interface->extendedAttributes->{"ConstructorCallWith"}) { | 2708 if ($interface->extendedAttributes->{"ConstructorCallWith"}) { |
| 2709 if ($interface->extendedAttributes->{"ConstructorCallWith"} eq "Executio
nContext") { | 2709 if ($interface->extendedAttributes->{"ConstructorCallWith"} eq "Executio
nContext") { |
| 2710 push(@beforeArgumentList, "context"); | 2710 push(@beforeArgumentList, "context"); |
| 2711 $code .= "\n"; | 2711 $code .= "\n"; |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2983 // may end up being the only node in the map and get garbage-collected prema
turely. | 2983 // may end up being the only node in the map and get garbage-collected prema
turely. |
| 2984 toV8(document, info.Holder(), info.GetIsolate()); | 2984 toV8(document, info.Holder(), info.GetIsolate()); |
| 2985 | 2985 |
| 2986 END | 2986 END |
| 2987 | 2987 |
| 2988 $code .= GenerateArgumentsCountCheck($function, $interface); | 2988 $code .= GenerateArgumentsCountCheck($function, $interface); |
| 2989 | 2989 |
| 2990 if ($raisesExceptions) { | 2990 if ($raisesExceptions) { |
| 2991 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); | 2991 AddToImplIncludes("bindings/v8/ExceptionMessages.h"); |
| 2992 AddToImplIncludes("bindings/v8/ExceptionState.h"); | 2992 AddToImplIncludes("bindings/v8/ExceptionState.h"); |
| 2993 $code .= " ExceptionState es(info.GetIsolate());\n"; | 2993 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 2994 } | 2994 } |
| 2995 | 2995 |
| 2996 my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersC
heck($function, $interface); | 2996 my ($parameterCheckString, $paramIndex, %replacements) = GenerateParametersC
heck($function, $interface); |
| 2997 $code .= $parameterCheckString; | 2997 $code .= $parameterCheckString; |
| 2998 | 2998 |
| 2999 push(@beforeArgumentList, "*document"); | 2999 push(@beforeArgumentList, "*document"); |
| 3000 | 3000 |
| 3001 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { | 3001 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { |
| 3002 push(@afterArgumentList, "es"); | 3002 push(@afterArgumentList, "es"); |
| 3003 } | 3003 } |
| (...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3485 $nativeValue .= ".release()" if (IsRefPtrType($returnType)); | 3485 $nativeValue .= ".release()" if (IsRefPtrType($returnType)); |
| 3486 my $isNull = GenerateIsNullExpression($returnType, "element"); | 3486 my $isNull = GenerateIsNullExpression($returnType, "element"); |
| 3487 my $returnJSValueCode = NativeToJSValue($indexedGetterFunction->type, $index
edGetterFunction->extendedAttributes, $nativeValue, " ", "", "info.GetIsolate
()", "info", "collection", "", "return"); | 3487 my $returnJSValueCode = NativeToJSValue($indexedGetterFunction->type, $index
edGetterFunction->extendedAttributes, $nativeValue, " ", "", "info.GetIsolate
()", "info", "collection", "", "return"); |
| 3488 my $raisesExceptions = $indexedGetterFunction->extendedAttributes->{"RaisesE
xception"}; | 3488 my $raisesExceptions = $indexedGetterFunction->extendedAttributes->{"RaisesE
xception"}; |
| 3489 my $methodCallCode = GenerateMethodCall($returnType, "element", "collection-
>${methodName}", "index", $raisesExceptions); | 3489 my $methodCallCode = GenerateMethodCall($returnType, "element", "collection-
>${methodName}", "index", $raisesExceptions); |
| 3490 my $getterCode = "static void indexedPropertyGetter(uint32_t index, const v8
::PropertyCallbackInfo<v8::Value>& info)\n"; | 3490 my $getterCode = "static void indexedPropertyGetter(uint32_t index, const v8
::PropertyCallbackInfo<v8::Value>& info)\n"; |
| 3491 $getterCode .= "{\n"; | 3491 $getterCode .= "{\n"; |
| 3492 $getterCode .= " ASSERT(V8DOMWrapper::maybeDOMWrapper(info.Holder()));\n"
; | 3492 $getterCode .= " ASSERT(V8DOMWrapper::maybeDOMWrapper(info.Holder()));\n"
; |
| 3493 $getterCode .= " ${implClassName}* collection = ${v8ClassName}::toNative(
info.Holder());\n"; | 3493 $getterCode .= " ${implClassName}* collection = ${v8ClassName}::toNative(
info.Holder());\n"; |
| 3494 if ($raisesExceptions) { | 3494 if ($raisesExceptions) { |
| 3495 $getterCode .= " ExceptionState es(info.GetIsolate());\n"; | 3495 $getterCode .= " ExceptionState es(info.Holder(), info.GetIsolate());
\n"; |
| 3496 } | 3496 } |
| 3497 $getterCode .= $methodCallCode . "\n"; | 3497 $getterCode .= $methodCallCode . "\n"; |
| 3498 if ($raisesExceptions) { | 3498 if ($raisesExceptions) { |
| 3499 $getterCode .= " if (es.throwIfNeeded())\n"; | 3499 $getterCode .= " if (es.throwIfNeeded())\n"; |
| 3500 $getterCode .= " return;\n"; | 3500 $getterCode .= " return;\n"; |
| 3501 } | 3501 } |
| 3502 if (IsUnionType($returnType)) { | 3502 if (IsUnionType($returnType)) { |
| 3503 $getterCode .= "${returnJSValueCode}\n"; | 3503 $getterCode .= "${returnJSValueCode}\n"; |
| 3504 $getterCode .= " return;\n"; | 3504 $getterCode .= " return;\n"; |
| 3505 } else { | 3505 } else { |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3585 my $treatUndefinedAs = $indexedSetterFunction->parameters->[1]->extendedAttr
ibutes->{"TreatUndefinedAs"}; | 3585 my $treatUndefinedAs = $indexedSetterFunction->parameters->[1]->extendedAttr
ibutes->{"TreatUndefinedAs"}; |
| 3586 my $asSetterValue = 0; | 3586 my $asSetterValue = 0; |
| 3587 | 3587 |
| 3588 my $code = "static void indexedPropertySetter(uint32_t index, v8::Local<v8::
Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)\n"; | 3588 my $code = "static void indexedPropertySetter(uint32_t index, v8::Local<v8::
Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)\n"; |
| 3589 $code .= "{\n"; | 3589 $code .= "{\n"; |
| 3590 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; | 3590 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; |
| 3591 $code .= JSValueToNativeStatement($indexedSetterFunction->parameters->[1]->t
ype, $indexedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "pro
pertyValue", " ", "info.GetIsolate()"); | 3591 $code .= JSValueToNativeStatement($indexedSetterFunction->parameters->[1]->t
ype, $indexedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "pro
pertyValue", " ", "info.GetIsolate()"); |
| 3592 | 3592 |
| 3593 my $extraArguments = ""; | 3593 my $extraArguments = ""; |
| 3594 if ($raisesExceptions) { | 3594 if ($raisesExceptions) { |
| 3595 $code .= " ExceptionState es(info.GetIsolate());\n"; | 3595 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 3596 $extraArguments = ", es"; | 3596 $extraArguments = ", es"; |
| 3597 } | 3597 } |
| 3598 my @conditions = (); | 3598 my @conditions = (); |
| 3599 my @statements = (); | 3599 my @statements = (); |
| 3600 if ($treatNullAs && $treatNullAs ne "NullString") { | 3600 if ($treatNullAs && $treatNullAs ne "NullString") { |
| 3601 push @conditions, "jsValue->IsNull()"; | 3601 push @conditions, "jsValue->IsNull()"; |
| 3602 push @statements, "collection->${treatNullAs}(index$extraArguments);"; | 3602 push @statements, "collection->${treatNullAs}(index$extraArguments);"; |
| 3603 } | 3603 } |
| 3604 if ($treatUndefinedAs && $treatUndefinedAs ne "NullString") { | 3604 if ($treatUndefinedAs && $treatUndefinedAs ne "NullString") { |
| 3605 push @conditions, "jsValue->IsUndefined()"; | 3605 push @conditions, "jsValue->IsUndefined()"; |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3850 $code .= " if (info.Holder()->HasRealNamedCallbackProperty(name))\n"; | 3850 $code .= " if (info.Holder()->HasRealNamedCallbackProperty(name))\n"; |
| 3851 $code .= " return;\n"; | 3851 $code .= " return;\n"; |
| 3852 $code .= " if (info.Holder()->HasRealNamedProperty(name))\n"; | 3852 $code .= " if (info.Holder()->HasRealNamedProperty(name))\n"; |
| 3853 $code .= " return;\n"; | 3853 $code .= " return;\n"; |
| 3854 } | 3854 } |
| 3855 $code .= "\n"; | 3855 $code .= "\n"; |
| 3856 $code .= " ASSERT(V8DOMWrapper::maybeDOMWrapper(info.Holder()));\n"; | 3856 $code .= " ASSERT(V8DOMWrapper::maybeDOMWrapper(info.Holder()));\n"; |
| 3857 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; | 3857 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; |
| 3858 $code .= " AtomicString propertyName = toWebCoreAtomicString(name);\n"; | 3858 $code .= " AtomicString propertyName = toWebCoreAtomicString(name);\n"; |
| 3859 if ($raisesExceptions) { | 3859 if ($raisesExceptions) { |
| 3860 $code .= " ExceptionState es(info.GetIsolate());\n"; | 3860 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 3861 } | 3861 } |
| 3862 $code .= $methodCallCode . "\n"; | 3862 $code .= $methodCallCode . "\n"; |
| 3863 if ($raisesExceptions) { | 3863 if ($raisesExceptions) { |
| 3864 $code .= " if (es.throwIfNeeded())\n"; | 3864 $code .= " if (es.throwIfNeeded())\n"; |
| 3865 $code .= " return;\n"; | 3865 $code .= " return;\n"; |
| 3866 } | 3866 } |
| 3867 if (IsUnionType($returnType)) { | 3867 if (IsUnionType($returnType)) { |
| 3868 $code .= "${returnJSValueCode}\n"; | 3868 $code .= "${returnJSValueCode}\n"; |
| 3869 $code .= " return;\n"; | 3869 $code .= " return;\n"; |
| 3870 } else { | 3870 } else { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 3897 $code .= " if (info.Holder()->HasRealNamedCallbackProperty(name))\n"; | 3897 $code .= " if (info.Holder()->HasRealNamedCallbackProperty(name))\n"; |
| 3898 $code .= " return;\n"; | 3898 $code .= " return;\n"; |
| 3899 $code .= " if (info.Holder()->HasRealNamedProperty(name))\n"; | 3899 $code .= " if (info.Holder()->HasRealNamedProperty(name))\n"; |
| 3900 $code .= " return;\n"; | 3900 $code .= " return;\n"; |
| 3901 } | 3901 } |
| 3902 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; | 3902 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; |
| 3903 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[0]->typ
e, $namedSetterFunction->extendedAttributes, $asSetterValue, "name", "propertyNa
me", " ", "info.GetIsolate()"); | 3903 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[0]->typ
e, $namedSetterFunction->extendedAttributes, $asSetterValue, "name", "propertyNa
me", " ", "info.GetIsolate()"); |
| 3904 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[1]->typ
e, $namedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "propert
yValue", " ", "info.GetIsolate()"); | 3904 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[1]->typ
e, $namedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "propert
yValue", " ", "info.GetIsolate()"); |
| 3905 my $extraArguments = ""; | 3905 my $extraArguments = ""; |
| 3906 if ($raisesExceptions) { | 3906 if ($raisesExceptions) { |
| 3907 $code .= " ExceptionState es(info.GetIsolate());\n"; | 3907 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 3908 $extraArguments = ", es"; | 3908 $extraArguments = ", es"; |
| 3909 } | 3909 } |
| 3910 | 3910 |
| 3911 my @conditions = (); | 3911 my @conditions = (); |
| 3912 my @statements = (); | 3912 my @statements = (); |
| 3913 if ($treatNullAs && $treatNullAs ne "NullString") { | 3913 if ($treatNullAs && $treatNullAs ne "NullString") { |
| 3914 push @conditions, "jsValue->IsNull()"; | 3914 push @conditions, "jsValue->IsNull()"; |
| 3915 push @statements, "collection->${treatNullAs}(propertyName$extraArgument
s);"; | 3915 push @statements, "collection->${treatNullAs}(propertyName$extraArgument
s);"; |
| 3916 } | 3916 } |
| 3917 if ($treatUndefinedAs && $treatUndefinedAs ne "NullString") { | 3917 if ($treatUndefinedAs && $treatUndefinedAs ne "NullString") { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 3941 my $v8ClassName = GetV8ClassName($interface); | 3941 my $v8ClassName = GetV8ClassName($interface); |
| 3942 my $methodName = GetImplName($indexedDeleterFunction); | 3942 my $methodName = GetImplName($indexedDeleterFunction); |
| 3943 | 3943 |
| 3944 my $raisesExceptions = $indexedDeleterFunction->extendedAttributes->{"Raises
Exception"}; | 3944 my $raisesExceptions = $indexedDeleterFunction->extendedAttributes->{"Raises
Exception"}; |
| 3945 | 3945 |
| 3946 my $code = "static void indexedPropertyDeleter(unsigned index, const v8::Pro
pertyCallbackInfo<v8::Boolean>& info)\n"; | 3946 my $code = "static void indexedPropertyDeleter(unsigned index, const v8::Pro
pertyCallbackInfo<v8::Boolean>& info)\n"; |
| 3947 $code .= "{\n"; | 3947 $code .= "{\n"; |
| 3948 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; | 3948 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; |
| 3949 my $extraArguments = ""; | 3949 my $extraArguments = ""; |
| 3950 if ($raisesExceptions) { | 3950 if ($raisesExceptions) { |
| 3951 $code .= " ExceptionState es(info.GetIsolate());\n"; | 3951 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 3952 $extraArguments = ", es"; | 3952 $extraArguments = ", es"; |
| 3953 } | 3953 } |
| 3954 $code .= " bool result = collection->${methodName}(index$extraArguments);
\n"; | 3954 $code .= " bool result = collection->${methodName}(index$extraArguments);
\n"; |
| 3955 if ($raisesExceptions) { | 3955 if ($raisesExceptions) { |
| 3956 $code .= " if (es.throwIfNeeded())\n"; | 3956 $code .= " if (es.throwIfNeeded())\n"; |
| 3957 $code .= " return;\n"; | 3957 $code .= " return;\n"; |
| 3958 } | 3958 } |
| 3959 $code .= " return v8SetReturnValueBool(info, result);\n"; | 3959 $code .= " return v8SetReturnValueBool(info, result);\n"; |
| 3960 $code .= "}\n\n"; | 3960 $code .= "}\n\n"; |
| 3961 $implementation{nameSpaceInternal}->add($code); | 3961 $implementation{nameSpaceInternal}->add($code); |
| 3962 } | 3962 } |
| 3963 | 3963 |
| 3964 sub GenerateImplementationNamedPropertyDeleter | 3964 sub GenerateImplementationNamedPropertyDeleter |
| 3965 { | 3965 { |
| 3966 my $interface = shift; | 3966 my $interface = shift; |
| 3967 my $namedDeleterFunction = shift; | 3967 my $namedDeleterFunction = shift; |
| 3968 my $implClassName = GetImplName($interface); | 3968 my $implClassName = GetImplName($interface); |
| 3969 my $v8ClassName = GetV8ClassName($interface); | 3969 my $v8ClassName = GetV8ClassName($interface); |
| 3970 my $methodName = GetImplName($namedDeleterFunction); | 3970 my $methodName = GetImplName($namedDeleterFunction); |
| 3971 | 3971 |
| 3972 my $raisesExceptions = $namedDeleterFunction->extendedAttributes->{"RaisesEx
ception"}; | 3972 my $raisesExceptions = $namedDeleterFunction->extendedAttributes->{"RaisesEx
ception"}; |
| 3973 | 3973 |
| 3974 my $code = "static void namedPropertyDeleter(v8::Local<v8::String> name, con
st v8::PropertyCallbackInfo<v8::Boolean>& info)\n"; | 3974 my $code = "static void namedPropertyDeleter(v8::Local<v8::String> name, con
st v8::PropertyCallbackInfo<v8::Boolean>& info)\n"; |
| 3975 $code .= "{\n"; | 3975 $code .= "{\n"; |
| 3976 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; | 3976 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; |
| 3977 $code .= " AtomicString propertyName = toWebCoreAtomicString(name);\n"; | 3977 $code .= " AtomicString propertyName = toWebCoreAtomicString(name);\n"; |
| 3978 my $extraArguments = ""; | 3978 my $extraArguments = ""; |
| 3979 if ($raisesExceptions) { | 3979 if ($raisesExceptions) { |
| 3980 $code .= " ExceptionState es(info.GetIsolate());\n"; | 3980 $code .= " ExceptionState es(info.Holder(), info.GetIsolate());\n"; |
| 3981 $extraArguments = ", es"; | 3981 $extraArguments = ", es"; |
| 3982 } | 3982 } |
| 3983 $code .= " bool result = collection->${methodName}(propertyName$extraArgu
ments);\n"; | 3983 $code .= " bool result = collection->${methodName}(propertyName$extraArgu
ments);\n"; |
| 3984 if ($raisesExceptions) { | 3984 if ($raisesExceptions) { |
| 3985 $code .= " if (es.throwIfNeeded())\n"; | 3985 $code .= " if (es.throwIfNeeded())\n"; |
| 3986 $code .= " return;\n"; | 3986 $code .= " return;\n"; |
| 3987 } | 3987 } |
| 3988 $code .= " return v8SetReturnValueBool(info, result);\n"; | 3988 $code .= " return v8SetReturnValueBool(info, result);\n"; |
| 3989 $code .= "}\n\n"; | 3989 $code .= "}\n\n"; |
| 3990 $implementation{nameSpaceInternal}->add($code); | 3990 $implementation{nameSpaceInternal}->add($code); |
| 3991 } | 3991 } |
| 3992 | 3992 |
| 3993 sub GenerateImplementationNamedPropertyEnumerator | 3993 sub GenerateImplementationNamedPropertyEnumerator |
| 3994 { | 3994 { |
| 3995 my $interface = shift; | 3995 my $interface = shift; |
| 3996 my $implClassName = GetImplName($interface); | 3996 my $implClassName = GetImplName($interface); |
| 3997 my $v8ClassName = GetV8ClassName($interface); | 3997 my $v8ClassName = GetV8ClassName($interface); |
| 3998 | 3998 |
| 3999 $implementation{nameSpaceInternal}->add(<<END); | 3999 $implementation{nameSpaceInternal}->add(<<END); |
| 4000 static void namedPropertyEnumerator(const v8::PropertyCallbackInfo<v8::Array>& i
nfo) | 4000 static void namedPropertyEnumerator(const v8::PropertyCallbackInfo<v8::Array>& i
nfo) |
| 4001 { | 4001 { |
| 4002 ExceptionState es(info.GetIsolate()); | 4002 ExceptionState es(info.Holder(), info.GetIsolate()); |
| 4003 ${implClassName}* collection = ${v8ClassName}::toNative(info.Holder()); | 4003 ${implClassName}* collection = ${v8ClassName}::toNative(info.Holder()); |
| 4004 Vector<String> names; | 4004 Vector<String> names; |
| 4005 collection->namedPropertyEnumerator(names, es); | 4005 collection->namedPropertyEnumerator(names, es); |
| 4006 if (es.throwIfNeeded()) | 4006 if (es.throwIfNeeded()) |
| 4007 return; | 4007 return; |
| 4008 v8::Handle<v8::Array> v8names = v8::Array::New(names.size()); | 4008 v8::Handle<v8::Array> v8names = v8::Array::New(names.size()); |
| 4009 for (size_t i = 0; i < names.size(); ++i) | 4009 for (size_t i = 0; i < names.size(); ++i) |
| 4010 v8names->Set(v8::Integer::New(i, info.GetIsolate()), v8String(names[i],
info.GetIsolate())); | 4010 v8names->Set(v8::Integer::New(i, info.GetIsolate()), v8String(names[i],
info.GetIsolate())); |
| 4011 v8SetReturnValue(info, v8names); | 4011 v8SetReturnValue(info, v8names); |
| 4012 } | 4012 } |
| 4013 | 4013 |
| 4014 END | 4014 END |
| 4015 } | 4015 } |
| 4016 | 4016 |
| 4017 sub GenerateImplementationNamedPropertyQuery | 4017 sub GenerateImplementationNamedPropertyQuery |
| 4018 { | 4018 { |
| 4019 my $interface = shift; | 4019 my $interface = shift; |
| 4020 my $implClassName = GetImplName($interface); | 4020 my $implClassName = GetImplName($interface); |
| 4021 my $v8ClassName = GetV8ClassName($interface); | 4021 my $v8ClassName = GetV8ClassName($interface); |
| 4022 | 4022 |
| 4023 $implementation{nameSpaceInternal}->add(<<END); | 4023 $implementation{nameSpaceInternal}->add(<<END); |
| 4024 static void namedPropertyQuery(v8::Local<v8::String> name, const v8::PropertyCal
lbackInfo<v8::Integer>& info) | 4024 static void namedPropertyQuery(v8::Local<v8::String> name, const v8::PropertyCal
lbackInfo<v8::Integer>& info) |
| 4025 { | 4025 { |
| 4026 ${implClassName}* collection = ${v8ClassName}::toNative(info.Holder()); | 4026 ${implClassName}* collection = ${v8ClassName}::toNative(info.Holder()); |
| 4027 AtomicString propertyName = toWebCoreAtomicString(name); | 4027 AtomicString propertyName = toWebCoreAtomicString(name); |
| 4028 ExceptionState es(info.GetIsolate()); | 4028 ExceptionState es(info.Holder(), info.GetIsolate()); |
| 4029 bool result = collection->namedPropertyQuery(propertyName, es); | 4029 bool result = collection->namedPropertyQuery(propertyName, es); |
| 4030 if (es.throwIfNeeded()) | 4030 if (es.throwIfNeeded()) |
| 4031 return; | 4031 return; |
| 4032 if (!result) | 4032 if (!result) |
| 4033 return; | 4033 return; |
| 4034 v8SetReturnValueInt(info, v8::None); | 4034 v8SetReturnValueInt(info, v8::None); |
| 4035 } | 4035 } |
| 4036 | 4036 |
| 4037 END | 4037 END |
| 4038 } | 4038 } |
| (...skipping 2251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6290 | 6290 |
| 6291 return 1 if $interface->extendedAttributes->{"CustomToV8"}; | 6291 return 1 if $interface->extendedAttributes->{"CustomToV8"}; |
| 6292 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; | 6292 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; |
| 6293 return 1 if InheritsInterface($interface, "Document"); | 6293 return 1 if InheritsInterface($interface, "Document"); |
| 6294 return 1 if SVGTypeNeedsToHoldContextElement($interface->name); | 6294 return 1 if SVGTypeNeedsToHoldContextElement($interface->name); |
| 6295 | 6295 |
| 6296 return 0; | 6296 return 0; |
| 6297 } | 6297 } |
| 6298 | 6298 |
| 6299 1; | 6299 1; |
| OLD | NEW |