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

Side by Side Diff: base/message_loop_unittest.cc

Issue 3062003: Random bits of header and whitespace cleanup. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 5 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
« no previous file with comments | « no previous file | chrome/browser/views/tab_contents/tab_contents_drag_win.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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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>
6
5 #include "base/eintr_wrapper.h" 7 #include "base/eintr_wrapper.h"
6 #include "base/logging.h" 8 #include "base/logging.h"
7 #include "base/message_loop.h" 9 #include "base/message_loop.h"
8 #include "base/platform_thread.h" 10 #include "base/platform_thread.h"
9 #include "base/ref_counted.h" 11 #include "base/ref_counted.h"
10 #include "base/task.h" 12 #include "base/task.h"
11 #include "base/thread.h" 13 #include "base/thread.h"
12 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
13 15
14 #if defined(OS_WIN) 16 #if defined(OS_WIN)
(...skipping 817 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 834
833 // Poll for the MessageBox. Don't do this at home! At the speed we do it, 835 // Poll for the MessageBox. Don't do this at home! At the speed we do it,
834 // you will never realize one MessageBox was shown. 836 // you will never realize one MessageBox was shown.
835 for (; expect_window_;) { 837 for (; expect_window_;) {
836 HWND window = FindWindow(L"#32770", kMessageBoxTitle); 838 HWND window = FindWindow(L"#32770", kMessageBoxTitle);
837 if (window) { 839 if (window) {
838 // Dismiss it. 840 // Dismiss it.
839 for (;;) { 841 for (;;) {
840 HWND button = FindWindowEx(window, NULL, L"Button", NULL); 842 HWND button = FindWindowEx(window, NULL, L"Button", NULL);
841 if (button != NULL) { 843 if (button != NULL) {
842 EXPECT_TRUE(0 == SendMessage(button, WM_LBUTTONDOWN, 0, 0)); 844 EXPECT_EQ(0, SendMessage(button, WM_LBUTTONDOWN, 0, 0));
843 EXPECT_TRUE(0 == SendMessage(button, WM_LBUTTONUP, 0, 0)); 845 EXPECT_EQ(0, SendMessage(button, WM_LBUTTONUP, 0, 0));
844 break; 846 break;
845 } 847 }
846 } 848 }
847 break; 849 break;
848 } 850 }
849 } 851 }
850 } 852 }
851 853
852 private: 854 private:
853 MessageLoop* target_; 855 MessageLoop* target_;
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
1452 } 1454 }
1453 1455
1454 TEST(MessageLoopTest, NonNestableDelayedInNestedLoop) { 1456 TEST(MessageLoopTest, NonNestableDelayedInNestedLoop) {
1455 RunTest_NonNestableInNestedLoop(MessageLoop::TYPE_DEFAULT, true); 1457 RunTest_NonNestableInNestedLoop(MessageLoop::TYPE_DEFAULT, true);
1456 RunTest_NonNestableInNestedLoop(MessageLoop::TYPE_UI, true); 1458 RunTest_NonNestableInNestedLoop(MessageLoop::TYPE_UI, true);
1457 RunTest_NonNestableInNestedLoop(MessageLoop::TYPE_IO, true); 1459 RunTest_NonNestableInNestedLoop(MessageLoop::TYPE_IO, true);
1458 } 1460 }
1459 1461
1460 class DummyTask : public Task { 1462 class DummyTask : public Task {
1461 public: 1463 public:
1462 DummyTask(int num_tasks) : num_tasks_(num_tasks) {} 1464 explicit DummyTask(int num_tasks) : num_tasks_(num_tasks) {}
1463 1465
1464 virtual void Run() { 1466 virtual void Run() {
1465 if (num_tasks_ > 1) { 1467 if (num_tasks_ > 1) {
1466 MessageLoop::current()->PostTask( 1468 MessageLoop::current()->PostTask(
1467 FROM_HERE, 1469 FROM_HERE,
1468 new DummyTask(num_tasks_ - 1)); 1470 new DummyTask(num_tasks_ - 1));
1469 } else { 1471 } else {
1470 MessageLoop::current()->Quit(); 1472 MessageLoop::current()->Quit();
1471 } 1473 }
1472 } 1474 }
1473 1475
1474 private: 1476 private:
1475 const int num_tasks_; 1477 const int num_tasks_;
1476 }; 1478 };
1477 1479
1478 class DummyTaskObserver : public MessageLoop::TaskObserver { 1480 class DummyTaskObserver : public MessageLoop::TaskObserver {
1479 public: 1481 public:
1480 DummyTaskObserver(int num_tasks) 1482 explicit DummyTaskObserver(int num_tasks)
1481 : num_tasks_started_(0), 1483 : num_tasks_started_(0),
1482 num_tasks_processed_(0), 1484 num_tasks_processed_(0),
1483 num_tasks_(num_tasks) {} 1485 num_tasks_(num_tasks) {}
1484 1486
1485 virtual ~DummyTaskObserver() {} 1487 virtual ~DummyTaskObserver() {}
1486 1488
1487 virtual void WillProcessTask(base::TimeTicks /* birth_time */) { 1489 virtual void WillProcessTask(base::TimeTicks /* birth_time */) {
1488 num_tasks_started_++; 1490 num_tasks_started_++;
1489 EXPECT_LE(num_tasks_started_, num_tasks_); 1491 EXPECT_LE(num_tasks_started_, num_tasks_);
1490 EXPECT_EQ(num_tasks_started_, num_tasks_processed_ + 1); 1492 EXPECT_EQ(num_tasks_started_, num_tasks_processed_ + 1);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1586 1588
1587 TEST(MessageLoopTest, FileDescriptorWatcherOutlivesMessageLoop) { 1589 TEST(MessageLoopTest, FileDescriptorWatcherOutlivesMessageLoop) {
1588 // Simulate a MessageLoop that dies before an FileDescriptorWatcher. 1590 // Simulate a MessageLoop that dies before an FileDescriptorWatcher.
1589 // This could happen when people use the Singleton pattern or atexit. 1591 // This could happen when people use the Singleton pattern or atexit.
1590 1592
1591 // Create a file descriptor. Doesn't need to be readable or writable, 1593 // Create a file descriptor. Doesn't need to be readable or writable,
1592 // as we don't need to actually get any notifications. 1594 // as we don't need to actually get any notifications.
1593 // pipe() is just the easiest way to do it. 1595 // pipe() is just the easiest way to do it.
1594 int pipefds[2]; 1596 int pipefds[2];
1595 int err = pipe(pipefds); 1597 int err = pipe(pipefds);
1596 ASSERT_TRUE(err == 0); 1598 ASSERT_EQ(0, err);
1597 int fd = pipefds[1]; 1599 int fd = pipefds[1];
1598 { 1600 {
1599 // Arrange for controller to live longer than message loop. 1601 // Arrange for controller to live longer than message loop.
1600 base::MessagePumpLibevent::FileDescriptorWatcher controller; 1602 base::MessagePumpLibevent::FileDescriptorWatcher controller;
1601 { 1603 {
1602 MessageLoopForIO message_loop; 1604 MessageLoopForIO message_loop;
1603 1605
1604 QuitDelegate delegate; 1606 QuitDelegate delegate;
1605 message_loop.WatchFileDescriptor(fd, 1607 message_loop.WatchFileDescriptor(fd,
1606 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate); 1608 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate);
1607 // and don't run the message loop, just destroy it. 1609 // and don't run the message loop, just destroy it.
1608 } 1610 }
1609 } 1611 }
1610 if (HANDLE_EINTR(close(pipefds[0])) < 0) 1612 if (HANDLE_EINTR(close(pipefds[0])) < 0)
1611 PLOG(ERROR) << "close"; 1613 PLOG(ERROR) << "close";
1612 if (HANDLE_EINTR(close(pipefds[1])) < 0) 1614 if (HANDLE_EINTR(close(pipefds[1])) < 0)
1613 PLOG(ERROR) << "close"; 1615 PLOG(ERROR) << "close";
1614 } 1616 }
1615 1617
1616 TEST(MessageLoopTest, FileDescriptorWatcherDoubleStop) { 1618 TEST(MessageLoopTest, FileDescriptorWatcherDoubleStop) {
1617 // Verify that it's ok to call StopWatchingFileDescriptor(). 1619 // Verify that it's ok to call StopWatchingFileDescriptor().
1618 // (Errors only showed up in valgrind.) 1620 // (Errors only showed up in valgrind.)
1619 int pipefds[2]; 1621 int pipefds[2];
1620 int err = pipe(pipefds); 1622 int err = pipe(pipefds);
1621 ASSERT_TRUE(err == 0); 1623 ASSERT_EQ(0, err);
1622 int fd = pipefds[1]; 1624 int fd = pipefds[1];
1623 { 1625 {
1624 // Arrange for message loop to live longer than controller. 1626 // Arrange for message loop to live longer than controller.
1625 MessageLoopForIO message_loop; 1627 MessageLoopForIO message_loop;
1626 { 1628 {
1627 base::MessagePumpLibevent::FileDescriptorWatcher controller; 1629 base::MessagePumpLibevent::FileDescriptorWatcher controller;
1628 1630
1629 QuitDelegate delegate; 1631 QuitDelegate delegate;
1630 message_loop.WatchFileDescriptor(fd, 1632 message_loop.WatchFileDescriptor(fd,
1631 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate); 1633 true, MessageLoopForIO::WATCH_WRITE, &controller, &delegate);
1632 controller.StopWatchingFileDescriptor(); 1634 controller.StopWatchingFileDescriptor();
1633 } 1635 }
1634 } 1636 }
1635 if (HANDLE_EINTR(close(pipefds[0])) < 0) 1637 if (HANDLE_EINTR(close(pipefds[0])) < 0)
1636 PLOG(ERROR) << "close"; 1638 PLOG(ERROR) << "close";
1637 if (HANDLE_EINTR(close(pipefds[1])) < 0) 1639 if (HANDLE_EINTR(close(pipefds[1])) < 0)
1638 PLOG(ERROR) << "close"; 1640 PLOG(ERROR) << "close";
1639 } 1641 }
1640 1642
1641 } // namespace 1643 } // namespace
1642 1644
1643 #endif // defined(OS_POSIX) 1645 #endif // defined(OS_POSIX)
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/views/tab_contents/tab_contents_drag_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698