| OLD | NEW |
| 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 <vector> | 5 #include <vector> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 937 MessageLoopForIO::FileDescriptorWatcher controller; | 937 MessageLoopForIO::FileDescriptorWatcher controller; |
| 938 { | 938 { |
| 939 MessageLoopForIO message_loop; | 939 MessageLoopForIO message_loop; |
| 940 | 940 |
| 941 QuitDelegate delegate; | 941 QuitDelegate delegate; |
| 942 message_loop.WatchFileDescriptor(fd, | 942 message_loop.WatchFileDescriptor(fd, |
| 943 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate); | 943 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate); |
| 944 // and don't run the message loop, just destroy it. | 944 // and don't run the message loop, just destroy it. |
| 945 } | 945 } |
| 946 } | 946 } |
| 947 if (HANDLE_EINTR(close(pipefds[0])) < 0) | 947 if (IGNORE_EINTR(close(pipefds[0])) < 0) |
| 948 PLOG(ERROR) << "close"; | 948 PLOG(ERROR) << "close"; |
| 949 if (HANDLE_EINTR(close(pipefds[1])) < 0) | 949 if (IGNORE_EINTR(close(pipefds[1])) < 0) |
| 950 PLOG(ERROR) << "close"; | 950 PLOG(ERROR) << "close"; |
| 951 } | 951 } |
| 952 | 952 |
| 953 TEST(MessageLoopTest, FileDescriptorWatcherDoubleStop) { | 953 TEST(MessageLoopTest, FileDescriptorWatcherDoubleStop) { |
| 954 // Verify that it's ok to call StopWatchingFileDescriptor(). | 954 // Verify that it's ok to call StopWatchingFileDescriptor(). |
| 955 // (Errors only showed up in valgrind.) | 955 // (Errors only showed up in valgrind.) |
| 956 int pipefds[2]; | 956 int pipefds[2]; |
| 957 int err = pipe(pipefds); | 957 int err = pipe(pipefds); |
| 958 ASSERT_EQ(0, err); | 958 ASSERT_EQ(0, err); |
| 959 int fd = pipefds[1]; | 959 int fd = pipefds[1]; |
| 960 { | 960 { |
| 961 // Arrange for message loop to live longer than controller. | 961 // Arrange for message loop to live longer than controller. |
| 962 MessageLoopForIO message_loop; | 962 MessageLoopForIO message_loop; |
| 963 { | 963 { |
| 964 MessageLoopForIO::FileDescriptorWatcher controller; | 964 MessageLoopForIO::FileDescriptorWatcher controller; |
| 965 | 965 |
| 966 QuitDelegate delegate; | 966 QuitDelegate delegate; |
| 967 message_loop.WatchFileDescriptor(fd, | 967 message_loop.WatchFileDescriptor(fd, |
| 968 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate); | 968 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate); |
| 969 controller.StopWatchingFileDescriptor(); | 969 controller.StopWatchingFileDescriptor(); |
| 970 } | 970 } |
| 971 } | 971 } |
| 972 if (HANDLE_EINTR(close(pipefds[0])) < 0) | 972 if (IGNORE_EINTR(close(pipefds[0])) < 0) |
| 973 PLOG(ERROR) << "close"; | 973 PLOG(ERROR) << "close"; |
| 974 if (HANDLE_EINTR(close(pipefds[1])) < 0) | 974 if (IGNORE_EINTR(close(pipefds[1])) < 0) |
| 975 PLOG(ERROR) << "close"; | 975 PLOG(ERROR) << "close"; |
| 976 } | 976 } |
| 977 | 977 |
| 978 } // namespace | 978 } // namespace |
| 979 | 979 |
| 980 #endif // defined(OS_POSIX) && !defined(OS_NACL) | 980 #endif // defined(OS_POSIX) && !defined(OS_NACL) |
| 981 | 981 |
| 982 namespace { | 982 namespace { |
| 983 // Inject a test point for recording the destructor calls for Closure objects | 983 // Inject a test point for recording the destructor calls for Closure objects |
| 984 // send to MessageLoop::PostTask(). It is awkward usage since we are trying to | 984 // send to MessageLoop::PostTask(). It is awkward usage since we are trying to |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1164 | 1164 |
| 1165 ASSERT_TRUE(PostMessage(message_hwnd, kSignalMsg, 0, 1)); | 1165 ASSERT_TRUE(PostMessage(message_hwnd, kSignalMsg, 0, 1)); |
| 1166 | 1166 |
| 1167 loop.Run(); | 1167 loop.Run(); |
| 1168 | 1168 |
| 1169 ASSERT_TRUE(UnregisterClass(MAKEINTATOM(atom), instance)); | 1169 ASSERT_TRUE(UnregisterClass(MAKEINTATOM(atom), instance)); |
| 1170 } | 1170 } |
| 1171 #endif // defined(OS_WIN) | 1171 #endif // defined(OS_WIN) |
| 1172 | 1172 |
| 1173 } // namespace base | 1173 } // namespace base |
| OLD | NEW |