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

Unified Diff: chrome/browser/sync/backup_rollback_controller_unittest.cc

Issue 266233002: Add BackupRollbackController for starting backup/rollback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/sync/backup_rollback_controller.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/backup_rollback_controller_unittest.cc
diff --git a/chrome/browser/sync/backup_rollback_controller_unittest.cc b/chrome/browser/sync/backup_rollback_controller_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6ff5792507d80135612624d7d1fd56f736179751
--- /dev/null
+++ b/chrome/browser/sync/backup_rollback_controller_unittest.cc
@@ -0,0 +1,170 @@
+// Copyright (c) 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/sync/backup_rollback_controller.h"
+
+#include "base/command_line.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/message_loop/message_loop.h"
+#include "chrome/browser/sync/managed_user_signin_manager_wrapper.h"
+#include "chrome/common/chrome_switches.h"
+#include "components/sync_driver/sync_prefs.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using ::testing::Return;
+
+namespace {
+
+#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
+
+class MockSigninManagerWrapper : public ManagedUserSigninManagerWrapper {
+ public:
+ MockSigninManagerWrapper() : ManagedUserSigninManagerWrapper(NULL, NULL) {}
+
+ MOCK_CONST_METHOD0(GetEffectiveUsername, std::string());
+};
+
+class FakeSyncPrefs : public sync_driver::SyncPrefs {
+ public:
+ FakeSyncPrefs() : rollback_tries_left_(0) {}
+
+ virtual int GetRemainingRollbackTries() const OVERRIDE {
+ return rollback_tries_left_;
+ }
+
+ virtual void SetRemainingRollbackTries(int v) OVERRIDE {
+ rollback_tries_left_ = v;
+ }
+
+ private:
+ int rollback_tries_left_;
+};
+
+class BackupRollbackControllerTest : public testing::Test {
+ public:
+ void ControllerCallback(bool start_backup) {
+ if (start_backup)
+ backup_started_ = true;
+ else
+ rollback_started_ = true;
+
+ if (need_loop_quit_)
+ base::MessageLoop::current()->Quit();
+ }
+
+ protected:
+ virtual void SetUp() OVERRIDE {
+ CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kSyncEnableBackupRollback);
+
+ backup_started_ = false;
+ rollback_started_ = false;
+ need_loop_quit_ = false;
+
+ EXPECT_CALL(signin_wrapper_, GetEffectiveUsername())
+ .WillRepeatedly(Return(""));
+
+ controller_.reset(new browser_sync::BackupRollbackController(
+ &fake_prefs_, &signin_wrapper_,
+ base::Bind(&BackupRollbackControllerTest::ControllerCallback,
+ base::Unretained(this), true),
+ base::Bind(&BackupRollbackControllerTest::ControllerCallback,
+ base::Unretained(this), false)));
+ }
+
+ MockSigninManagerWrapper signin_wrapper_;
+ FakeSyncPrefs fake_prefs_;
+ scoped_ptr<browser_sync::BackupRollbackController> controller_;
+ bool backup_started_;
+ bool rollback_started_;
+ bool need_loop_quit_;
+ base::MessageLoop loop_;
+};
+
+TEST_F(BackupRollbackControllerTest, DelayStart) {
+ controller_->Start(base::TimeDelta::FromMilliseconds(100));
+ EXPECT_FALSE(backup_started_);
+ need_loop_quit_ = true;
+ base::MessageLoop::current()->Run();
+ EXPECT_TRUE(backup_started_);
+}
+
+TEST_F(BackupRollbackControllerTest, NoDelayStart) {
+ controller_->Start(base::TimeDelta());
+ EXPECT_TRUE(backup_started_);
+}
+
+TEST_F(BackupRollbackControllerTest, NoStartWithUserSignedIn) {
+ EXPECT_CALL(signin_wrapper_, GetEffectiveUsername())
+ .Times(1)
+ .WillOnce(Return("test"));
+ controller_->Start(base::TimeDelta());
+ EXPECT_FALSE(backup_started_);
+ EXPECT_FALSE(rollback_started_);
+}
+
+TEST_F(BackupRollbackControllerTest, StartOnUserSignedOut) {
+ EXPECT_CALL(signin_wrapper_, GetEffectiveUsername())
+ .Times(2)
+ .WillOnce(Return("test"))
+ .WillOnce(Return(""));
+ controller_->Start(base::TimeDelta());
+ EXPECT_FALSE(backup_started_);
+ EXPECT_FALSE(rollback_started_);
+
+ // 2nd time no signed-in user. Starts backup.
+ controller_->Start(base::TimeDelta());
+ EXPECT_TRUE(backup_started_);
+}
+
+TEST_F(BackupRollbackControllerTest, StartRollback) {
+ EXPECT_CALL(signin_wrapper_, GetEffectiveUsername())
+ .Times(2)
+ .WillOnce(Return("test"))
+ .WillOnce(Return(""));
+ controller_->Start(base::TimeDelta());
+ EXPECT_FALSE(backup_started_);
+ EXPECT_FALSE(rollback_started_);
+
+ controller_->OnRollbackReceived();
+ controller_->Start(base::TimeDelta());
+ EXPECT_TRUE(rollback_started_);
+}
+
+TEST_F(BackupRollbackControllerTest, RollbackOnBrowserStart) {
+ fake_prefs_.SetRemainingRollbackTries(1);
+ controller_->Start(base::TimeDelta());
+ EXPECT_TRUE(rollback_started_);
+}
+
+TEST_F(BackupRollbackControllerTest, BackupAfterRollbackDone) {
+ fake_prefs_.SetRemainingRollbackTries(3);
+ controller_->Start(base::TimeDelta());
+ EXPECT_TRUE(rollback_started_);
+ EXPECT_FALSE(backup_started_);
+
+ controller_->OnRollbackDone();
+ controller_->Start(base::TimeDelta());
+ EXPECT_TRUE(backup_started_);
+}
+
+TEST_F(BackupRollbackControllerTest, GiveUpRollback) {
+ fake_prefs_.SetRemainingRollbackTries(3);
+ for (int i = 0; i < 3; ++i) {
+ controller_->Start(base::TimeDelta());
+ EXPECT_TRUE(rollback_started_);
+ EXPECT_FALSE(backup_started_);
+ rollback_started_ = false;
+ }
+
+ controller_->Start(base::TimeDelta());
+ EXPECT_FALSE(rollback_started_);
+ EXPECT_TRUE(backup_started_);
+}
+
+#endif
+
+} // anonymous namespace
+
« no previous file with comments | « chrome/browser/sync/backup_rollback_controller.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698