| Index: chrome/browser/sync/glue/bookmark_data_type_controller_unittest.cc
|
| diff --git a/chrome/browser/sync/glue/bookmark_data_type_controller_unittest.cc b/chrome/browser/sync/glue/bookmark_data_type_controller_unittest.cc
|
| index a688552fe2f22485bd2d8e3a37c05f46630b4c8e..50bc06220e6f9ba932bc53a3e0aa25e89944c204 100644
|
| --- a/chrome/browser/sync/glue/bookmark_data_type_controller_unittest.cc
|
| +++ b/chrome/browser/sync/glue/bookmark_data_type_controller_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/message_loop.h"
|
| #include "chrome/browser/bookmarks/bookmark_model.h"
|
| #include "chrome/browser/bookmarks/bookmark_model_factory.h"
|
| +#include "chrome/browser/bookmarks/bookmark_model_observer.h"
|
| #include "chrome/browser/history/history_service.h"
|
| #include "chrome/browser/history/history_service_factory.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -43,10 +44,30 @@ using testing::SetArgumentPointee;
|
|
|
| namespace {
|
|
|
| -class BookmarkModelMock : public BookmarkModel {
|
| +class FakeBookmarkModel : public BookmarkModel {
|
| public:
|
| - BookmarkModelMock() : BookmarkModel(NULL) {}
|
| - MOCK_CONST_METHOD0(IsLoaded, bool(void));
|
| + FakeBookmarkModel() : BookmarkModel(NULL),
|
| + is_loaded_(false) {
|
| + }
|
| +
|
| + virtual ~FakeBookmarkModel() {}
|
| +
|
| + virtual bool IsLoaded() const OVERRIDE { return is_loaded_; }
|
| + virtual void AddObserver(BookmarkModelObserver* observer) OVERRIDE {
|
| + observers_.AddObserver(observer);
|
| + }
|
| + virtual void RemoveObserver(BookmarkModelObserver* observer) OVERRIDE {
|
| + observers_.RemoveObserver(observer);
|
| + }
|
| +
|
| + void TriggerLoad() {
|
| + is_loaded_ = true;
|
| + FOR_EACH_OBSERVER(BookmarkModelObserver, observers_, Loaded(this, false));
|
| + }
|
| +
|
| + private:
|
| + bool is_loaded_;
|
| + ObserverList<BookmarkModelObserver> observers_;
|
| };
|
|
|
|
|
| @@ -59,9 +80,8 @@ class HistoryMock : public HistoryService {
|
| virtual ~HistoryMock() {}
|
| };
|
|
|
| -ProfileKeyedService* BuildBookmarkModel(
|
| - Profile* profile) {
|
| - return new BookmarkModelMock;
|
| +ProfileKeyedService* BuildBookmarkModel(Profile* profile) {
|
| + return new FakeBookmarkModel;
|
| }
|
|
|
| ProfileKeyedService* BuildHistoryService(Profile* profile) {
|
| @@ -81,7 +101,7 @@ class SyncBookmarkDataTypeControllerTest : public testing::Test {
|
| history_service_ = static_cast<HistoryMock*>(
|
| HistoryServiceFactory::GetInstance()->SetTestingFactoryAndUse(
|
| &profile_, BuildHistoryService));
|
| - bookmark_model_ = static_cast<BookmarkModelMock*>(
|
| + bookmark_model_ = static_cast<FakeBookmarkModel*>(
|
| BookmarkModelFactory::GetInstance()->SetTestingFactoryAndUse(
|
| &profile_, BuildBookmarkModel));
|
| profile_sync_factory_.reset(
|
| @@ -94,8 +114,12 @@ class SyncBookmarkDataTypeControllerTest : public testing::Test {
|
| }
|
|
|
| protected:
|
| - void SetStartExpectations() {
|
| - EXPECT_CALL(*bookmark_model_, IsLoaded()).WillRepeatedly(Return(true));
|
| + void SetStartExpectations(bool load_bookmark_model) {
|
| + if (load_bookmark_model) {
|
| + bookmark_model_->TriggerLoad();
|
| + EXPECT_TRUE(bookmark_model_->IsLoaded());
|
| + }
|
| +
|
| EXPECT_CALL(*history_service_,
|
| BackendLoaded()).WillRepeatedly(Return(true));
|
| EXPECT_CALL(model_load_callback_, Run(_, _));
|
| @@ -132,7 +156,7 @@ class SyncBookmarkDataTypeControllerTest : public testing::Test {
|
| scoped_refptr<BookmarkDataTypeController> bookmark_dtc_;
|
| scoped_ptr<ProfileSyncComponentsFactoryMock> profile_sync_factory_;
|
| ProfileMock profile_;
|
| - BookmarkModelMock* bookmark_model_;
|
| + FakeBookmarkModel* bookmark_model_;
|
| HistoryMock* history_service_;
|
| ProfileSyncServiceMock service_;
|
| ModelAssociatorMock* model_associator_;
|
| @@ -146,7 +170,7 @@ class SyncBookmarkDataTypeControllerTest : public testing::Test {
|
| };
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, StartDependentsReady) {
|
| - SetStartExpectations();
|
| + SetStartExpectations(true);
|
| SetAssociateExpectations();
|
|
|
| EXPECT_EQ(DataTypeController::NOT_RUNNING, bookmark_dtc_->state());
|
| @@ -157,8 +181,8 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartDependentsReady) {
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, StartBookmarkModelNotReady) {
|
| - SetStartExpectations();
|
| - EXPECT_CALL(*bookmark_model_, IsLoaded()).WillRepeatedly(Return(false));
|
| + SetStartExpectations(false);
|
| + EXPECT_FALSE(bookmark_model_->IsLoaded());
|
| SetAssociateExpectations();
|
|
|
| EXPECT_CALL(start_callback_, Run(DataTypeController::OK, _, _));
|
| @@ -167,13 +191,8 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartBookmarkModelNotReady) {
|
| base::Unretained(&model_load_callback_)));
|
| EXPECT_EQ(DataTypeController::MODEL_STARTING, bookmark_dtc_->state());
|
| testing::Mock::VerifyAndClearExpectations(bookmark_model_);
|
| - EXPECT_CALL(*bookmark_model_, IsLoaded()).WillRepeatedly(Return(true));
|
|
|
| - // Send the notification that the bookmark model has started.
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_BOOKMARK_MODEL_LOADED,
|
| - content::Source<Profile>(&profile_),
|
| - content::NotificationService::NoDetails());
|
| + bookmark_model_->TriggerLoad();
|
| EXPECT_EQ(DataTypeController::MODEL_LOADED, bookmark_dtc_->state());
|
|
|
| bookmark_dtc_->StartAssociating(
|
| @@ -184,7 +203,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartBookmarkModelNotReady) {
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, StartHistoryServiceNotReady) {
|
| - SetStartExpectations();
|
| + SetStartExpectations(true);
|
| EXPECT_CALL(*history_service_,
|
| BackendLoaded()).WillRepeatedly(Return(false));
|
|
|
| @@ -205,7 +224,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartHistoryServiceNotReady) {
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, StartFirstRun) {
|
| - SetStartExpectations();
|
| + SetStartExpectations(true);
|
| SetAssociateExpectations();
|
| EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)).
|
| WillRepeatedly(DoAll(SetArgumentPointee<0>(false), Return(true)));
|
| @@ -214,7 +233,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartFirstRun) {
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, StartBusy) {
|
| - EXPECT_CALL(*bookmark_model_, IsLoaded()).WillRepeatedly(Return(false));
|
| + EXPECT_FALSE(bookmark_model_->IsLoaded());
|
| EXPECT_CALL(*history_service_, BackendLoaded()).WillRepeatedly(Return(false));
|
|
|
| EXPECT_CALL(model_load_callback_, Run(_, _));
|
| @@ -227,7 +246,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartBusy) {
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, StartOk) {
|
| - SetStartExpectations();
|
| + SetStartExpectations(true);
|
| SetAssociateExpectations();
|
| EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)).
|
| WillRepeatedly(DoAll(SetArgumentPointee<0>(true), Return(true)));
|
| @@ -237,7 +256,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartOk) {
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, StartAssociationFailed) {
|
| - SetStartExpectations();
|
| + SetStartExpectations(true);
|
| // Set up association to fail.
|
| EXPECT_CALL(*profile_sync_factory_, CreateBookmarkSyncComponents(_, _));
|
| EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()).
|
| @@ -257,7 +276,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartAssociationFailed) {
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest,
|
| StartAssociationTriggersUnrecoverableError) {
|
| - SetStartExpectations();
|
| + SetStartExpectations(true);
|
| // Set up association to fail with an unrecoverable error.
|
| EXPECT_CALL(*profile_sync_factory_, CreateBookmarkSyncComponents(_, _));
|
| EXPECT_CALL(*model_associator_, CryptoReadyIfNecessary()).
|
| @@ -271,7 +290,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest,
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, StartAborted) {
|
| - EXPECT_CALL(*bookmark_model_, IsLoaded()).WillRepeatedly(Return(false));
|
| + EXPECT_FALSE(bookmark_model_->IsLoaded());
|
| EXPECT_CALL(*history_service_, BackendLoaded()).WillRepeatedly(Return(false));
|
|
|
| EXPECT_CALL(model_load_callback_, Run(_, _));
|
| @@ -284,7 +303,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest, StartAborted) {
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, Stop) {
|
| - SetStartExpectations();
|
| + SetStartExpectations(true);
|
| SetAssociateExpectations();
|
| SetStopExpectations();
|
|
|
| @@ -298,7 +317,7 @@ TEST_F(SyncBookmarkDataTypeControllerTest, Stop) {
|
| }
|
|
|
| TEST_F(SyncBookmarkDataTypeControllerTest, OnSingleDatatypeUnrecoverableError) {
|
| - SetStartExpectations();
|
| + SetStartExpectations(true);
|
| SetAssociateExpectations();
|
| EXPECT_CALL(*model_associator_, SyncModelHasUserCreatedNodes(_)).
|
| WillRepeatedly(DoAll(SetArgumentPointee<0>(true), Return(true)));
|
|
|