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

Side by Side Diff: Source/modules/serviceworkers/Client.cpp

Issue 264233003: Add blink-side binding code and tests for ServiceWorker -> Document postMessage (3/3) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: added message port tests Created 6 years, 7 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "config.h" 5 #include "config.h"
6 #include "modules/serviceworkers/Client.h" 6 #include "modules/serviceworkers/Client.h"
7 7
8 #include "bindings/v8/ExceptionState.h"
9 #include "modules/serviceworkers/ServiceWorkerGlobalScopeClient.h"
8 #include "wtf/RefPtr.h" 10 #include "wtf/RefPtr.h"
9 11
10 namespace WebCore { 12 namespace WebCore {
11 13
12 PassRefPtr<Client> Client::create(unsigned id) 14 PassRefPtr<Client> Client::create(unsigned id)
13 { 15 {
14 return adoptRef(new Client(id)); 16 return adoptRef(new Client(id));
15 } 17 }
16 18
17 Client::Client(unsigned id) 19 Client::Client(unsigned id)
18 : m_id(id) 20 : m_id(id)
19 { 21 {
20 ScriptWrappable::init(this); 22 ScriptWrappable::init(this);
21 } 23 }
22 24
23 Client::~Client() 25 Client::~Client()
24 { 26 {
25 } 27 }
26 28
29 void Client::postMessage(ExecutionContext* context, PassRefPtr<SerializedScriptV alue> message, const MessagePortArray* ports, ExceptionState& exceptionState)
30 {
31 // Disentangle the port in preparation for sending it to the remote context.
32 OwnPtr<MessagePortChannelArray> channels = MessagePort::disentanglePorts(por ts, exceptionState);
33 if (exceptionState.hadException())
34 return;
35
36 ServiceWorkerGlobalScopeClient::from(context)->postMessageToClient(m_id, mes sage, channels.release());
37 }
38
27 } // namespace WebCore 39 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698