Index: third_party/WebKit/Source/modules/broadcastchannel/BroadcastChannel.cpp |
diff --git a/third_party/WebKit/Source/modules/broadcastchannel/BroadcastChannel.cpp b/third_party/WebKit/Source/modules/broadcastchannel/BroadcastChannel.cpp |
index 676b82350874c1fa2f0589241ac0d461aeeba4c6..28fffa8ba2037b1fb698a0c0bf9ed95c6c4b7185 100644 |
--- a/third_party/WebKit/Source/modules/broadcastchannel/BroadcastChannel.cpp |
+++ b/third_party/WebKit/Source/modules/broadcastchannel/BroadcastChannel.cpp |
@@ -63,8 +63,11 @@ void BroadcastChannel::postMessage(const ScriptValue& message, ExceptionState& e |
if (exceptionState.hadException()) |
return; |
- String data = value->toWireString(); |
- m_remoteClient->OnMessage(data); |
+ Vector<char> data; |
esprehn
2016/07/23 08:53:50
you want to call reserveInitialCapacity on both of
Marijn Kruisselbrink
2016/07/23 19:14:18
Not sure what resized and copies that would avoid?
|
+ value->toWireBytes(data); |
+ Vector<uint8_t> mojoData; |
+ mojoData.appendVector(data); |
dcheng
2016/07/22 02:33:03
It's sad that this results in copying the data now
Marijn Kruisselbrink
2016/07/22 03:23:12
Yeah... but reinterpret_casting a Vector didn't se
|
+ m_remoteClient->OnMessage(std::move(mojoData)); |
} |
void BroadcastChannel::close() |
@@ -95,10 +98,10 @@ DEFINE_TRACE(BroadcastChannel) |
EventTargetWithInlineData::trace(visitor); |
} |
-void BroadcastChannel::OnMessage(const String& message) |
+void BroadcastChannel::OnMessage(mojo::WTFArray<uint8_t> message) |
{ |
// Queue a task to dispatch the event. |
- RefPtr<SerializedScriptValue> value = SerializedScriptValue::create(message); |
+ RefPtr<SerializedScriptValue> value = SerializedScriptValue::create(reinterpret_cast<const char*>(&message.front()), message.size()); |
MessageEvent* event = MessageEvent::create(nullptr, value.release(), getExecutionContext()->getSecurityOrigin()->toString()); |
event->setTarget(this); |
bool success = getExecutionContext()->getEventQueue()->enqueueEvent(event); |