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

Side by Side Diff: ipc/ipc_send_fds_test.cc

Issue 100253002: Don't HANDLE_EINTR(close). Either IGNORE_EINTR(close) or just close. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years 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 | « ipc/ipc_channel_posix_unittest.cc ('k') | media/base/user_input_monitor_linux.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 "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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 // of descriptors, and not because of the channel closing unexpectedly. 146 // of descriptors, and not because of the channel closing unexpectedly.
147 CHECK(listener.GotExpectedNumberOfDescriptors()); 147 CHECK(listener.GotExpectedNumberOfDescriptors());
148 148
149 return 0; 149 return 0;
150 } 150 }
151 151
152 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendFdsClient) { 152 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendFdsClient) {
153 struct stat st; 153 struct stat st;
154 int fd = open(kDevZeroPath, O_RDONLY); 154 int fd = open(kDevZeroPath, O_RDONLY);
155 fstat(fd, &st); 155 fstat(fd, &st);
156 EXPECT_GE(HANDLE_EINTR(close(fd)), 0); 156 EXPECT_GE(IGNORE_EINTR(close(fd)), 0);
157 return SendFdsClientCommon("SendFdsClient", st.st_ino); 157 return SendFdsClientCommon("SendFdsClient", st.st_ino);
158 } 158 }
159 159
160 #if defined(OS_MACOSX) 160 #if defined(OS_MACOSX)
161 // Test that FDs are correctly sent to a sandboxed process. 161 // Test that FDs are correctly sent to a sandboxed process.
162 // TODO(port): Make this test cross-platform. 162 // TODO(port): Make this test cross-platform.
163 TEST_F(IPCSendFdsTest, DescriptorTestSandboxed) { 163 TEST_F(IPCSendFdsTest, DescriptorTestSandboxed) {
164 Init("SendFdsSandboxedClient"); 164 Init("SendFdsSandboxedClient");
165 RunServer(); 165 RunServer();
166 } 166 }
167 167
168 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendFdsSandboxedClient) { 168 MULTIPROCESS_IPC_TEST_CLIENT_MAIN(SendFdsSandboxedClient) {
169 struct stat st; 169 struct stat st;
170 const int fd = open(kDevZeroPath, O_RDONLY); 170 const int fd = open(kDevZeroPath, O_RDONLY);
171 fstat(fd, &st); 171 fstat(fd, &st);
172 if (HANDLE_EINTR(close(fd)) < 0) 172 if (IGNORE_EINTR(close(fd)) < 0)
173 return -1; 173 return -1;
174 174
175 // Enable the sandbox. 175 // Enable the sandbox.
176 char* error_buff = NULL; 176 char* error_buff = NULL;
177 int error = sandbox_init(kSBXProfilePureComputation, SANDBOX_NAMED, 177 int error = sandbox_init(kSBXProfilePureComputation, SANDBOX_NAMED,
178 &error_buff); 178 &error_buff);
179 bool success = (error == 0 && error_buff == NULL); 179 bool success = (error == 0 && error_buff == NULL);
180 if (!success) 180 if (!success)
181 return -1; 181 return -1;
182 182
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 for (int i = 0; i < pipes_to_send; i++) { 314 for (int i = 0; i < pipes_to_send; i++) {
315 received_.Reset(); 315 received_.Reset();
316 std::pair<int, int> pipe_fds = make_socket_pair(); 316 std::pair<int, int> pipe_fds = make_socket_pair();
317 t->message_loop()->PostTask( 317 t->message_loop()->PostTask(
318 FROM_HERE, 318 FROM_HERE,
319 base::Bind(&PipeChannelHelper::Send, 319 base::Bind(&PipeChannelHelper::Send,
320 base::Unretained(dest), 320 base::Unretained(dest),
321 pipe_fds.second)); 321 pipe_fds.second));
322 char tmp = 'x'; 322 char tmp = 'x';
323 CHECK_EQ(1, HANDLE_EINTR(write(pipe_fds.first, &tmp, 1))); 323 CHECK_EQ(1, HANDLE_EINTR(write(pipe_fds.first, &tmp, 1)));
324 CHECK_EQ(0, HANDLE_EINTR(close(pipe_fds.first))); 324 CHECK_EQ(0, IGNORE_EINTR(close(pipe_fds.first)));
325 received_.Wait(); 325 received_.Wait();
326 } 326 }
327 } 327 }
328 328
329 void ConsumerHandleFD(int fd) { 329 void ConsumerHandleFD(int fd) {
330 char tmp = 'y'; 330 char tmp = 'y';
331 CHECK_EQ(1, HANDLE_EINTR(read(fd, &tmp, 1))); 331 CHECK_EQ(1, HANDLE_EINTR(read(fd, &tmp, 1)));
332 CHECK_EQ(tmp, 'x'); 332 CHECK_EQ(tmp, 'x');
333 CHECK_EQ(0, HANDLE_EINTR(close(fd))); 333 CHECK_EQ(0, IGNORE_EINTR(close(fd)));
334 received_.Signal(); 334 received_.Signal();
335 } 335 }
336 336
337 base::Thread* CreateThread(const char* name) { 337 base::Thread* CreateThread(const char* name) {
338 base::Thread* ret = new base::Thread(name); 338 base::Thread* ret = new base::Thread(name);
339 base::Thread::Options options; 339 base::Thread::Options options;
340 options.message_loop_type = base::MessageLoop::TYPE_IO; 340 options.message_loop_type = base::MessageLoop::TYPE_IO;
341 ret->StartWithOptions(options); 341 ret->StartWithOptions(options);
342 return ret; 342 return ret;
343 } 343 }
(...skipping 27 matching lines...) Expand all
371 base::WaitableEvent received_; 371 base::WaitableEvent received_;
372 }; 372 };
373 373
374 TEST_F(IPCMultiSendingFdsTest, StressTest) { 374 TEST_F(IPCMultiSendingFdsTest, StressTest) {
375 Run(); 375 Run();
376 } 376 }
377 377
378 } // namespace 378 } // namespace
379 379
380 #endif // defined(OS_POSIX) 380 #endif // defined(OS_POSIX)
OLDNEW
« no previous file with comments | « ipc/ipc_channel_posix_unittest.cc ('k') | media/base/user_input_monitor_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698