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

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

Issue 106853005: Implement platform deleters per spec. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Switch to DeleteResult enum + extend scheme to indexed deleters Created 7 years 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
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 4031 matching lines...) Expand 10 before | Expand all | Expand 10 after
4042 my $raisesExceptions = $indexedDeleterFunction->extendedAttributes->{"Raises Exception"}; 4042 my $raisesExceptions = $indexedDeleterFunction->extendedAttributes->{"Raises Exception"};
4043 4043
4044 my $code = "static void indexedPropertyDeleter(unsigned index, const v8::Pro pertyCallbackInfo<v8::Boolean>& info)\n"; 4044 my $code = "static void indexedPropertyDeleter(unsigned index, const v8::Pro pertyCallbackInfo<v8::Boolean>& info)\n";
4045 $code .= "{\n"; 4045 $code .= "{\n";
4046 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H older());\n"; 4046 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H older());\n";
4047 my $extraArguments = ""; 4047 my $extraArguments = "";
4048 if ($raisesExceptions) { 4048 if ($raisesExceptions) {
4049 $code .= " ExceptionState exceptionState(info.Holder(), info.GetIsola te());\n"; 4049 $code .= " ExceptionState exceptionState(info.Holder(), info.GetIsola te());\n";
4050 $extraArguments = ", exceptionState"; 4050 $extraArguments = ", exceptionState";
4051 } 4051 }
4052 $code .= " bool result = collection->${methodName}(index$extraArguments); \n"; 4052 $code .= " DeleteResult result = collection->${methodName}(index$extraArg uments);\n";
4053 if ($raisesExceptions) { 4053 if ($raisesExceptions) {
4054 $code .= " if (exceptionState.throwIfNeeded())\n"; 4054 $code .= " if (exceptionState.throwIfNeeded())\n";
4055 $code .= " return;\n"; 4055 $code .= " return;\n";
4056 } 4056 }
4057 $code .= " return v8SetReturnValueBool(info, result);\n"; 4057 $code .= " if (result != DeleteUnknownProperty)\n";
4058 $code .= " return v8SetReturnValueBool(info, result == DeleteSuccess) ;\n";
4058 $code .= "}\n\n"; 4059 $code .= "}\n\n";
4059 $implementation{nameSpaceInternal}->add($code); 4060 $implementation{nameSpaceInternal}->add($code);
4060 } 4061 }
4061 4062
4062 sub GenerateImplementationNamedPropertyDeleter 4063 sub GenerateImplementationNamedPropertyDeleter
4063 { 4064 {
4064 my $interface = shift; 4065 my $interface = shift;
4065 my $namedDeleterFunction = shift; 4066 my $namedDeleterFunction = shift;
4066 my $implClassName = GetImplName($interface); 4067 my $implClassName = GetImplName($interface);
4067 my $v8ClassName = GetV8ClassName($interface); 4068 my $v8ClassName = GetV8ClassName($interface);
4068 my $methodName = GetImplName($namedDeleterFunction); 4069 my $methodName = GetImplName($namedDeleterFunction);
4069 4070
4070 my $raisesExceptions = $namedDeleterFunction->extendedAttributes->{"RaisesEx ception"}; 4071 my $raisesExceptions = $namedDeleterFunction->extendedAttributes->{"RaisesEx ception"};
4071 4072
4072 my $code = "static void namedPropertyDeleter(v8::Local<v8::String> name, con st v8::PropertyCallbackInfo<v8::Boolean>& info)\n"; 4073 my $code = "static void namedPropertyDeleter(v8::Local<v8::String> name, con st v8::PropertyCallbackInfo<v8::Boolean>& info)\n";
4073 $code .= "{\n"; 4074 $code .= "{\n";
4074 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H older());\n"; 4075 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H older());\n";
4075 $code .= " AtomicString propertyName = toCoreAtomicString(name);\n"; 4076 $code .= " AtomicString propertyName = toCoreAtomicString(name);\n";
4076 my $extraArguments = ""; 4077 my $extraArguments = "";
4077 if ($raisesExceptions) { 4078 if ($raisesExceptions) {
4078 $code .= " ExceptionState exceptionState(info.Holder(), info.GetIsola te());\n"; 4079 $code .= " ExceptionState exceptionState(info.Holder(), info.GetIsola te());\n";
4079 $extraArguments = ", exceptionState"; 4080 $extraArguments .= ", exceptionState";
4080 } 4081 }
4081 $code .= " bool result = collection->${methodName}(propertyName$extraArgu ments);\n"; 4082 $code .= " DeleteResult result = collection->${methodName}(propertyName$e xtraArguments);\n";
4082 if ($raisesExceptions) { 4083 if ($raisesExceptions) {
4083 $code .= " if (exceptionState.throwIfNeeded())\n"; 4084 $code .= " if (exceptionState.throwIfNeeded())\n";
4084 $code .= " return;\n"; 4085 $code .= " return;\n";
4085 } 4086 }
4086 $code .= " return v8SetReturnValueBool(info, result);\n"; 4087 $code .= " if (result != DeleteUnknownProperty)\n";
4088 $code .= " return v8SetReturnValueBool(info, result == DeleteSuccess) ;\n";
jsbell 2013/12/18 00:49:34 Sorry if I'm missing something, but doesn't this i
sof 2013/12/18 06:17:00 Yes, exactly that. The v8 interceptor code that's
4087 $code .= "}\n\n"; 4089 $code .= "}\n\n";
4088 $implementation{nameSpaceInternal}->add($code); 4090 $implementation{nameSpaceInternal}->add($code);
4089 } 4091 }
4090 4092
4091 sub GenerateImplementationNamedPropertyEnumerator 4093 sub GenerateImplementationNamedPropertyEnumerator
4092 { 4094 {
4093 my $interface = shift; 4095 my $interface = shift;
4094 my $implClassName = GetImplName($interface); 4096 my $implClassName = GetImplName($interface);
4095 my $v8ClassName = GetV8ClassName($interface); 4097 my $v8ClassName = GetV8ClassName($interface);
4096 4098
(...skipping 2240 matching lines...) Expand 10 before | Expand all | Expand 10 after
6337 6339
6338 return 1 if ExtendedAttributeContains($interface->extendedAttributes->{"Cust om"}, "ToV8"); 6340 return 1 if ExtendedAttributeContains($interface->extendedAttributes->{"Cust om"}, "ToV8");
6339 return 1 if ExtendedAttributeContains($interface->extendedAttributes->{"Cust om"}, "Wrap"); 6341 return 1 if ExtendedAttributeContains($interface->extendedAttributes->{"Cust om"}, "Wrap");
6340 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; 6342 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"};
6341 return 1 if InheritsInterface($interface, "Document"); 6343 return 1 if InheritsInterface($interface, "Document");
6342 6344
6343 return 0; 6345 return 0;
6344 } 6346 }
6345 6347
6346 1; 6348 1;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698