summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-27 16:20:15 +0000
committerzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-27 16:20:15 +0000
commit83a8d3a4b0066627911ded97dba095abe3110534 (patch)
treeafa82912b3c715234fe3023cb6000c373a1c53b1 /chrome
parent60616fcf97a781ff6700a1d8e9acead5350069f2 (diff)
downloadchromium_src-83a8d3a4b0066627911ded97dba095abe3110534.zip
chromium_src-83a8d3a4b0066627911ded97dba095abe3110534.tar.gz
chromium_src-83a8d3a4b0066627911ded97dba095abe3110534.tar.bz2
[SYNC] Tests to catch datatype manager behavior when datatype controller is busy when stop() is called.
BUG=61804 TEST=self Review URL: http://codereview.chromium.org/6357018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72803 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/sync/glue/data_type_manager_impl_unittest.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/chrome/browser/sync/glue/data_type_manager_impl_unittest.cc b/chrome/browser/sync/glue/data_type_manager_impl_unittest.cc
index 81adfa0..a51748c 100644
--- a/chrome/browser/sync/glue/data_type_manager_impl_unittest.cc
+++ b/chrome/browser/sync/glue/data_type_manager_impl_unittest.cc
@@ -97,6 +97,20 @@ class DataTypeManagerImplTest : public testing::Test {
WillRepeatedly(Return(DataTypeController::NOT_RUNNING));
}
+ void SetBusyStartStopExpectations(DataTypeControllerMock* mock_dtc,
+ DataTypeController::State busy_state) {
+ InSequence seq;
+ EXPECT_CALL(*mock_dtc, state()).
+ WillRepeatedly(Return(DataTypeController::NOT_RUNNING));
+ EXPECT_CALL(*mock_dtc, Start(_)).
+ WillOnce(InvokeCallback((DataTypeController::OK)));
+ EXPECT_CALL(*mock_dtc, state()).
+ WillRepeatedly(Return(busy_state));
+ EXPECT_CALL(*mock_dtc, Stop()).Times(1);
+ EXPECT_CALL(*mock_dtc, state()).
+ WillRepeatedly(Return(DataTypeController::NOT_RUNNING));
+ }
+
void SetNotUsedExpectations(DataTypeControllerMock* mock_dtc) {
EXPECT_CALL(*mock_dtc, Start(_)).Times(0);
EXPECT_CALL(*mock_dtc, Stop()).Times(0);
@@ -160,6 +174,37 @@ TEST_F(DataTypeManagerImplTest, ConfigureOne) {
EXPECT_EQ(DataTypeManager::STOPPED, dtm.state());
}
+TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileStarting) {
+ DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC();
+ SetBusyStartStopExpectations(bookmark_dtc,
+ DataTypeController::MODEL_STARTING);
+ controllers_[syncable::BOOKMARKS] = bookmark_dtc;
+ SetBackendExpectations(1);
+ DataTypeManagerImpl dtm(&backend_, controllers_);
+ types_.insert(syncable::BOOKMARKS);
+ SetConfigureStartExpectation();
+ SetConfigureDoneExpectation(DataTypeManager::OK);
+ dtm.Configure(types_);
+ EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state());
+ dtm.Stop();
+ EXPECT_EQ(DataTypeManager::STOPPED, dtm.state());
+}
+
+TEST_F(DataTypeManagerImplTest, ConfigureOneStopWhileAssociating) {
+ DataTypeControllerMock* bookmark_dtc = MakeBookmarkDTC();
+ SetBusyStartStopExpectations(bookmark_dtc, DataTypeController::ASSOCIATING);
+ controllers_[syncable::BOOKMARKS] = bookmark_dtc;
+ SetBackendExpectations(1);
+ DataTypeManagerImpl dtm(&backend_, controllers_);
+ types_.insert(syncable::BOOKMARKS);
+ SetConfigureStartExpectation();
+ SetConfigureDoneExpectation(DataTypeManager::OK);
+ dtm.Configure(types_);
+ EXPECT_EQ(DataTypeManager::CONFIGURED, dtm.state());
+ dtm.Stop();
+ EXPECT_EQ(DataTypeManager::STOPPED, dtm.state());
+}
+
TEST_F(DataTypeManagerImplTest, OneWaitingForCrypto) {
DataTypeControllerMock* password_dtc = MakePasswordDTC();
EXPECT_CALL(*password_dtc, state()).