OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/modules/v8/serialization/V8ScriptValueSerializerForModules.h" | 5 #include "bindings/modules/v8/serialization/V8ScriptValueSerializerForModules.h" |
6 | 6 |
7 #include "bindings/core/v8/ExceptionState.h" | 7 #include "bindings/core/v8/ExceptionState.h" |
8 #include "bindings/core/v8/ToV8.h" | 8 #include "bindings/core/v8/ToV8.h" |
9 #include "bindings/core/v8/V8ArrayBuffer.h" | 9 #include "bindings/core/v8/V8ArrayBuffer.h" |
10 #include "bindings/core/v8/V8BindingForTesting.h" | 10 #include "bindings/core/v8/V8BindingForTesting.h" |
(...skipping 27 matching lines...) Expand all Loading... |
38 DCHECK_EQ(bytes.size() % 2, 0u); | 38 DCHECK_EQ(bytes.size() % 2, 0u); |
39 return SerializedScriptValue::create( | 39 return SerializedScriptValue::create( |
40 String(reinterpret_cast<const UChar*>(&bytes[0]), bytes.size() / 2)); | 40 String(reinterpret_cast<const UChar*>(&bytes[0]), bytes.size() / 2)); |
41 } | 41 } |
42 | 42 |
43 v8::Local<v8::Value> roundTrip(v8::Local<v8::Value> value, | 43 v8::Local<v8::Value> roundTrip(v8::Local<v8::Value> value, |
44 V8TestingScope& scope) { | 44 V8TestingScope& scope) { |
45 RefPtr<ScriptState> scriptState = scope.getScriptState(); | 45 RefPtr<ScriptState> scriptState = scope.getScriptState(); |
46 ExceptionState& exceptionState = scope.getExceptionState(); | 46 ExceptionState& exceptionState = scope.getExceptionState(); |
47 RefPtr<SerializedScriptValue> serializedScriptValue = | 47 RefPtr<SerializedScriptValue> serializedScriptValue = |
48 V8ScriptValueSerializerForModules(scriptState) | 48 V8ScriptValueSerializerForModules( |
49 .serialize(value, nullptr, exceptionState); | 49 scriptState, V8ScriptValueSerializerForModules::Options()) |
| 50 .serialize(value, exceptionState); |
50 DCHECK_EQ(!serializedScriptValue, exceptionState.hadException()); | 51 DCHECK_EQ(!serializedScriptValue, exceptionState.hadException()); |
51 EXPECT_TRUE(serializedScriptValue); | 52 EXPECT_TRUE(serializedScriptValue); |
52 if (!serializedScriptValue) | 53 if (!serializedScriptValue) |
53 return v8::Local<v8::Value>(); | 54 return v8::Local<v8::Value>(); |
54 return V8ScriptValueDeserializerForModules(scriptState, serializedScriptValue) | 55 return V8ScriptValueDeserializerForModules(scriptState, serializedScriptValue) |
55 .deserialize(); | 56 .deserialize(); |
56 } | 57 } |
57 | 58 |
58 // Checks for a DOM exception, including a rethrown one. | 59 // Checks for a DOM exception, including a rethrown one. |
59 ::testing::AssertionResult hadDOMException(const StringView& name, | 60 ::testing::AssertionResult hadDOMException(const StringView& name, |
(...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
884 ExceptionState::ExecutionContext, "Window", | 885 ExceptionState::ExecutionContext, "Window", |
885 "postMessage"); | 886 "postMessage"); |
886 | 887 |
887 DOMFileSystem* fs = DOMFileSystem::create( | 888 DOMFileSystem* fs = DOMFileSystem::create( |
888 scope.getExecutionContext(), "http_example.com_0:Persistent", | 889 scope.getExecutionContext(), "http_example.com_0:Persistent", |
889 FileSystemTypePersistent, | 890 FileSystemTypePersistent, |
890 KURL(ParsedURLString, "filesystem:http://example.com/persistent/0/")); | 891 KURL(ParsedURLString, "filesystem:http://example.com/persistent/0/")); |
891 ASSERT_FALSE(fs->clonable()); | 892 ASSERT_FALSE(fs->clonable()); |
892 v8::Local<v8::Value> wrapper = ToV8(fs, scope.getScriptState()); | 893 v8::Local<v8::Value> wrapper = ToV8(fs, scope.getScriptState()); |
893 EXPECT_FALSE(V8ScriptValueSerializer(scope.getScriptState()) | 894 EXPECT_FALSE(V8ScriptValueSerializer(scope.getScriptState()) |
894 .serialize(wrapper, nullptr, exceptionState)); | 895 .serialize(wrapper, exceptionState)); |
895 EXPECT_TRUE(hadDOMException("DataCloneError", scope.getScriptState(), | 896 EXPECT_TRUE(hadDOMException("DataCloneError", scope.getScriptState(), |
896 exceptionState)); | 897 exceptionState)); |
897 } | 898 } |
898 | 899 |
899 TEST(V8ScriptValueSerializerForModulesTest, DecodeDOMFileSystem) { | 900 TEST(V8ScriptValueSerializerForModulesTest, DecodeDOMFileSystem) { |
900 V8TestingScope scope; | 901 V8TestingScope scope; |
901 | 902 |
902 // This is encoded data generated from Chromium (around M56). | 903 // This is encoded data generated from Chromium (around M56). |
903 ScriptState* scriptState = scope.getScriptState(); | 904 ScriptState* scriptState = scope.getScriptState(); |
904 RefPtr<SerializedScriptValue> input = serializedValue( | 905 RefPtr<SerializedScriptValue> input = serializedValue( |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
939 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, | 940 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x69, |
940 0x73, 0x74, 0x65, 0x6e, 0x74, 0x2f | 941 0x73, 0x74, 0x65, 0x6e, 0x74, 0x2f |
941 | 942 |
942 })) | 943 })) |
943 .deserialize() | 944 .deserialize() |
944 ->IsNull()); | 945 ->IsNull()); |
945 } | 946 } |
946 | 947 |
947 } // namespace | 948 } // namespace |
948 } // namespace blink | 949 } // namespace blink |
OLD | NEW |