Chromium Code Reviews| Index: ash/system/chromeos/session/logout_confirmation_controller_unittest.cc |
| diff --git a/ash/system/chromeos/session/logout_confirmation_controller_unittest.cc b/ash/system/chromeos/session/logout_confirmation_controller_unittest.cc |
| index fb9d3791ad18af6c10bd660e3e6937111be144b9..4d1f4190178f24d34e0adb8fabee762164e98a39 100644 |
| --- a/ash/system/chromeos/session/logout_confirmation_controller_unittest.cc |
| +++ b/ash/system/chromeos/session/logout_confirmation_controller_unittest.cc |
| @@ -14,139 +14,12 @@ |
| #include "base/location.h" |
|
bartfab (slow)
2015/01/08 14:14:34
Nit: No longer used.
engedy
2015/01/08 16:41:25
Done.
|
| #include "base/memory/ref_counted.h" |
| #include "base/single_thread_task_runner.h" |
|
bartfab (slow)
2015/01/08 14:14:34
Nit: No longer used.
engedy
2015/01/08 16:41:25
Done.
|
| +#include "base/test/test_mock_time_task_runner.h" |
| #include "base/thread_task_runner_handle.h" |
| #include "base/time/tick_clock.h" |
|
bartfab (slow)
2015/01/08 14:14:34
Nit: No longer used.
engedy
2015/01/08 16:41:25
Done.
|
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace ash { |
| -namespace { |
| - |
| -// A SingleThreadTaskRunner that mocks the current time and allows it to be |
| -// fast-forwarded. TODO(bartfab): Copies of this class exist in several tests. |
| -// Consolidate them (crbug.com/329911). |
| -class MockTimeSingleThreadTaskRunner : public base::SingleThreadTaskRunner { |
| - public: |
| - MockTimeSingleThreadTaskRunner(); |
| - |
| - // base::SingleThreadTaskRunner: |
| - virtual bool RunsTasksOnCurrentThread() const override; |
| - virtual bool PostDelayedTask(const tracked_objects::Location& from_here, |
| - const base::Closure& task, |
| - base::TimeDelta delay) override; |
| - virtual bool PostNonNestableDelayedTask( |
| - const tracked_objects::Location& from_here, |
| - const base::Closure& task, |
| - base::TimeDelta delay) override; |
| - |
| - const base::TimeTicks& GetCurrentTime() const; |
| - |
| - void FastForwardBy(base::TimeDelta delta); |
| - void FastForwardUntilNoTasksRemain(); |
| - |
| - private: |
| - // Strict weak temporal ordering of tasks. |
| - class TemporalOrder { |
| - public: |
| - bool operator()( |
| - const std::pair<base::TimeTicks, base::Closure>& first_task, |
| - const std::pair<base::TimeTicks, base::Closure>& second_task) const; |
| - }; |
| - |
| - virtual ~MockTimeSingleThreadTaskRunner(); |
| - |
| - base::TimeTicks now_; |
| - std::priority_queue<std::pair<base::TimeTicks, base::Closure>, |
| - std::vector<std::pair<base::TimeTicks, base::Closure> >, |
| - TemporalOrder> tasks_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(MockTimeSingleThreadTaskRunner); |
| -}; |
| - |
| -// A base::TickClock that uses a MockTimeSingleThreadTaskRunner as the source of |
| -// the current time. |
| -class MockClock : public base::TickClock { |
| - public: |
| - explicit MockClock(scoped_refptr<MockTimeSingleThreadTaskRunner> task_runner); |
| - virtual ~MockClock(); |
| - |
| - // base::TickClock: |
| - virtual base::TimeTicks NowTicks() override; |
| - |
| - private: |
| - scoped_refptr<MockTimeSingleThreadTaskRunner> task_runner_; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(MockClock); |
| -}; |
| - |
| - |
| -MockTimeSingleThreadTaskRunner::MockTimeSingleThreadTaskRunner() { |
| -} |
| - |
| -bool MockTimeSingleThreadTaskRunner::RunsTasksOnCurrentThread() const { |
| - return true; |
| -} |
| - |
| -bool MockTimeSingleThreadTaskRunner::PostDelayedTask( |
| - const tracked_objects::Location& from_here, |
| - const base::Closure& task, |
| - base::TimeDelta delay) { |
| - tasks_.push(std::make_pair(now_ + delay, task)); |
| - return true; |
| -} |
| - |
| -bool MockTimeSingleThreadTaskRunner::PostNonNestableDelayedTask( |
| - const tracked_objects::Location& from_here, |
| - const base::Closure& task, |
| - base::TimeDelta delay) { |
| - NOTREACHED(); |
| - return false; |
| -} |
| - |
| -const base::TimeTicks& MockTimeSingleThreadTaskRunner::GetCurrentTime() const { |
| - return now_; |
| -} |
| - |
| -void MockTimeSingleThreadTaskRunner::FastForwardBy(base::TimeDelta delta) { |
| - const base::TimeTicks latest = now_ + delta; |
| - while (!tasks_.empty() && tasks_.top().first <= latest) { |
| - now_ = tasks_.top().first; |
| - base::Closure task = tasks_.top().second; |
| - tasks_.pop(); |
| - task.Run(); |
| - } |
| - now_ = latest; |
| -} |
| - |
| -void MockTimeSingleThreadTaskRunner::FastForwardUntilNoTasksRemain() { |
| - while (!tasks_.empty()) { |
| - now_ = tasks_.top().first; |
| - base::Closure task = tasks_.top().second; |
| - tasks_.pop(); |
| - task.Run(); |
| - } |
| -} |
| - |
| -bool MockTimeSingleThreadTaskRunner::TemporalOrder::operator()( |
| - const std::pair<base::TimeTicks, base::Closure>& first_task, |
| - const std::pair<base::TimeTicks, base::Closure>& second_task) const { |
| - return first_task.first > second_task.first; |
| -} |
| - |
| -MockTimeSingleThreadTaskRunner::~MockTimeSingleThreadTaskRunner() { |
| -} |
| - |
| -MockClock::MockClock(scoped_refptr<MockTimeSingleThreadTaskRunner> task_runner) |
| - : task_runner_(task_runner) { |
| -} |
| - |
| -MockClock::~MockClock() { |
| -} |
| - |
| -base::TimeTicks MockClock::NowTicks() { |
| - return task_runner_->GetCurrentTime(); |
| -} |
| - |
| -} // namespace |
| class LogoutConfirmationControllerTest : public testing::Test { |
| protected: |
| @@ -157,7 +30,7 @@ class LogoutConfirmationControllerTest : public testing::Test { |
| bool log_out_called_; |
| - scoped_refptr<MockTimeSingleThreadTaskRunner> runner_; |
| + scoped_refptr<base::TestMockTimeTaskRunner> runner_; |
| base::ThreadTaskRunnerHandle runner_handle_; |
| LogoutConfirmationController controller_; |
| @@ -168,12 +41,11 @@ class LogoutConfirmationControllerTest : public testing::Test { |
| LogoutConfirmationControllerTest::LogoutConfirmationControllerTest() |
| : log_out_called_(false), |
| - runner_(new MockTimeSingleThreadTaskRunner), |
| + runner_(new base::TestMockTimeTaskRunner), |
| runner_handle_(runner_), |
| controller_(base::Bind(&LogoutConfirmationControllerTest::LogOut, |
| base::Unretained(this))) { |
| - controller_.SetClockForTesting( |
| - scoped_ptr<base::TickClock>(new MockClock(runner_))); |
| + controller_.SetClockForTesting(runner_->GetMockTickClock()); |
| } |
| LogoutConfirmationControllerTest::~LogoutConfirmationControllerTest() { |
| @@ -186,7 +58,7 @@ void LogoutConfirmationControllerTest::LogOut() { |
| // Verifies that the user is logged out immediately if logout confirmation with |
| // a zero-length countdown is requested. |
| TEST_F(LogoutConfirmationControllerTest, ZeroDuration) { |
| - controller_.ConfirmLogout(runner_->GetCurrentTime()); |
| + controller_.ConfirmLogout(runner_->GetCurrentMockTime()); |
| EXPECT_FALSE(log_out_called_); |
| runner_->FastForwardBy(base::TimeDelta()); |
| EXPECT_TRUE(log_out_called_); |
| @@ -195,7 +67,7 @@ TEST_F(LogoutConfirmationControllerTest, ZeroDuration) { |
| // Verifies that the user is logged out when the countdown expires. |
| TEST_F(LogoutConfirmationControllerTest, DurationExpired) { |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| EXPECT_FALSE(log_out_called_); |
| runner_->FastForwardBy(base::TimeDelta::FromSeconds(9)); |
| EXPECT_FALSE(log_out_called_); |
| @@ -208,12 +80,12 @@ TEST_F(LogoutConfirmationControllerTest, DurationExpired) { |
| // out when the new countdown expires. |
| TEST_F(LogoutConfirmationControllerTest, DurationShortened) { |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(30)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(30)); |
| EXPECT_FALSE(log_out_called_); |
| runner_->FastForwardBy(base::TimeDelta::FromSeconds(9)); |
| EXPECT_FALSE(log_out_called_); |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| runner_->FastForwardBy(base::TimeDelta::FromSeconds(9)); |
| EXPECT_FALSE(log_out_called_); |
| runner_->FastForwardBy(base::TimeDelta::FromSeconds(2)); |
| @@ -225,12 +97,12 @@ TEST_F(LogoutConfirmationControllerTest, DurationShortened) { |
| // out when the original countdown expires. |
| TEST_F(LogoutConfirmationControllerTest, DurationExtended) { |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| EXPECT_FALSE(log_out_called_); |
| runner_->FastForwardBy(base::TimeDelta::FromSeconds(9)); |
| EXPECT_FALSE(log_out_called_); |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| runner_->FastForwardBy(base::TimeDelta::FromSeconds(2)); |
| EXPECT_TRUE(log_out_called_); |
| } |
| @@ -239,7 +111,7 @@ TEST_F(LogoutConfirmationControllerTest, DurationExtended) { |
| // user is not logged out, even when the original countdown expires. |
| TEST_F(LogoutConfirmationControllerTest, Lock) { |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| EXPECT_FALSE(log_out_called_); |
| controller_.OnLockStateChanged(true); |
| runner_->FastForwardUntilNoTasksRemain(); |
| @@ -250,7 +122,7 @@ TEST_F(LogoutConfirmationControllerTest, Lock) { |
| // out immediately. |
| TEST_F(LogoutConfirmationControllerTest, UserAccepted) { |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| EXPECT_FALSE(log_out_called_); |
| controller_.OnLogoutConfirmed(); |
| EXPECT_TRUE(log_out_called_); |
| @@ -260,7 +132,7 @@ TEST_F(LogoutConfirmationControllerTest, UserAccepted) { |
| // out, even when the original countdown expires. |
| TEST_F(LogoutConfirmationControllerTest, UserDenied) { |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| EXPECT_FALSE(log_out_called_); |
| controller_.OnDialogClosed(); |
| runner_->FastForwardUntilNoTasksRemain(); |
| @@ -272,14 +144,14 @@ TEST_F(LogoutConfirmationControllerTest, UserDenied) { |
| // expires. |
| TEST_F(LogoutConfirmationControllerTest, DurationExpiredAfterDeniedRequest) { |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| EXPECT_FALSE(log_out_called_); |
| controller_.OnDialogClosed(); |
| runner_->FastForwardUntilNoTasksRemain(); |
| EXPECT_FALSE(log_out_called_); |
| controller_.ConfirmLogout( |
| - runner_->GetCurrentTime() + base::TimeDelta::FromSeconds(10)); |
| + runner_->GetCurrentMockTime() + base::TimeDelta::FromSeconds(10)); |
| EXPECT_FALSE(log_out_called_); |
| runner_->FastForwardBy(base::TimeDelta::FromSeconds(9)); |
| EXPECT_FALSE(log_out_called_); |