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

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImplTest.cpp

Issue 2900743002: bindings: Do not skip symbols in the JS -> record<> conversion. (Closed)
Patch Set: Fix tests Created 3 years, 7 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 | « third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "bindings/core/v8/NativeValueTraitsImpl.h" 5 #include "bindings/core/v8/NativeValueTraitsImpl.h"
6 6
7 #include <utility> 7 #include <utility>
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/IDLTypes.h" 9 #include "bindings/core/v8/IDLTypes.h"
10 #include "bindings/core/v8/TestSequenceCallback.h" 10 #include "bindings/core/v8/TestSequenceCallback.h"
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
193 EXPECT_EQ(std::make_pair(String("foo"), String("Ohai")), record[2]); 193 EXPECT_EQ(std::make_pair(String("foo"), String("Ohai")), record[2]);
194 } 194 }
195 { 195 {
196 v8::Local<v8::Object> v8_object = v8::Object::New(scope.GetIsolate()); 196 v8::Local<v8::Object> v8_object = v8::Object::New(scope.GetIsolate());
197 EXPECT_TRUE(V8CallBoolean(v8_object->Set( 197 EXPECT_TRUE(V8CallBoolean(v8_object->Set(
198 scope.GetContext(), v8::Symbol::GetToStringTag(scope.GetIsolate()), 198 scope.GetContext(), v8::Symbol::GetToStringTag(scope.GetIsolate()),
199 ToV8(&scope, 34)))); 199 ToV8(&scope, 34))));
200 EXPECT_TRUE(V8CallBoolean(v8_object->Set( 200 EXPECT_TRUE(V8CallBoolean(v8_object->Set(
201 scope.GetContext(), ToV8(&scope, "foo"), ToV8(&scope, 42)))); 201 scope.GetContext(), ToV8(&scope, "foo"), ToV8(&scope, 42))));
202 202
203 NonThrowableExceptionState exception_state; 203 // The presence of symbols should throw a TypeError when the conversion to
204 // the record's key type is attempted.
205 DummyExceptionStateForTesting exception_state;
204 const auto& record = 206 const auto& record =
205 NativeValueTraits<IDLRecord<IDLString, IDLShort>>::NativeValue( 207 NativeValueTraits<IDLRecord<IDLString, IDLShort>>::NativeValue(
206 scope.GetIsolate(), v8_object, exception_state); 208 scope.GetIsolate(), v8_object, exception_state);
207 EXPECT_EQ(1U, record.size()); 209 EXPECT_TRUE(record.IsEmpty());
208 EXPECT_EQ(std::make_pair(String("foo"), int16_t(42)), record[0]); 210 EXPECT_TRUE(exception_state.HadException());
209 } 211 EXPECT_TRUE(exception_state.Message().IsEmpty());
210 {
211 v8::Local<v8::Object> v8_object = v8::Object::New(scope.GetIsolate());
212 EXPECT_TRUE(V8CallBoolean(v8_object->Set(
213 scope.GetContext(), v8::Symbol::GetToStringTag(scope.GetIsolate()),
214 ToV8(&scope, 34))));
215 EXPECT_TRUE(V8CallBoolean(v8_object->Set(
216 scope.GetContext(), ToV8(&scope, "foo"), ToV8(&scope, 42))));
217
218 NonThrowableExceptionState exception_state;
219 const auto& record =
220 NativeValueTraits<IDLRecord<IDLString, IDLShort>>::NativeValue(
221 scope.GetIsolate(), v8_object, exception_state);
222 EXPECT_EQ(1U, record.size());
223 EXPECT_EQ(std::make_pair(String("foo"), int16_t(42)), record[0]);
224 } 212 }
225 { 213 {
226 v8::Local<v8::Object> v8_parent_object = 214 v8::Local<v8::Object> v8_parent_object =
227 v8::Object::New(scope.GetIsolate()); 215 v8::Object::New(scope.GetIsolate());
228 EXPECT_TRUE(V8CallBoolean(v8_parent_object->Set( 216 EXPECT_TRUE(V8CallBoolean(v8_parent_object->Set(
229 scope.GetContext(), ToV8(&scope, "foo"), ToV8(&scope, 34)))); 217 scope.GetContext(), ToV8(&scope, "foo"), ToV8(&scope, 34))));
230 EXPECT_TRUE(V8CallBoolean(v8_parent_object->Set( 218 EXPECT_TRUE(V8CallBoolean(v8_parent_object->Set(
231 scope.GetContext(), ToV8(&scope, "bar"), ToV8(&scope, 512)))); 219 scope.GetContext(), ToV8(&scope, "bar"), ToV8(&scope, 512))));
232 v8::Local<v8::Object> v8_object = v8::Object::New(scope.GetIsolate()); 220 v8::Local<v8::Object> v8_object = v8::Object::New(scope.GetIsolate());
233 EXPECT_TRUE(V8CallBoolean( 221 EXPECT_TRUE(V8CallBoolean(
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 const auto& boolean_sequence = 435 const auto& boolean_sequence =
448 NativeValueTraits<IDLSequence<IDLBoolean>>::NativeValue( 436 NativeValueTraits<IDLSequence<IDLBoolean>>::NativeValue(
449 scope.GetIsolate(), v8_object, exception_state); 437 scope.GetIsolate(), v8_object, exception_state);
450 EXPECT_EQ(Vector<bool>({true, false}), boolean_sequence); 438 EXPECT_EQ(Vector<bool>({true, false}), boolean_sequence);
451 } 439 }
452 } 440 }
453 441
454 } // namespace 442 } // namespace
455 443
456 } // namespace blink 444 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/bindings/core/v8/NativeValueTraitsImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698