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

Side by Side Diff: ipc/ipc_send_fds_test.cc

Issue 14383024: ipc: Use base::MessageLoop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 (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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #if defined(OS_POSIX) 7 #if defined(OS_POSIX)
8 #if defined(OS_MACOSX) 8 #if defined(OS_MACOSX)
9 extern "C" { 9 extern "C" {
10 #include <sandbox.h> 10 #include <sandbox.h>
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE { 52 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE {
53 PickleIterator iter(message); 53 PickleIterator iter(message);
54 54
55 ++num_fds_received_; 55 ++num_fds_received_;
56 base::FileDescriptor descriptor; 56 base::FileDescriptor descriptor;
57 57
58 IPC::ParamTraits<base::FileDescriptor>::Read(&message, &iter, &descriptor); 58 IPC::ParamTraits<base::FileDescriptor>::Read(&message, &iter, &descriptor);
59 59
60 VerifyAndCloseDescriptor(descriptor.fd, expected_inode_num_); 60 VerifyAndCloseDescriptor(descriptor.fd, expected_inode_num_);
61 if (num_fds_received_ == kNumFDsToSend) 61 if (num_fds_received_ == kNumFDsToSend)
62 MessageLoop::current()->Quit(); 62 base::MessageLoop::current()->Quit();
63 63
64 return true; 64 return true;
65 } 65 }
66 66
67 virtual void OnChannelError() OVERRIDE { 67 virtual void OnChannelError() OVERRIDE {
68 MessageLoop::current()->Quit(); 68 base::MessageLoop::current()->Quit();
69 } 69 }
70 70
71 bool GotExpectedNumberOfDescriptors() const { 71 bool GotExpectedNumberOfDescriptors() const {
72 return num_fds_received_ == kNumFDsToSend; 72 return num_fds_received_ == kNumFDsToSend;
73 } 73 }
74 74
75 private: 75 private:
76 ino_t expected_inode_num_; 76 ino_t expected_inode_num_;
77 unsigned num_fds_received_; 77 unsigned num_fds_received_;
78 }; 78 };
(...skipping 12 matching lines...) Expand all
91 ASSERT_GE(fd, 0); 91 ASSERT_GE(fd, 0);
92 base::FileDescriptor descriptor(fd, true); 92 base::FileDescriptor descriptor(fd, true);
93 93
94 IPC::Message* message = 94 IPC::Message* message =
95 new IPC::Message(0, 3, IPC::Message::PRIORITY_NORMAL); 95 new IPC::Message(0, 3, IPC::Message::PRIORITY_NORMAL);
96 IPC::ParamTraits<base::FileDescriptor>::Write(message, descriptor); 96 IPC::ParamTraits<base::FileDescriptor>::Write(message, descriptor);
97 ASSERT_TRUE(sender()->Send(message)); 97 ASSERT_TRUE(sender()->Send(message));
98 } 98 }
99 99
100 // Run message loop. 100 // Run message loop.
101 MessageLoop::current()->Run(); 101 base::MessageLoop::current()->Run();
102 102
103 // Close the channel so the client's OnChannelError() gets fired. 103 // Close the channel so the client's OnChannelError() gets fired.
104 channel()->Close(); 104 channel()->Close();
105 105
106 EXPECT_TRUE(WaitForClientShutdown()); 106 EXPECT_TRUE(WaitForClientShutdown());
107 DestroyChannel(); 107 DestroyChannel();
108 } 108 }
109 }; 109 };
110 110
111 TEST_F(IPCSendFdsTest, DescriptorTest) { 111 TEST_F(IPCSendFdsTest, DescriptorTest) {
112 Init("SendFdsClient"); 112 Init("SendFdsClient");
113 RunServer(); 113 RunServer();
114 } 114 }
115 115
116 int SendFdsClientCommon(const std::string& test_client_name, 116 int SendFdsClientCommon(const std::string& test_client_name,
117 ino_t expected_inode_num) { 117 ino_t expected_inode_num) {
118 MessageLoopForIO main_message_loop; 118 base::MessageLoopForIO main_message_loop;
119 MyChannelDescriptorListener listener(expected_inode_num); 119 MyChannelDescriptorListener listener(expected_inode_num);
120 120
121 // Set up IPC channel. 121 // Set up IPC channel.
122 IPC::Channel channel(IPCTestBase::GetChannelName(test_client_name), 122 IPC::Channel channel(IPCTestBase::GetChannelName(test_client_name),
123 IPC::Channel::MODE_CLIENT, 123 IPC::Channel::MODE_CLIENT,
124 &listener); 124 &listener);
125 CHECK(channel.Connect()); 125 CHECK(channel.Connect());
126 126
127 // Run message loop. 127 // Run message loop.
128 MessageLoop::current()->Run(); 128 base::MessageLoop::current()->Run();
129 129
130 // Verify that the message loop was exited due to getting the correct number 130 // Verify that the message loop was exited due to getting the correct number
131 // of descriptors, and not because of the channel closing unexpectedly. 131 // of descriptors, and not because of the channel closing unexpectedly.
132 CHECK(listener.GotExpectedNumberOfDescriptors()); 132 CHECK(listener.GotExpectedNumberOfDescriptors());
133 133
134 return 0; 134 return 0;
135 } 135 }
136 136
137 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendFdsClient) { 137 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendFdsClient) {
138 struct stat st; 138 struct stat st;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 } 174 }
175 175
176 // See if we can receive a file descriptor. 176 // See if we can receive a file descriptor.
177 return SendFdsClientCommon("SendFdsSandboxedClient", st.st_ino); 177 return SendFdsClientCommon("SendFdsSandboxedClient", st.st_ino);
178 } 178 }
179 #endif // defined(OS_MACOSX) 179 #endif // defined(OS_MACOSX)
180 180
181 } // namespace 181 } // namespace
182 182
183 #endif // defined(OS_POSIX) 183 #endif // defined(OS_POSIX)
OLDNEW
« no previous file with comments | « ipc/ipc_perftests.cc ('k') | ipc/ipc_sync_channel.cc » ('j') | ipc/ipc_sync_channel_unittest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698