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

Side by Side Diff: test/unittests/value-serializer-unittest.cc

Issue 2466563002: Remove DCHECK that transferred array buffers are neutered or shared. (Closed)
Patch Set: now with unit test update Created 4 years, 1 month 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 | « src/value-serializer.cc ('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 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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 const Local<Context>& serialization_context() { 57 const Local<Context>& serialization_context() {
58 return serialization_context_; 58 return serialization_context_;
59 } 59 }
60 const Local<Context>& deserialization_context() { 60 const Local<Context>& deserialization_context() {
61 return deserialization_context_; 61 return deserialization_context_;
62 } 62 }
63 63
64 // Overridden in more specific fixtures. 64 // Overridden in more specific fixtures.
65 virtual ValueSerializer::Delegate* GetSerializerDelegate() { return nullptr; } 65 virtual ValueSerializer::Delegate* GetSerializerDelegate() { return nullptr; }
66 virtual void BeforeEncode(ValueSerializer*) {} 66 virtual void BeforeEncode(ValueSerializer*) {}
67 virtual void AfterEncode() {}
67 virtual ValueDeserializer::Delegate* GetDeserializerDelegate() { 68 virtual ValueDeserializer::Delegate* GetDeserializerDelegate() {
68 return nullptr; 69 return nullptr;
69 } 70 }
70 virtual void BeforeDecode(ValueDeserializer*) {} 71 virtual void BeforeDecode(ValueDeserializer*) {}
71 72
72 template <typename InputFunctor, typename OutputFunctor> 73 template <typename InputFunctor, typename OutputFunctor>
73 void RoundTripTest(const InputFunctor& input_functor, 74 void RoundTripTest(const InputFunctor& input_functor,
74 const OutputFunctor& output_functor) { 75 const OutputFunctor& output_functor) {
75 EncodeTest(input_functor, 76 EncodeTest(input_functor,
76 [this, &output_functor](const std::vector<uint8_t>& data) { 77 [this, &output_functor](const std::vector<uint8_t>& data) {
(...skipping 25 matching lines...) Expand all
102 } 103 }
103 104
104 Maybe<std::vector<uint8_t>> DoEncode(Local<Value> value) { 105 Maybe<std::vector<uint8_t>> DoEncode(Local<Value> value) {
105 Local<Context> context = serialization_context(); 106 Local<Context> context = serialization_context();
106 ValueSerializer serializer(isolate(), GetSerializerDelegate()); 107 ValueSerializer serializer(isolate(), GetSerializerDelegate());
107 BeforeEncode(&serializer); 108 BeforeEncode(&serializer);
108 serializer.WriteHeader(); 109 serializer.WriteHeader();
109 if (!serializer.WriteValue(context, value).FromMaybe(false)) { 110 if (!serializer.WriteValue(context, value).FromMaybe(false)) {
110 return Nothing<std::vector<uint8_t>>(); 111 return Nothing<std::vector<uint8_t>>();
111 } 112 }
113 AfterEncode();
112 return Just(serializer.ReleaseBuffer()); 114 return Just(serializer.ReleaseBuffer());
113 } 115 }
114 116
115 template <typename InputFunctor, typename EncodedDataFunctor> 117 template <typename InputFunctor, typename EncodedDataFunctor>
116 void EncodeTest(const InputFunctor& input_functor, 118 void EncodeTest(const InputFunctor& input_functor,
117 const EncodedDataFunctor& encoded_data_functor) { 119 const EncodedDataFunctor& encoded_data_functor) {
118 Context::Scope scope(serialization_context()); 120 Context::Scope scope(serialization_context());
119 TryCatch try_catch(isolate()); 121 TryCatch try_catch(isolate());
120 Local<Value> input_value = input_functor(); 122 Local<Value> input_value = input_functor();
121 std::vector<uint8_t> buffer; 123 std::vector<uint8_t> buffer;
(...skipping 1611 matching lines...) Expand 10 before | Expand all | Expand 10 after
1733 // Includes an ArrayBuffer wrapper marked for transfer from the serialization 1735 // Includes an ArrayBuffer wrapper marked for transfer from the serialization
1734 // context to the deserialization context. 1736 // context to the deserialization context.
1735 class ValueSerializerTestWithArrayBufferTransfer : public ValueSerializerTest { 1737 class ValueSerializerTestWithArrayBufferTransfer : public ValueSerializerTest {
1736 protected: 1738 protected:
1737 static const size_t kTestByteLength = 4; 1739 static const size_t kTestByteLength = 4;
1738 1740
1739 ValueSerializerTestWithArrayBufferTransfer() { 1741 ValueSerializerTestWithArrayBufferTransfer() {
1740 { 1742 {
1741 Context::Scope scope(serialization_context()); 1743 Context::Scope scope(serialization_context());
1742 input_buffer_ = ArrayBuffer::New(isolate(), nullptr, 0); 1744 input_buffer_ = ArrayBuffer::New(isolate(), nullptr, 0);
1743 input_buffer_->Neuter();
1744 } 1745 }
1745 { 1746 {
1746 Context::Scope scope(deserialization_context()); 1747 Context::Scope scope(deserialization_context());
1747 output_buffer_ = ArrayBuffer::New(isolate(), kTestByteLength); 1748 output_buffer_ = ArrayBuffer::New(isolate(), kTestByteLength);
1748 const uint8_t data[kTestByteLength] = {0x00, 0x01, 0x80, 0xff}; 1749 const uint8_t data[kTestByteLength] = {0x00, 0x01, 0x80, 0xff};
1749 memcpy(output_buffer_->GetContents().Data(), data, kTestByteLength); 1750 memcpy(output_buffer_->GetContents().Data(), data, kTestByteLength);
1750 } 1751 }
1751 } 1752 }
1752 1753
1753 const Local<ArrayBuffer>& input_buffer() { return input_buffer_; } 1754 const Local<ArrayBuffer>& input_buffer() { return input_buffer_; }
1754 const Local<ArrayBuffer>& output_buffer() { return output_buffer_; } 1755 const Local<ArrayBuffer>& output_buffer() { return output_buffer_; }
1755 1756
1756 void BeforeEncode(ValueSerializer* serializer) override { 1757 void BeforeEncode(ValueSerializer* serializer) override {
1757 serializer->TransferArrayBuffer(0, input_buffer_); 1758 serializer->TransferArrayBuffer(0, input_buffer_);
1758 } 1759 }
1759 1760
1761 void AfterEncode() override { input_buffer_->Neuter(); }
1762
1760 void BeforeDecode(ValueDeserializer* deserializer) override { 1763 void BeforeDecode(ValueDeserializer* deserializer) override {
1761 deserializer->TransferArrayBuffer(0, output_buffer_); 1764 deserializer->TransferArrayBuffer(0, output_buffer_);
1762 } 1765 }
1763 1766
1764 private: 1767 private:
1765 Local<ArrayBuffer> input_buffer_; 1768 Local<ArrayBuffer> input_buffer_;
1766 Local<ArrayBuffer> output_buffer_; 1769 Local<ArrayBuffer> output_buffer_;
1767 }; 1770 };
1768 1771
1769 TEST_F(ValueSerializerTestWithArrayBufferTransfer, 1772 TEST_F(ValueSerializerTestWithArrayBufferTransfer,
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
2364 "({ a: new ExampleHostObject(), get b() { return this.a; }})", 2367 "({ a: new ExampleHostObject(), get b() { return this.a; }})",
2365 [this](Local<Value> value) { 2368 [this](Local<Value> value) {
2366 EXPECT_TRUE(EvaluateScriptForResultBool( 2369 EXPECT_TRUE(EvaluateScriptForResultBool(
2367 "result.a instanceof ExampleHostObject")); 2370 "result.a instanceof ExampleHostObject"));
2368 EXPECT_TRUE(EvaluateScriptForResultBool("result.a === result.b")); 2371 EXPECT_TRUE(EvaluateScriptForResultBool("result.a === result.b"));
2369 }); 2372 });
2370 } 2373 }
2371 2374
2372 } // namespace 2375 } // namespace
2373 } // namespace v8 2376 } // namespace v8
OLDNEW
« no previous file with comments | « src/value-serializer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698