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

Side by Side Diff: Source/bindings/core/v8/V8Binding.h

Issue 1150863004: toImplArguments should return HeapVector for Union types. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 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
« no previous file with comments | « no previous file | Source/bindings/scripts/v8_methods.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 typedef NativeValueTraits<ValueType> TraitsType; 797 typedef NativeValueTraits<ValueType> TraitsType;
798 result.reserveInitialCapacity(value.size()); 798 result.reserveInitialCapacity(value.size());
799 for (unsigned i = 0; i < value.size(); ++i) { 799 for (unsigned i = 0; i < value.size(); ++i) {
800 result.uncheckedAppend(TraitsType::nativeValue(isolate, value[i].v8Value (), exceptionState)); 800 result.uncheckedAppend(TraitsType::nativeValue(isolate, value[i].v8Value (), exceptionState));
801 if (exceptionState.hadException()) 801 if (exceptionState.hadException())
802 return VectorType(); 802 return VectorType();
803 } 803 }
804 return result; 804 return result;
805 } 805 }
806 806
807 template <typename T> 807 template <typename VectorType>
808 Vector<T> toImplArguments(const v8::FunctionCallbackInfo<v8::Value>& info, int s tartIndex, ExceptionState& exceptionState) 808 VectorType toImplArguments(const v8::FunctionCallbackInfo<v8::Value>& info, int startIndex, ExceptionState& exceptionState)
809 { 809 {
810 Vector<T> result; 810 VectorType result;
811 typedef NativeValueTraits<T> TraitsType; 811 typedef typename VectorType::ValueType ValueType;
812 typedef NativeValueTraits<ValueType> TraitsType;
812 int length = info.Length(); 813 int length = info.Length();
813 if (startIndex < length) { 814 if (startIndex < length) {
814 result.reserveInitialCapacity(length - startIndex); 815 result.reserveInitialCapacity(length - startIndex);
815 for (int i = startIndex; i < length; ++i) { 816 for (int i = startIndex; i < length; ++i) {
816 result.uncheckedAppend(TraitsType::nativeValue(info.GetIsolate(), in fo[i], exceptionState)); 817 result.uncheckedAppend(TraitsType::nativeValue(info.GetIsolate(), in fo[i], exceptionState));
817 if (exceptionState.hadException()) 818 if (exceptionState.hadException())
818 return Vector<T>(); 819 return VectorType();
819 } 820 }
820 } 821 }
821 return result; 822 return result;
822 } 823 }
823 824
824 // Validates that the passed object is a sequence type per WebIDL spec 825 // Validates that the passed object is a sequence type per WebIDL spec
825 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-sequence 826 // http://www.w3.org/TR/2012/CR-WebIDL-20120419/#es-sequence
826 inline bool toV8Sequence(v8::Local<v8::Value> value, uint32_t& length, v8::Isola te* isolate, ExceptionState& exceptionState) 827 inline bool toV8Sequence(v8::Local<v8::Value> value, uint32_t& length, v8::Isola te* isolate, ExceptionState& exceptionState)
827 { 828 {
828 // Attempt converting to a sequence if the value is not already an array but is 829 // Attempt converting to a sequence if the value is not already an array but is
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
1064 PassRefPtr<TraceEvent::ConvertableToTraceFormat> devToolsTraceEventData(v8::Isol ate*, ExecutionContext*, v8::Local<v8::Function>); 1065 PassRefPtr<TraceEvent::ConvertableToTraceFormat> devToolsTraceEventData(v8::Isol ate*, ExecutionContext*, v8::Local<v8::Function>);
1065 1066
1066 // Callback functions used by generated code. 1067 // Callback functions used by generated code.
1067 CORE_EXPORT void v8ConstructorAttributeGetter(v8::Local<v8::Name> propertyName, const v8::PropertyCallbackInfo<v8::Value>&); 1068 CORE_EXPORT void v8ConstructorAttributeGetter(v8::Local<v8::Name> propertyName, const v8::PropertyCallbackInfo<v8::Value>&);
1068 1069
1069 typedef void (*InstallTemplateFunction)(v8::Local<v8::FunctionTemplate>, v8::Iso late*); 1070 typedef void (*InstallTemplateFunction)(v8::Local<v8::FunctionTemplate>, v8::Iso late*);
1070 1071
1071 } // namespace blink 1072 } // namespace blink
1072 1073
1073 #endif // V8Binding_h 1074 #endif // V8Binding_h
OLDNEW
« no previous file with comments | « no previous file | Source/bindings/scripts/v8_methods.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698