| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project 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 "src/value-serializer.h" | 5 #include "src/value-serializer.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "include/v8.h" | 10 #include "include/v8.h" |
| (...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 675 // resolved. | 675 // resolved. |
| 676 DecodeTest( | 676 DecodeTest( |
| 677 {0xff, 0x09, 0x3f, 0x00, 0x6f, 0x3f, 0x01, 0x53, 0x04, 0x73, | 677 {0xff, 0x09, 0x3f, 0x00, 0x6f, 0x3f, 0x01, 0x53, 0x04, 0x73, |
| 678 0x65, 0x6c, 0x66, 0x3f, 0x01, 0x5e, 0x00, 0x7b, 0x01, 0x00}, | 678 0x65, 0x6c, 0x66, 0x3f, 0x01, 0x5e, 0x00, 0x7b, 0x01, 0x00}, |
| 679 [this](Local<Value> value) { | 679 [this](Local<Value> value) { |
| 680 ASSERT_TRUE(value->IsObject()); | 680 ASSERT_TRUE(value->IsObject()); |
| 681 EXPECT_TRUE(EvaluateScriptForResultBool("result === result.self")); | 681 EXPECT_TRUE(EvaluateScriptForResultBool("result === result.self")); |
| 682 }); | 682 }); |
| 683 } | 683 } |
| 684 | 684 |
| 685 TEST_F(ValueSerializerTest, InvalidDecodeObjectWithInvalidKeyType) { |
| 686 // Objects which would need conversion to string shouldn't be present as |
| 687 // object keys. The serializer would have obtained them from the own property |
| 688 // keys list, which should only contain names and indices. |
| 689 InvalidDecodeTest( |
| 690 {0xff, 0x09, 0x6f, 0x61, 0x00, 0x40, 0x00, 0x00, 0x7b, 0x01}); |
| 691 } |
| 692 |
| 685 TEST_F(ValueSerializerTest, RoundTripOnlyOwnEnumerableStringKeys) { | 693 TEST_F(ValueSerializerTest, RoundTripOnlyOwnEnumerableStringKeys) { |
| 686 // Only "own" properties should be serialized, not ones on the prototype. | 694 // Only "own" properties should be serialized, not ones on the prototype. |
| 687 RoundTripTest("(() => { var x = {}; x.__proto__ = {a: 4}; return x; })()", | 695 RoundTripTest("(() => { var x = {}; x.__proto__ = {a: 4}; return x; })()", |
| 688 [this](Local<Value> value) { | 696 [this](Local<Value> value) { |
| 689 EXPECT_TRUE(EvaluateScriptForResultBool("!('a' in result)")); | 697 EXPECT_TRUE(EvaluateScriptForResultBool("!('a' in result)")); |
| 690 }); | 698 }); |
| 691 // Only enumerable properties should be serialized. | 699 // Only enumerable properties should be serialized. |
| 692 RoundTripTest( | 700 RoundTripTest( |
| 693 "(() => {" | 701 "(() => {" |
| 694 " var x = {};" | 702 " var x = {};" |
| (...skipping 1988 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2683 InvalidDecodeTest(raw); | 2691 InvalidDecodeTest(raw); |
| 2684 } | 2692 } |
| 2685 | 2693 |
| 2686 TEST_F(ValueSerializerTestWithWasm, DecodeWasmModuleWithInvalidDataLength) { | 2694 TEST_F(ValueSerializerTestWithWasm, DecodeWasmModuleWithInvalidDataLength) { |
| 2687 InvalidDecodeTest({0xff, 0x09, 0x3f, 0x00, 0x57, 0x79, 0x7f, 0x00}); | 2695 InvalidDecodeTest({0xff, 0x09, 0x3f, 0x00, 0x57, 0x79, 0x7f, 0x00}); |
| 2688 InvalidDecodeTest({0xff, 0x09, 0x3f, 0x00, 0x57, 0x79, 0x00, 0x7f}); | 2696 InvalidDecodeTest({0xff, 0x09, 0x3f, 0x00, 0x57, 0x79, 0x00, 0x7f}); |
| 2689 } | 2697 } |
| 2690 | 2698 |
| 2691 } // namespace | 2699 } // namespace |
| 2692 } // namespace v8 | 2700 } // namespace v8 |
| OLD | NEW |