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

Side by Side Diff: ipc/ipc_sync_channel_unittest.cc

Issue 1354973006: ipc: Remove unnecessary attachment broker plumbing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Compile errors. Created 5 years, 2 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
« no previous file with comments | « ipc/ipc_sync_channel.cc ('k') | ipc/ipc_test_base.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ipc/ipc_sync_channel.h" 5 #include "ipc/ipc_sync_channel.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 Send(reply_msg); 148 Send(reply_msg);
149 } 149 }
150 150
151 virtual void OnNestedTestMsg(Message* reply_msg) { 151 virtual void OnNestedTestMsg(Message* reply_msg) {
152 NOTREACHED(); 152 NOTREACHED();
153 } 153 }
154 154
155 virtual SyncChannel* CreateChannel() { 155 virtual SyncChannel* CreateChannel() {
156 scoped_ptr<SyncChannel> channel = SyncChannel::Create( 156 scoped_ptr<SyncChannel> channel = SyncChannel::Create(
157 channel_name_, mode_, this, ipc_thread_.task_runner().get(), true, 157 channel_name_, mode_, this, ipc_thread_.task_runner().get(), true,
158 &shutdown_event_, nullptr); 158 &shutdown_event_);
159 return channel.release(); 159 return channel.release();
160 } 160 }
161 161
162 base::Thread* ListenerThread() { 162 base::Thread* ListenerThread() {
163 return overrided_thread_ ? overrided_thread_ : &listener_thread_; 163 return overrided_thread_ ? overrided_thread_ : &listener_thread_;
164 } 164 }
165 165
166 const base::Thread& ipc_thread() const { return ipc_thread_; } 166 const base::Thread& ipc_thread() const { return ipc_thread_; }
167 167
168 private: 168 private:
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 325
326 void Run() override { 326 void Run() override {
327 SendAnswerToLife(false, true); 327 SendAnswerToLife(false, true);
328 Done(); 328 Done();
329 } 329 }
330 330
331 SyncChannel* CreateChannel() override { 331 SyncChannel* CreateChannel() override {
332 SyncChannel* channel = 332 SyncChannel* channel =
333 SyncChannel::Create(channel_name(), mode(), this, 333 SyncChannel::Create(channel_name(), mode(), this,
334 ipc_thread().task_runner().get(), create_pipe_now_, 334 ipc_thread().task_runner().get(), create_pipe_now_,
335 shutdown_event(), nullptr).release(); 335 shutdown_event())
336 .release();
336 return channel; 337 return channel;
337 } 338 }
338 339
339 bool create_pipe_now_; 340 bool create_pipe_now_;
340 }; 341 };
341 342
342 class TwoStepClient : public Worker { 343 class TwoStepClient : public Worker {
343 public: 344 public:
344 TwoStepClient(bool create_pipe_now) 345 TwoStepClient(bool create_pipe_now)
345 : Worker(Channel::MODE_CLIENT, "simple_client"), 346 : Worker(Channel::MODE_CLIENT, "simple_client"),
346 create_pipe_now_(create_pipe_now) { } 347 create_pipe_now_(create_pipe_now) { }
347 348
348 void OnAnswer(int* answer) override { 349 void OnAnswer(int* answer) override {
349 *answer = 42; 350 *answer = 42;
350 Done(); 351 Done();
351 } 352 }
352 353
353 SyncChannel* CreateChannel() override { 354 SyncChannel* CreateChannel() override {
354 SyncChannel* channel = 355 SyncChannel* channel =
355 SyncChannel::Create(channel_name(), mode(), this, 356 SyncChannel::Create(channel_name(), mode(), this,
356 ipc_thread().task_runner().get(), create_pipe_now_, 357 ipc_thread().task_runner().get(), create_pipe_now_,
357 shutdown_event(), nullptr).release(); 358 shutdown_event())
359 .release();
358 return channel; 360 return channel;
359 } 361 }
360 362
361 bool create_pipe_now_; 363 bool create_pipe_now_;
362 }; 364 };
363 365
364 void TwoStep(bool create_server_pipe_now, bool create_client_pipe_now) { 366 void TwoStep(bool create_server_pipe_now, bool create_client_pipe_now) {
365 std::vector<Worker*> workers; 367 std::vector<Worker*> workers;
366 workers.push_back(new TwoStepServer(create_server_pipe_now)); 368 workers.push_back(new TwoStepServer(create_server_pipe_now));
367 workers.push_back(new TwoStepClient(create_client_pipe_now)); 369 workers.push_back(new TwoStepClient(create_client_pipe_now));
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
1152 FROM_HERE, base::Bind(&RestrictedDispatchServer::OnDoPing, server_, 1)); 1154 FROM_HERE, base::Bind(&RestrictedDispatchServer::OnDoPing, server_, 1));
1153 sent_ping_event_->Wait(); 1155 sent_ping_event_->Wait();
1154 Send(new SyncChannelTestMsg_NoArgs); 1156 Send(new SyncChannelTestMsg_NoArgs);
1155 if (ping_ == 1) 1157 if (ping_ == 1)
1156 ++*success_; 1158 ++*success_;
1157 else 1159 else
1158 LOG(ERROR) << "Send failed to dispatch incoming message on same channel"; 1160 LOG(ERROR) << "Send failed to dispatch incoming message on same channel";
1159 1161
1160 non_restricted_channel_ = SyncChannel::Create( 1162 non_restricted_channel_ = SyncChannel::Create(
1161 "non_restricted_channel", IPC::Channel::MODE_CLIENT, this, 1163 "non_restricted_channel", IPC::Channel::MODE_CLIENT, this,
1162 ipc_thread().task_runner().get(), true, shutdown_event(), nullptr); 1164 ipc_thread().task_runner().get(), true, shutdown_event());
1163 1165
1164 server_->ListenerThread()->task_runner()->PostTask( 1166 server_->ListenerThread()->task_runner()->PostTask(
1165 FROM_HERE, base::Bind(&RestrictedDispatchServer::OnDoPing, server_, 2)); 1167 FROM_HERE, base::Bind(&RestrictedDispatchServer::OnDoPing, server_, 2));
1166 sent_ping_event_->Wait(); 1168 sent_ping_event_->Wait();
1167 // Check that the incoming message is *not* dispatched when sending on the 1169 // Check that the incoming message is *not* dispatched when sending on the
1168 // non restricted channel. 1170 // non restricted channel.
1169 // TODO(piman): there is a possibility of a false positive race condition 1171 // TODO(piman): there is a possibility of a false positive race condition
1170 // here, if the message that was posted on the server-side end of the pipe 1172 // here, if the message that was posted on the server-side end of the pipe
1171 // is not visible yet on the client side, but I don't know how to solve this 1173 // is not visible yet on the client side, but I don't know how to solve this
1172 // without hooking into the internals of SyncChannel. I haven't seen it in 1174 // without hooking into the internals of SyncChannel. I haven't seen it in
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
1539 Done(); 1541 Done();
1540 } 1542 }
1541 1543
1542 void Run() override { 1544 void Run() override {
1543 channel()->SetRestrictDispatchChannelGroup(group_); 1545 channel()->SetRestrictDispatchChannelGroup(group_);
1544 if (is_first()) 1546 if (is_first())
1545 event1_->Signal(); 1547 event1_->Signal();
1546 event2_->Wait(); 1548 event2_->Wait();
1547 other_channel_ = SyncChannel::Create( 1549 other_channel_ = SyncChannel::Create(
1548 other_channel_name_, IPC::Channel::MODE_CLIENT, this, 1550 other_channel_name_, IPC::Channel::MODE_CLIENT, this,
1549 ipc_thread().task_runner().get(), true, shutdown_event(), nullptr); 1551 ipc_thread().task_runner().get(), true, shutdown_event());
1550 other_channel_->SetRestrictDispatchChannelGroup(group_); 1552 other_channel_->SetRestrictDispatchChannelGroup(group_);
1551 if (!is_first()) { 1553 if (!is_first()) {
1552 event1_->Signal(); 1554 event1_->Signal();
1553 return; 1555 return;
1554 } 1556 }
1555 *success_ = 0; 1557 *success_ = 0;
1556 int value = 0; 1558 int value = 0;
1557 OnPingTTL(3, &value); 1559 OnPingTTL(3, &value);
1558 *success_ += (value == 3); 1560 *success_ += (value == 3);
1559 OnPingTTL(4, &value); 1561 OnPingTTL(4, &value);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1621 1623
1622 class ReentrantReplyServer1 : public Worker { 1624 class ReentrantReplyServer1 : public Worker {
1623 public: 1625 public:
1624 ReentrantReplyServer1(WaitableEvent* server_ready) 1626 ReentrantReplyServer1(WaitableEvent* server_ready)
1625 : Worker("reentrant_reply1", Channel::MODE_SERVER), 1627 : Worker("reentrant_reply1", Channel::MODE_SERVER),
1626 server_ready_(server_ready) { } 1628 server_ready_(server_ready) { }
1627 1629
1628 void Run() override { 1630 void Run() override {
1629 server2_channel_ = SyncChannel::Create( 1631 server2_channel_ = SyncChannel::Create(
1630 "reentrant_reply2", IPC::Channel::MODE_CLIENT, this, 1632 "reentrant_reply2", IPC::Channel::MODE_CLIENT, this,
1631 ipc_thread().task_runner().get(), true, shutdown_event(), nullptr); 1633 ipc_thread().task_runner().get(), true, shutdown_event());
1632 server_ready_->Signal(); 1634 server_ready_->Signal();
1633 Message* msg = new SyncChannelTestMsg_Reentrant1(); 1635 Message* msg = new SyncChannelTestMsg_Reentrant1();
1634 server2_channel_->Send(msg); 1636 server2_channel_->Send(msg);
1635 server2_channel_.reset(); 1637 server2_channel_.reset();
1636 Done(); 1638 Done();
1637 } 1639 }
1638 1640
1639 private: 1641 private:
1640 bool OnMessageReceived(const Message& message) override { 1642 bool OnMessageReceived(const Message& message) override {
1641 IPC_BEGIN_MESSAGE_MAP(ReentrantReplyServer1, message) 1643 IPC_BEGIN_MESSAGE_MAP(ReentrantReplyServer1, message)
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1800 } 1802 }
1801 1803
1802 // Windows needs to send an out-of-band secret to verify the client end of the 1804 // Windows needs to send an out-of-band secret to verify the client end of the
1803 // channel. Test that we still connect correctly in that case. 1805 // channel. Test that we still connect correctly in that case.
1804 TEST_F(IPCSyncChannelTest, Verified) { 1806 TEST_F(IPCSyncChannelTest, Verified) {
1805 Verified(); 1807 Verified();
1806 } 1808 }
1807 1809
1808 } // namespace 1810 } // namespace
1809 } // namespace IPC 1811 } // namespace IPC
OLDNEW
« no previous file with comments | « ipc/ipc_sync_channel.cc ('k') | ipc/ipc_test_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698