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

Side by Side Diff: mojo/public/bindings/tests/connector_unittest.cc

Issue 150713002: Mojo: Add ErrorHandler to RemotePtr (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update per review feedback Created 6 years, 10 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
« no previous file with comments | « mojo/public/bindings/remote_ptr.h ('k') | mojo/public/bindings/tests/remote_ptr_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <stdlib.h> 5 #include <stdlib.h>
6 #include <string.h> 6 #include <string.h>
7 7
8 #include "mojo/public/bindings/lib/connector.h" 8 #include "mojo/public/bindings/lib/connector.h"
9 #include "mojo/public/bindings/lib/message_queue.h" 9 #include "mojo/public/bindings/lib/message_queue.h"
10 #include "mojo/public/environment/environment.h" 10 #include "mojo/public/environment/environment.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 internal::Connector connector1(handle1_.Pass()); 76 internal::Connector connector1(handle1_.Pass());
77 77
78 const char kText[] = "hello world"; 78 const char kText[] = "hello world";
79 79
80 Message message; 80 Message message;
81 AllocMessage(kText, &message); 81 AllocMessage(kText, &message);
82 82
83 connector0.Accept(&message); 83 connector0.Accept(&message);
84 84
85 MessageAccumulator accumulator; 85 MessageAccumulator accumulator;
86 connector1.SetIncomingReceiver(&accumulator); 86 connector1.set_incoming_receiver(&accumulator);
87 87
88 PumpMessages(); 88 PumpMessages();
89 89
90 ASSERT_FALSE(accumulator.IsEmpty()); 90 ASSERT_FALSE(accumulator.IsEmpty());
91 91
92 Message message_received; 92 Message message_received;
93 accumulator.Pop(&message_received); 93 accumulator.Pop(&message_received);
94 94
95 EXPECT_EQ(std::string(kText), 95 EXPECT_EQ(std::string(kText),
96 std::string( 96 std::string(
97 reinterpret_cast<char*>(message_received.data->payload))); 97 reinterpret_cast<char*>(message_received.data->payload)));
98 } 98 }
99 99
100 TEST_F(ConnectorTest, Basic_EarlyIncomingReceiver) { 100 TEST_F(ConnectorTest, Basic_EarlyIncomingReceiver) {
101 internal::Connector connector0(handle0_.Pass()); 101 internal::Connector connector0(handle0_.Pass());
102 internal::Connector connector1(handle1_.Pass()); 102 internal::Connector connector1(handle1_.Pass());
103 103
104 MessageAccumulator accumulator; 104 MessageAccumulator accumulator;
105 connector1.SetIncomingReceiver(&accumulator); 105 connector1.set_incoming_receiver(&accumulator);
106 106
107 const char kText[] = "hello world"; 107 const char kText[] = "hello world";
108 108
109 Message message; 109 Message message;
110 AllocMessage(kText, &message); 110 AllocMessage(kText, &message);
111 111
112 connector0.Accept(&message); 112 connector0.Accept(&message);
113 113
114 PumpMessages(); 114 PumpMessages();
115 115
(...skipping 14 matching lines...) Expand all
130 const char* kText[] = { "hello", "world" }; 130 const char* kText[] = { "hello", "world" };
131 131
132 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { 132 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) {
133 Message message; 133 Message message;
134 AllocMessage(kText[i], &message); 134 AllocMessage(kText[i], &message);
135 135
136 connector0.Accept(&message); 136 connector0.Accept(&message);
137 } 137 }
138 138
139 MessageAccumulator accumulator; 139 MessageAccumulator accumulator;
140 connector1.SetIncomingReceiver(&accumulator); 140 connector1.set_incoming_receiver(&accumulator);
141 141
142 PumpMessages(); 142 PumpMessages();
143 143
144 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) { 144 for (size_t i = 0; i < MOJO_ARRAYSIZE(kText); ++i) {
145 ASSERT_FALSE(accumulator.IsEmpty()); 145 ASSERT_FALSE(accumulator.IsEmpty());
146 146
147 Message message_received; 147 Message message_received;
148 accumulator.Pop(&message_received); 148 accumulator.Pop(&message_received);
149 149
150 EXPECT_EQ(std::string(kText[i]), 150 EXPECT_EQ(std::string(kText[i]),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 ScopedMessagePipeHandle handles[2]; 185 ScopedMessagePipeHandle handles[2];
186 CreateMessagePipe(&handles[0], &handles[1]); 186 CreateMessagePipe(&handles[0], &handles[1]);
187 message.handles.push_back(handles[0].release()); 187 message.handles.push_back(handles[0].release());
188 188
189 connector0.Accept(&message); 189 connector0.Accept(&message);
190 190
191 // The message should have been transferred, releasing the handles. 191 // The message should have been transferred, releasing the handles.
192 EXPECT_TRUE(message.handles.empty()); 192 EXPECT_TRUE(message.handles.empty());
193 193
194 MessageAccumulator accumulator; 194 MessageAccumulator accumulator;
195 connector1.SetIncomingReceiver(&accumulator); 195 connector1.set_incoming_receiver(&accumulator);
196 196
197 PumpMessages(); 197 PumpMessages();
198 198
199 ASSERT_FALSE(accumulator.IsEmpty()); 199 ASSERT_FALSE(accumulator.IsEmpty());
200 200
201 Message message_received; 201 Message message_received;
202 accumulator.Pop(&message_received); 202 accumulator.Pop(&message_received);
203 203
204 EXPECT_EQ(std::string(kText), 204 EXPECT_EQ(std::string(kText),
205 std::string( 205 std::string(
206 reinterpret_cast<char*>(message_received.data->payload))); 206 reinterpret_cast<char*>(message_received.data->payload)));
207 ASSERT_EQ(1U, message_received.handles.size()); 207 ASSERT_EQ(1U, message_received.handles.size());
208 208
209 // Now send a message to the transferred handle and confirm it's sent through 209 // Now send a message to the transferred handle and confirm it's sent through
210 // to the orginal pipe. 210 // to the orginal pipe.
211 // TODO(vtl): Do we need a better way of "downcasting" the handle types? 211 // TODO(vtl): Do we need a better way of "downcasting" the handle types?
212 ScopedMessagePipeHandle smph; 212 ScopedMessagePipeHandle smph;
213 smph.reset(MessagePipeHandle(message_received.handles[0].value())); 213 smph.reset(MessagePipeHandle(message_received.handles[0].value()));
214 message_received.handles[0] = Handle(); // |smph| now owns this handle. 214 message_received.handles[0] = Handle(); // |smph| now owns this handle.
215 215
216 internal::Connector connector_received(smph.Pass()); 216 internal::Connector connector_received(smph.Pass());
217 internal::Connector connector_original(handles[1].Pass()); 217 internal::Connector connector_original(handles[1].Pass());
218 218
219 AllocMessage(kText, &message); 219 AllocMessage(kText, &message);
220 220
221 connector_received.Accept(&message); 221 connector_received.Accept(&message);
222 connector_original.SetIncomingReceiver(&accumulator); 222 connector_original.set_incoming_receiver(&accumulator);
223 PumpMessages(); 223 PumpMessages();
224 224
225 ASSERT_FALSE(accumulator.IsEmpty()); 225 ASSERT_FALSE(accumulator.IsEmpty());
226 226
227 accumulator.Pop(&message_received); 227 accumulator.Pop(&message_received);
228 228
229 EXPECT_EQ(std::string(kText), 229 EXPECT_EQ(std::string(kText),
230 std::string( 230 std::string(
231 reinterpret_cast<char*>(message_received.data->payload))); 231 reinterpret_cast<char*>(message_received.data->payload)));
232 } 232 }
233 233
234 } // namespace test 234 } // namespace test
235 } // namespace mojo 235 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/bindings/remote_ptr.h ('k') | mojo/public/bindings/tests/remote_ptr_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698