OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 21 matching lines...) Expand all Loading... |
32 #include "core/dom/MessagePortChannel.h" | 32 #include "core/dom/MessagePortChannel.h" |
33 | 33 |
34 #include "core/dom/MessagePort.h" | 34 #include "core/dom/MessagePort.h" |
35 #include "public/platform/Platform.h" | 35 #include "public/platform/Platform.h" |
36 #include "public/platform/WebMessagePortChannel.h" | 36 #include "public/platform/WebMessagePortChannel.h" |
37 #include "public/platform/WebString.h" | 37 #include "public/platform/WebString.h" |
38 #include "wtf/PassRefPtr.h" | 38 #include "wtf/PassRefPtr.h" |
39 | 39 |
40 namespace WebCore { | 40 namespace WebCore { |
41 | 41 |
42 PassOwnPtr<MessagePortChannel> MessagePortChannel::create(WebKit::WebMessagePort
Channel* channel) | 42 PassOwnPtr<MessagePortChannel> MessagePortChannel::create(blink::WebMessagePortC
hannel* channel) |
43 { | 43 { |
44 return adoptPtr(new MessagePortChannel(channel)); | 44 return adoptPtr(new MessagePortChannel(channel)); |
45 } | 45 } |
46 | 46 |
47 void MessagePortChannel::createChannel(MessagePort* port1, MessagePort* port2) | 47 void MessagePortChannel::createChannel(MessagePort* port1, MessagePort* port2) |
48 { | 48 { |
49 // Create proxies for each endpoint. | 49 // Create proxies for each endpoint. |
50 OwnPtr<MessagePortChannel> channel1 = create(WebKit::Platform::current()->cr
eateMessagePortChannel()); | 50 OwnPtr<MessagePortChannel> channel1 = create(blink::Platform::current()->cre
ateMessagePortChannel()); |
51 OwnPtr<MessagePortChannel> channel2 = create(WebKit::Platform::current()->cr
eateMessagePortChannel()); | 51 OwnPtr<MessagePortChannel> channel2 = create(blink::Platform::current()->cre
ateMessagePortChannel()); |
52 | 52 |
53 // Entangle the two endpoints. | 53 // Entangle the two endpoints. |
54 channel1->m_webChannel->entangle(channel2->m_webChannel); | 54 channel1->m_webChannel->entangle(channel2->m_webChannel); |
55 channel2->m_webChannel->entangle(channel1->m_webChannel); | 55 channel2->m_webChannel->entangle(channel1->m_webChannel); |
56 | 56 |
57 // Now entangle the proxies with the appropriate local ports. | 57 // Now entangle the proxies with the appropriate local ports. |
58 port1->entangle(channel2.release()); | 58 port1->entangle(channel2.release()); |
59 port2->entangle(channel1.release()); | 59 port2->entangle(channel1.release()); |
60 } | 60 } |
61 | 61 |
62 MessagePortChannel::MessagePortChannel(WebKit::WebMessagePortChannel* channel) | 62 MessagePortChannel::MessagePortChannel(blink::WebMessagePortChannel* channel) |
63 : m_localPort(0) | 63 : m_localPort(0) |
64 , m_webChannel(channel) | 64 , m_webChannel(channel) |
65 { | 65 { |
66 ASSERT(m_webChannel); | 66 ASSERT(m_webChannel); |
67 m_webChannel->setClient(this); | 67 m_webChannel->setClient(this); |
68 } | 68 } |
69 | 69 |
70 MessagePortChannel::~MessagePortChannel() | 70 MessagePortChannel::~MessagePortChannel() |
71 { | 71 { |
72 if (m_webChannel) | 72 if (m_webChannel) |
(...skipping 10 matching lines...) Expand all Loading... |
83 { | 83 { |
84 MutexLocker lock(m_mutex); | 84 MutexLocker lock(m_mutex); |
85 m_localPort = 0; | 85 m_localPort = 0; |
86 } | 86 } |
87 | 87 |
88 void MessagePortChannel::postMessageToRemote(PassRefPtr<SerializedScriptValue> m
essage, PassOwnPtr<MessagePortChannelArray> channels) | 88 void MessagePortChannel::postMessageToRemote(PassRefPtr<SerializedScriptValue> m
essage, PassOwnPtr<MessagePortChannelArray> channels) |
89 { | 89 { |
90 if (!m_localPort || !m_webChannel) | 90 if (!m_localPort || !m_webChannel) |
91 return; | 91 return; |
92 | 92 |
93 WebKit::WebString messageString = message->toWireString(); | 93 blink::WebString messageString = message->toWireString(); |
94 WebKit::WebMessagePortChannelArray* webChannels = 0; | 94 blink::WebMessagePortChannelArray* webChannels = 0; |
95 if (channels && channels->size()) { | 95 if (channels && channels->size()) { |
96 webChannels = new WebKit::WebMessagePortChannelArray(channels->size()); | 96 webChannels = new blink::WebMessagePortChannelArray(channels->size()); |
97 for (size_t i = 0; i < channels->size(); ++i) | 97 for (size_t i = 0; i < channels->size(); ++i) |
98 (*webChannels)[i] = (*channels)[i]->webChannelRelease(); | 98 (*webChannels)[i] = (*channels)[i]->webChannelRelease(); |
99 } | 99 } |
100 m_webChannel->postMessage(messageString, webChannels); | 100 m_webChannel->postMessage(messageString, webChannels); |
101 } | 101 } |
102 | 102 |
103 bool MessagePortChannel::tryGetMessageFromRemote(RefPtr<SerializedScriptValue>&
serializedMessage, OwnPtr<MessagePortChannelArray>& channels) | 103 bool MessagePortChannel::tryGetMessageFromRemote(RefPtr<SerializedScriptValue>&
serializedMessage, OwnPtr<MessagePortChannelArray>& channels) |
104 { | 104 { |
105 if (!m_webChannel) | 105 if (!m_webChannel) |
106 return false; | 106 return false; |
107 | 107 |
108 WebKit::WebString message; | 108 blink::WebString message; |
109 WebKit::WebMessagePortChannelArray webChannels; | 109 blink::WebMessagePortChannelArray webChannels; |
110 bool rv = m_webChannel->tryGetMessage(&message, webChannels); | 110 bool rv = m_webChannel->tryGetMessage(&message, webChannels); |
111 if (rv) { | 111 if (rv) { |
112 if (webChannels.size()) { | 112 if (webChannels.size()) { |
113 channels = adoptPtr(new MessagePortChannelArray(webChannels.size()))
; | 113 channels = adoptPtr(new MessagePortChannelArray(webChannels.size()))
; |
114 for (size_t i = 0; i < webChannels.size(); ++i) | 114 for (size_t i = 0; i < webChannels.size(); ++i) |
115 (*channels)[i] = MessagePortChannel::create(webChannels[i]); | 115 (*channels)[i] = MessagePortChannel::create(webChannels[i]); |
116 } | 116 } |
117 serializedMessage = SerializedScriptValue::createFromWire(message); | 117 serializedMessage = SerializedScriptValue::createFromWire(message); |
118 } | 118 } |
119 | 119 |
(...skipping 14 matching lines...) Expand all Loading... |
134 return m_localPort; | 134 return m_localPort; |
135 } | 135 } |
136 | 136 |
137 void MessagePortChannel::messageAvailable() | 137 void MessagePortChannel::messageAvailable() |
138 { | 138 { |
139 MutexLocker lock(m_mutex); | 139 MutexLocker lock(m_mutex); |
140 if (m_localPort) | 140 if (m_localPort) |
141 m_localPort->messageAvailable(); | 141 m_localPort->messageAvailable(); |
142 } | 142 } |
143 | 143 |
144 WebKit::WebMessagePortChannel* MessagePortChannel::webChannelRelease() | 144 blink::WebMessagePortChannel* MessagePortChannel::webChannelRelease() |
145 { | 145 { |
146 ASSERT(m_webChannel); | 146 ASSERT(m_webChannel); |
147 WebKit::WebMessagePortChannel* webChannel = m_webChannel; | 147 blink::WebMessagePortChannel* webChannel = m_webChannel; |
148 m_webChannel = 0; | 148 m_webChannel = 0; |
149 webChannel->setClient(0); | 149 webChannel->setClient(0); |
150 return webChannel; | 150 return webChannel; |
151 } | 151 } |
152 | 152 |
153 } // namespace WebCore | 153 } // namespace WebCore |
OLD | NEW |