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

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

Issue 2791243002: Rewrite base::Bind into base::BindOnce on trivial cases in base (Closed)
Patch Set: rebase Created 3 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
« no previous file with comments | « base/message_loop/message_loop_test.cc ('k') | base/message_loop/message_pump_glib_unittest.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 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 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 EXPECT_EQ(order.Get(15), TaskItem(RECURSIVE, 1, false)); 463 EXPECT_EQ(order.Get(15), TaskItem(RECURSIVE, 1, false));
464 EXPECT_EQ(order.Get(16), TaskItem(RECURSIVE, 3, true)); 464 EXPECT_EQ(order.Get(16), TaskItem(RECURSIVE, 3, true));
465 EXPECT_EQ(order.Get(17), TaskItem(RECURSIVE, 3, false)); 465 EXPECT_EQ(order.Get(17), TaskItem(RECURSIVE, 3, false));
466 } 466 }
467 467
468 #endif // defined(OS_WIN) 468 #endif // defined(OS_WIN)
469 469
470 void PostNTasksThenQuit(int posts_remaining) { 470 void PostNTasksThenQuit(int posts_remaining) {
471 if (posts_remaining > 1) { 471 if (posts_remaining > 1) {
472 ThreadTaskRunnerHandle::Get()->PostTask( 472 ThreadTaskRunnerHandle::Get()->PostTask(
473 FROM_HERE, Bind(&PostNTasksThenQuit, posts_remaining - 1)); 473 FROM_HERE, BindOnce(&PostNTasksThenQuit, posts_remaining - 1));
474 } else { 474 } else {
475 MessageLoop::current()->QuitWhenIdle(); 475 MessageLoop::current()->QuitWhenIdle();
476 } 476 }
477 } 477 }
478 478
479 #if defined(OS_WIN) 479 #if defined(OS_WIN)
480 480
481 class TestIOHandler : public MessageLoopForIO::IOHandler { 481 class TestIOHandler : public MessageLoopForIO::IOHandler {
482 public: 482 public:
483 TestIOHandler(const wchar_t* name, HANDLE signal, bool wait); 483 TestIOHandler(const wchar_t* name, HANDLE signal, bool wait);
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 675
676 DISALLOW_COPY_AND_ASSIGN(DummyTaskObserver); 676 DISALLOW_COPY_AND_ASSIGN(DummyTaskObserver);
677 }; 677 };
678 678
679 TEST(MessageLoopTest, TaskObserver) { 679 TEST(MessageLoopTest, TaskObserver) {
680 const int kNumPosts = 6; 680 const int kNumPosts = 6;
681 DummyTaskObserver observer(kNumPosts); 681 DummyTaskObserver observer(kNumPosts);
682 682
683 MessageLoop loop; 683 MessageLoop loop;
684 loop.AddTaskObserver(&observer); 684 loop.AddTaskObserver(&observer);
685 loop.task_runner()->PostTask(FROM_HERE, Bind(&PostNTasksThenQuit, kNumPosts)); 685 loop.task_runner()->PostTask(FROM_HERE,
686 BindOnce(&PostNTasksThenQuit, kNumPosts));
686 RunLoop().Run(); 687 RunLoop().Run();
687 loop.RemoveTaskObserver(&observer); 688 loop.RemoveTaskObserver(&observer);
688 689
689 EXPECT_EQ(kNumPosts, observer.num_tasks_started()); 690 EXPECT_EQ(kNumPosts, observer.num_tasks_started());
690 EXPECT_EQ(kNumPosts, observer.num_tasks_processed()); 691 EXPECT_EQ(kNumPosts, observer.num_tasks_processed());
691 } 692 }
692 693
693 #if defined(OS_WIN) 694 #if defined(OS_WIN)
694 TEST(MessageLoopTest, IOHandler) { 695 TEST(MessageLoopTest, IOHandler) {
695 RunTest_IOHandler(); 696 RunTest_IOHandler();
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 // all the pending tasks have been destroyed). 853 // all the pending tasks have been destroyed).
853 MessageLoop* loop = new MessageLoop; 854 MessageLoop* loop = new MessageLoop;
854 const TimeDelta kDelay = TimeDelta::FromMilliseconds(100); 855 const TimeDelta kDelay = TimeDelta::FromMilliseconds(100);
855 856
856 bool task_destroyed = false; 857 bool task_destroyed = false;
857 bool destruction_observer_called = false; 858 bool destruction_observer_called = false;
858 859
859 MLDestructionObserver observer(&task_destroyed, &destruction_observer_called); 860 MLDestructionObserver observer(&task_destroyed, &destruction_observer_called);
860 loop->AddDestructionObserver(&observer); 861 loop->AddDestructionObserver(&observer);
861 loop->task_runner()->PostDelayedTask( 862 loop->task_runner()->PostDelayedTask(
862 FROM_HERE, Bind(&DestructionObserverProbe::Run, 863 FROM_HERE,
863 new DestructionObserverProbe( 864 BindOnce(&DestructionObserverProbe::Run,
864 &task_destroyed, &destruction_observer_called)), 865 new DestructionObserverProbe(&task_destroyed,
866 &destruction_observer_called)),
865 kDelay); 867 kDelay);
866 delete loop; 868 delete loop;
867 EXPECT_TRUE(observer.task_destroyed_before_message_loop()); 869 EXPECT_TRUE(observer.task_destroyed_before_message_loop());
868 // The task should have been destroyed when we deleted the loop. 870 // The task should have been destroyed when we deleted the loop.
869 EXPECT_TRUE(task_destroyed); 871 EXPECT_TRUE(task_destroyed);
870 EXPECT_TRUE(destruction_observer_called); 872 EXPECT_TRUE(destruction_observer_called);
871 } 873 }
872 874
873 875
874 // Verify that MessageLoop sets ThreadMainTaskRunner::current() and it 876 // Verify that MessageLoop sets ThreadMainTaskRunner::current() and it
875 // posts tasks on that message loop. 877 // posts tasks on that message loop.
876 TEST(MessageLoopTest, ThreadMainTaskRunner) { 878 TEST(MessageLoopTest, ThreadMainTaskRunner) {
877 MessageLoop loop; 879 MessageLoop loop;
878 880
879 scoped_refptr<Foo> foo(new Foo()); 881 scoped_refptr<Foo> foo(new Foo());
880 std::string a("a"); 882 std::string a("a");
881 ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, Bind( 883 ThreadTaskRunnerHandle::Get()->PostTask(
882 &Foo::Test1ConstRef, foo, a)); 884 FROM_HERE, BindOnce(&Foo::Test1ConstRef, foo, a));
883 885
884 // Post quit task; 886 // Post quit task;
885 ThreadTaskRunnerHandle::Get()->PostTask( 887 ThreadTaskRunnerHandle::Get()->PostTask(
886 FROM_HERE, 888 FROM_HERE,
887 Bind(&MessageLoop::QuitWhenIdle, Unretained(MessageLoop::current()))); 889 BindOnce(&MessageLoop::QuitWhenIdle, Unretained(MessageLoop::current())));
888 890
889 // Now kick things off 891 // Now kick things off
890 RunLoop().Run(); 892 RunLoop().Run();
891 893
892 EXPECT_EQ(foo->test_count(), 1); 894 EXPECT_EQ(foo->test_count(), 1);
893 EXPECT_EQ(foo->result(), "a"); 895 EXPECT_EQ(foo->result(), "a");
894 } 896 }
895 897
896 TEST(MessageLoopTest, IsType) { 898 TEST(MessageLoopTest, IsType) {
897 MessageLoop loop(MessageLoop::TYPE_UI); 899 MessageLoop loop(MessageLoop::TYPE_UI);
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1000 EXPECT_EQ(new_runner, ThreadTaskRunnerHandle::Get()); 1002 EXPECT_EQ(new_runner, ThreadTaskRunnerHandle::Get());
1001 } 1003 }
1002 1004
1003 TEST(MessageLoopTest, OriginalRunnerWorks) { 1005 TEST(MessageLoopTest, OriginalRunnerWorks) {
1004 MessageLoop loop; 1006 MessageLoop loop;
1005 scoped_refptr<SingleThreadTaskRunner> new_runner(new TestSimpleTaskRunner()); 1007 scoped_refptr<SingleThreadTaskRunner> new_runner(new TestSimpleTaskRunner());
1006 scoped_refptr<SingleThreadTaskRunner> original_runner(loop.task_runner()); 1008 scoped_refptr<SingleThreadTaskRunner> original_runner(loop.task_runner());
1007 loop.SetTaskRunner(new_runner); 1009 loop.SetTaskRunner(new_runner);
1008 1010
1009 scoped_refptr<Foo> foo(new Foo()); 1011 scoped_refptr<Foo> foo(new Foo());
1010 original_runner->PostTask(FROM_HERE, 1012 original_runner->PostTask(FROM_HERE, BindOnce(&Foo::Test1ConstRef, foo, "a"));
1011 Bind(&Foo::Test1ConstRef, foo, "a"));
1012 RunLoop().RunUntilIdle(); 1013 RunLoop().RunUntilIdle();
1013 EXPECT_EQ(1, foo->test_count()); 1014 EXPECT_EQ(1, foo->test_count());
1014 } 1015 }
1015 1016
1016 TEST(MessageLoopTest, DeleteUnboundLoop) { 1017 TEST(MessageLoopTest, DeleteUnboundLoop) {
1017 // It should be possible to delete an unbound message loop on a thread which 1018 // It should be possible to delete an unbound message loop on a thread which
1018 // already has another active loop. This happens when thread creation fails. 1019 // already has another active loop. This happens when thread creation fails.
1019 MessageLoop loop; 1020 MessageLoop loop;
1020 std::unique_ptr<MessageLoop> unbound_loop(MessageLoop::CreateUnbound( 1021 std::unique_ptr<MessageLoop> unbound_loop(MessageLoop::CreateUnbound(
1021 MessageLoop::TYPE_DEFAULT, MessageLoop::MessagePumpFactoryCallback())); 1022 MessageLoop::TYPE_DEFAULT, MessageLoop::MessagePumpFactoryCallback()));
(...skipping 12 matching lines...) Expand all
1034 1035
1035 { 1036 {
1036 std::string kThreadName("bar"); 1037 std::string kThreadName("bar");
1037 base::Thread thread(kThreadName); 1038 base::Thread thread(kThreadName);
1038 ASSERT_TRUE(thread.StartAndWaitForTesting()); 1039 ASSERT_TRUE(thread.StartAndWaitForTesting());
1039 EXPECT_EQ(kThreadName, thread.message_loop()->GetThreadName()); 1040 EXPECT_EQ(kThreadName, thread.message_loop()->GetThreadName());
1040 } 1041 }
1041 } 1042 }
1042 1043
1043 } // namespace base 1044 } // namespace base
OLDNEW
« no previous file with comments | « base/message_loop/message_loop_test.cc ('k') | base/message_loop/message_pump_glib_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698