Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: Source/bindings/scripts/code_generator_v8.pm

Issue 143943020: Replace [TreatNullAs=functionName] with [StrictTypeChecking] (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Update tests, Python, and IDLExtendedAttributes.txt Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 3770 matching lines...) Expand 10 before | Expand all | Expand 10 after
3781 $code .= " ExceptionState exceptionState(info.Holder(), info.GetIsola te());\n"; 3781 $code .= " ExceptionState exceptionState(info.Holder(), info.GetIsola te());\n";
3782 if ($raisesExceptions) { 3782 if ($raisesExceptions) {
3783 $extraArguments = ", exceptionState"; 3783 $extraArguments = ", exceptionState";
3784 } 3784 }
3785 } 3785 }
3786 3786
3787 my $asSetterValue = 0; 3787 my $asSetterValue = 0;
3788 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H older());\n"; 3788 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H older());\n";
3789 $code .= JSValueToNativeStatement($indexedSetterFunction->parameters->[1]->t ype, $indexedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "pro pertyValue", " ", "info.GetIsolate()"); 3789 $code .= JSValueToNativeStatement($indexedSetterFunction->parameters->[1]->t ype, $indexedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "pro pertyValue", " ", "info.GetIsolate()");
3790 3790
3791 my @conditions = (); 3791 if ($indexedSetterFunction->extendedAttributes->{"StrictTypeChecking"} && Is WrapperType($type)) {
3792 my @statements = (); 3792 $code .= <<END;
3793 if ($treatNullAs && $treatNullAs ne "NullString") { 3793 if (!isUndefinedOrNull(jsValue) && !V8${type}::hasInstance(jsValue, info.Get Isolate())) {
3794 push @conditions, "jsValue->IsNull()"; 3794 exceptionState.throwTypeError("The provided value is not of type '$type' .");
3795 push @statements, "collection->${treatNullAs}(index$extraArguments);"; 3795 exceptionState.throwIfNeeded();
3796 return;
3796 } 3797 }
3797 if ($treatUndefinedAs && $treatUndefinedAs ne "NullString") { 3798 END
3798 push @conditions, "jsValue->IsUndefined()";
3799 push @statements, "collection->${treatUndefinedAs}(index$extraArguments) ;";
3800 } 3799 }
3801 push @conditions, ""; 3800
3802 push @statements, "collection->${methodName}(index, propertyValue$extraArgum ents);"; 3801 $code .= " bool result = collection->${methodName}(index, propertyValue$e xtraArguments);\n";
3803 $code .= GenerateIfElseStatement("bool", "result", \@conditions, \@statement s);
3804 3802
3805 if ($raisesExceptions) { 3803 if ($raisesExceptions) {
3806 $code .= " if (exceptionState.throwIfNeeded())\n"; 3804 $code .= " if (exceptionState.throwIfNeeded())\n";
3807 $code .= " return;\n"; 3805 $code .= " return;\n";
3808 } 3806 }
3809 $code .= " if (!result)\n"; 3807 $code .= " if (!result)\n";
3810 $code .= " return;\n"; 3808 $code .= " return;\n";
3811 $code .= " v8SetReturnValue(info, jsValue);\n"; 3809 $code .= " v8SetReturnValue(info, jsValue);\n";
3812 $code .= "}\n\n"; 3810 $code .= "}\n\n";
3813 $implementation{nameSpaceInternal}->add($code); 3811 $implementation{nameSpaceInternal}->add($code);
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
4114 if ($raisesExceptions) { 4112 if ($raisesExceptions) {
4115 $extraArguments = ", exceptionState"; 4113 $extraArguments = ", exceptionState";
4116 } 4114 }
4117 } 4115 }
4118 4116
4119 my $asSetterValue = 0; 4117 my $asSetterValue = 0;
4120 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H older());\n"; 4118 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H older());\n";
4121 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[0]->typ e, $namedSetterFunction->extendedAttributes, $asSetterValue, "name", "propertyNa me", " ", "info.GetIsolate()"); 4119 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[0]->typ e, $namedSetterFunction->extendedAttributes, $asSetterValue, "name", "propertyNa me", " ", "info.GetIsolate()");
4122 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[1]->typ e, $namedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "propert yValue", " ", "info.GetIsolate()"); 4120 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[1]->typ e, $namedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "propert yValue", " ", "info.GetIsolate()");
4123 4121
4124 my @conditions = (); 4122 $code .= " bool result = collection->$methodName(propertyName, propertyVa lue$extraArguments);\n";
4125 my @statements = ();
4126 if ($treatNullAs && $treatNullAs ne "NullString") {
4127 push @conditions, "jsValue->IsNull()";
4128 push @statements, "collection->${treatNullAs}(propertyName$extraArgument s);";
4129 }
4130 if ($treatUndefinedAs && $treatUndefinedAs ne "NullString") {
4131 push @conditions, "jsValue->IsUndefined()";
4132 push @statements, "collection->${treatUndefinedAs}(propertyName$extraArg uments);";
4133 }
4134 push @conditions, "";
4135 push @statements, "collection->${methodName}(propertyName, propertyValue$ext raArguments);";
4136 $code .= GenerateIfElseStatement("bool", "result", \@conditions, \@statement s);
4137
4138 $code .= " if (!result)\n"; 4123 $code .= " if (!result)\n";
4139 $code .= " return;\n"; 4124 $code .= " return;\n";
4140 if ($raisesExceptions) { 4125 if ($raisesExceptions) {
4141 $code .= " if (exceptionState.throwIfNeeded())\n"; 4126 $code .= " if (exceptionState.throwIfNeeded())\n";
4142 $code .= " return;\n"; 4127 $code .= " return;\n";
4143 } 4128 }
4144 $code .= " v8SetReturnValue(info, jsValue);\n"; 4129 $code .= " v8SetReturnValue(info, jsValue);\n";
4145 $code .= "}\n\n"; 4130 $code .= "}\n\n";
4146 $implementation{nameSpaceInternal}->add($code); 4131 $implementation{nameSpaceInternal}->add($code);
4147 } 4132 }
(...skipping 2287 matching lines...) Expand 10 before | Expand all | Expand 10 after
6435 if ($parameter->type eq "SerializedScriptValue") { 6420 if ($parameter->type eq "SerializedScriptValue") {
6436 return 1; 6421 return 1;
6437 } elsif (IsIntegerType($parameter->type)) { 6422 } elsif (IsIntegerType($parameter->type)) {
6438 return 1; 6423 return 1;
6439 } 6424 }
6440 } 6425 }
6441 return 0; 6426 return 0;
6442 } 6427 }
6443 6428
6444 1; 6429 1;
OLDNEW
« no previous file with comments | « Source/bindings/IDLExtendedAttributes.txt ('k') | Source/bindings/scripts/unstable/v8_interface.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698