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

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

Issue 2826673004: bindings: Make the sequence conversion code more compliant with WebIDL. (Closed)
Patch Set: Fix more test expectations Created 3 years, 8 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
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 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
822 uint32_t sequence_length; 822 uint32_t sequence_length;
823 if (!V8Call(length_value->Uint32Value(isolate->GetCurrentContext()), 823 if (!V8Call(length_value->Uint32Value(isolate->GetCurrentContext()),
824 sequence_length, block)) { 824 sequence_length, block)) {
825 exception_state.RethrowV8Exception(block.Exception()); 825 exception_state.RethrowV8Exception(block.Exception());
826 return false; 826 return false;
827 } 827 }
828 828
829 length = sequence_length; 829 length = sequence_length;
830 return true; 830 return true;
831 } 831 }
832 // Validates that the passed object is a sequence type per the WebIDL spec: it
833 // has a callable @iterator.
834 // https://heycam.github.io/webidl/#es-sequence
835 CORE_EXPORT bool HasCallableIteratorSymbol(v8::Isolate*,
836 v8::Local<v8::Value>,
837 ExceptionState&);
832 838
833 // TODO(rakuco): remove the specializations below (and consequently the 839 // TODO(rakuco): remove the specializations below (and consequently the
834 // non-IDLBase version of NativeValueTraitsBase) once we manage to convert all 840 // non-IDLBase version of NativeValueTraitsBase) once we manage to convert all
835 // uses of NativeValueTraits to types that derive from IDLBase or for generated 841 // uses of NativeValueTraits to types that derive from IDLBase or for generated
836 // IDL interfaces/dictionaries/unions. 842 // IDL interfaces/dictionaries/unions.
837 template <> 843 template <>
838 struct NativeValueTraits<String> { 844 struct NativeValueTraits<String> {
839 static inline String NativeValue(v8::Isolate* isolate, 845 static inline String NativeValue(v8::Isolate* isolate,
840 v8::Local<v8::Value> value, 846 v8::Local<v8::Value> value,
841 ExceptionState& exception_state) { 847 ExceptionState& exception_state) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 template <> 894 template <>
889 struct NativeValueTraits<double> { 895 struct NativeValueTraits<double> {
890 static inline double NativeValue(v8::Isolate* isolate, 896 static inline double NativeValue(v8::Isolate* isolate,
891 v8::Local<v8::Value> value, 897 v8::Local<v8::Value> value,
892 ExceptionState& exception_state) { 898 ExceptionState& exception_state) {
893 return ToDouble(isolate, value, exception_state); 899 return ToDouble(isolate, value, exception_state);
894 } 900 }
895 }; 901 };
896 902
897 template <> 903 template <>
898 struct NativeValueTraits<v8::Local<v8::Value>> { 904 struct NativeValueTraits<v8::Local<v8::Value>>
905 : public NativeValueTraitsBase<v8::Local<v8::Value>> {
899 static inline v8::Local<v8::Value> NativeValue( 906 static inline v8::Local<v8::Value> NativeValue(
900 v8::Isolate* isolate, 907 v8::Isolate* isolate,
901 v8::Local<v8::Value> value, 908 v8::Local<v8::Value> value,
902 ExceptionState& exception_state) { 909 ExceptionState& exception_state) {
903 return value; 910 return value;
904 } 911 }
905 }; 912 };
906 913
907 template <>
908 struct NativeValueTraits<ScriptValue> {
909 static inline ScriptValue NativeValue(v8::Isolate* isolate,
910 v8::Local<v8::Value> value,
911 ExceptionState& exception_state) {
912 return ScriptValue(ScriptState::Current(isolate), value);
913 }
914 };
915
916 template <typename T> 914 template <typename T>
917 struct NativeValueTraits<Vector<T>> { 915 struct NativeValueTraits<Vector<T>> {
918 static inline Vector<T> NativeValue(v8::Isolate* isolate, 916 static inline Vector<T> NativeValue(v8::Isolate* isolate,
919 v8::Local<v8::Value> value, 917 v8::Local<v8::Value> value,
920 ExceptionState& exception_state) { 918 ExceptionState& exception_state) {
921 return ToImplArray<Vector<T>>(value, 0, isolate, exception_state); 919 return ToImplArray<Vector<T>>(value, 0, isolate, exception_state);
922 } 920 }
923 }; 921 };
924 922
925 CORE_EXPORT v8::Isolate* ToIsolate(ExecutionContext*); 923 CORE_EXPORT v8::Isolate* ToIsolate(ExecutionContext*);
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1117 exception_state.ThrowTypeError( 1115 exception_state.ThrowTypeError(
1118 "The provided ArrayBufferView value must not be shared."); 1116 "The provided ArrayBufferView value must not be shared.");
1119 return NotSharedType(); 1117 return NotSharedType();
1120 } 1118 }
1121 return NotSharedType(dom_typed_array); 1119 return NotSharedType(dom_typed_array);
1122 } 1120 }
1123 1121
1124 } // namespace blink 1122 } // namespace blink
1125 1123
1126 #endif // V8Binding_h 1124 #endif // V8Binding_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698