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 #ifndef V8ServiceWorkerMessageEventInternal_h | 5 #ifndef V8ServiceWorkerMessageEventInternal_h |
6 #define V8ServiceWorkerMessageEventInternal_h | 6 #define V8ServiceWorkerMessageEventInternal_h |
7 | 7 |
8 #include "bindings/core/v8/SerializedScriptValue.h" | 8 #include "bindings/core/v8/SerializedScriptValue.h" |
9 #include "bindings/core/v8/SerializedScriptValueFactory.h" | 9 #include "bindings/core/v8/SerializedScriptValueFactory.h" |
10 #include "bindings/core/v8/V8PrivateProperty.h" | 10 #include "bindings/core/v8/V8PrivateProperty.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 v8::Local<v8::Value> result = | 80 v8::Local<v8::Value> result = |
81 privateCachedData.get(scriptState->context(), info.Holder()); | 81 privateCachedData.get(scriptState->context(), info.Holder()); |
82 if (!result.IsEmpty()) { | 82 if (!result.IsEmpty()) { |
83 v8SetReturnValue(info, result); | 83 v8SetReturnValue(info, result); |
84 return; | 84 return; |
85 } | 85 } |
86 | 86 |
87 v8::Local<v8::Value> data; | 87 v8::Local<v8::Value> data; |
88 if (SerializedScriptValue* serializedValue = event->serializedData()) { | 88 if (SerializedScriptValue* serializedValue = event->serializedData()) { |
89 MessagePortArray ports = event->ports(); | 89 MessagePortArray ports = event->ports(); |
90 data = serializedValue->deserialize(isolate, &ports); | 90 SerializedScriptValue::DeserializeOptions options; |
| 91 options.messagePorts = &ports; |
| 92 data = serializedValue->deserialize(isolate, options); |
91 } else if (DOMWrapperWorld::current(isolate).isIsolatedWorld()) { | 93 } else if (DOMWrapperWorld::current(isolate).isIsolatedWorld()) { |
92 v8::Local<v8::Value> mainWorldData = | 94 v8::Local<v8::Value> mainWorldData = |
93 privateCachedData.getFromMainWorld(scriptState, event); | 95 privateCachedData.getFromMainWorld(scriptState, event); |
94 if (!mainWorldData.IsEmpty()) { | 96 if (!mainWorldData.IsEmpty()) { |
95 // TODO(bashi): Enter the main world's ScriptState::Scope while | 97 // TODO(bashi): Enter the main world's ScriptState::Scope while |
96 // serializing the main world's value. | 98 // serializing the main world's value. |
97 event->setSerializedData( | 99 event->setSerializedData( |
98 SerializedScriptValue::serializeAndSwallowExceptions( | 100 SerializedScriptValue::serializeAndSwallowExceptions( |
99 info.GetIsolate(), mainWorldData)); | 101 info.GetIsolate(), mainWorldData)); |
100 data = event->serializedData()->deserialize(isolate); | 102 data = event->serializedData()->deserialize(isolate); |
101 } | 103 } |
102 } | 104 } |
103 if (data.IsEmpty()) | 105 if (data.IsEmpty()) |
104 data = v8::Null(isolate); | 106 data = v8::Null(isolate); |
105 privateCachedData.set(scriptState->context(), info.Holder(), data); | 107 privateCachedData.set(scriptState->context(), info.Holder(), data); |
106 v8SetReturnValue(info, data); | 108 v8SetReturnValue(info, data); |
107 } | 109 } |
108 | 110 |
109 } // namespace blink | 111 } // namespace blink |
110 | 112 |
111 #endif // V8ServiceWorkerMessageEventInternal_h | 113 #endif // V8ServiceWorkerMessageEventInternal_h |
OLD | NEW |