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

Side by Side Diff: base/message_loop/message_loop_unittest.cc

Issue 2695593009: Use the location where FileDescriptorWatcher is created to track the libevent handlers (Closed)
Patch Set: fix mac. Created 3 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
« no previous file with comments | « base/files/file_descriptor_watcher_posix.cc ('k') | base/message_loop/message_pump_io_ios.h » ('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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 721 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 732
733 // Create a file descriptor. Doesn't need to be readable or writable, 733 // Create a file descriptor. Doesn't need to be readable or writable,
734 // as we don't need to actually get any notifications. 734 // as we don't need to actually get any notifications.
735 // pipe() is just the easiest way to do it. 735 // pipe() is just the easiest way to do it.
736 int pipefds[2]; 736 int pipefds[2];
737 int err = pipe(pipefds); 737 int err = pipe(pipefds);
738 ASSERT_EQ(0, err); 738 ASSERT_EQ(0, err);
739 int fd = pipefds[1]; 739 int fd = pipefds[1];
740 { 740 {
741 // Arrange for controller to live longer than message loop. 741 // Arrange for controller to live longer than message loop.
742 MessageLoopForIO::FileDescriptorWatcher controller; 742 MessageLoopForIO::FileDescriptorWatcher controller(FROM_HERE);
743 { 743 {
744 MessageLoopForIO message_loop; 744 MessageLoopForIO message_loop;
745 745
746 QuitDelegate delegate; 746 QuitDelegate delegate;
747 message_loop.WatchFileDescriptor(fd, 747 message_loop.WatchFileDescriptor(fd,
748 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate); 748 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate);
749 // and don't run the message loop, just destroy it. 749 // and don't run the message loop, just destroy it.
750 } 750 }
751 } 751 }
752 if (IGNORE_EINTR(close(pipefds[0])) < 0) 752 if (IGNORE_EINTR(close(pipefds[0])) < 0)
753 PLOG(ERROR) << "close"; 753 PLOG(ERROR) << "close";
754 if (IGNORE_EINTR(close(pipefds[1])) < 0) 754 if (IGNORE_EINTR(close(pipefds[1])) < 0)
755 PLOG(ERROR) << "close"; 755 PLOG(ERROR) << "close";
756 } 756 }
757 757
758 TEST(MessageLoopTest, FileDescriptorWatcherDoubleStop) { 758 TEST(MessageLoopTest, FileDescriptorWatcherDoubleStop) {
759 // Verify that it's ok to call StopWatchingFileDescriptor(). 759 // Verify that it's ok to call StopWatchingFileDescriptor().
760 // (Errors only showed up in valgrind.) 760 // (Errors only showed up in valgrind.)
761 int pipefds[2]; 761 int pipefds[2];
762 int err = pipe(pipefds); 762 int err = pipe(pipefds);
763 ASSERT_EQ(0, err); 763 ASSERT_EQ(0, err);
764 int fd = pipefds[1]; 764 int fd = pipefds[1];
765 { 765 {
766 // Arrange for message loop to live longer than controller. 766 // Arrange for message loop to live longer than controller.
767 MessageLoopForIO message_loop; 767 MessageLoopForIO message_loop;
768 { 768 {
769 MessageLoopForIO::FileDescriptorWatcher controller; 769 MessageLoopForIO::FileDescriptorWatcher controller(FROM_HERE);
770 770
771 QuitDelegate delegate; 771 QuitDelegate delegate;
772 message_loop.WatchFileDescriptor(fd, 772 message_loop.WatchFileDescriptor(fd,
773 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate); 773 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate);
774 controller.StopWatchingFileDescriptor(); 774 controller.StopWatchingFileDescriptor();
775 } 775 }
776 } 776 }
777 if (IGNORE_EINTR(close(pipefds[0])) < 0) 777 if (IGNORE_EINTR(close(pipefds[0])) < 0)
778 PLOG(ERROR) << "close"; 778 PLOG(ERROR) << "close";
779 if (IGNORE_EINTR(close(pipefds[1])) < 0) 779 if (IGNORE_EINTR(close(pipefds[1])) < 0)
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1021 1021
1022 { 1022 {
1023 std::string kThreadName("bar"); 1023 std::string kThreadName("bar");
1024 base::Thread thread(kThreadName); 1024 base::Thread thread(kThreadName);
1025 ASSERT_TRUE(thread.StartAndWaitForTesting()); 1025 ASSERT_TRUE(thread.StartAndWaitForTesting());
1026 EXPECT_EQ(kThreadName, thread.message_loop()->GetThreadName()); 1026 EXPECT_EQ(kThreadName, thread.message_loop()->GetThreadName());
1027 } 1027 }
1028 } 1028 }
1029 1029
1030 } // namespace base 1030 } // namespace base
OLDNEW
« no previous file with comments | « base/files/file_descriptor_watcher_posix.cc ('k') | base/message_loop/message_pump_io_ios.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698