1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "sync/internal_api/sync_rollback_manager_base.h" 6 7 #include "base/bind.h" 8 #include "sync/internal_api/public/read_node.h" 9 #include "sync/internal_api/public/read_transaction.h" 10 #include "sync/internal_api/public/test/test_internal_components_factory.h" 11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "url/gurl.h" 13 14 namespace syncer { 15 16 namespace { 17 18 void OnConfigDone(bool success) { 19 EXPECT_TRUE(success); 20 } 21 22 class SyncTestRollbackManager : public SyncRollbackManagerBase { 23 public: 24 virtual void Init(InitArgs* args) OVERRIDE { 25 SyncRollbackManagerBase::InitInternal( 26 args->database_location, 27 args->internal_components_factory.get(), 28 InternalComponentsFactory::STORAGE_IN_MEMORY, 29 args->unrecoverable_error_handler.Pass(), 30 args->report_unrecoverable_error_function); 31 } 32 }; 33 34 class SyncRollbackManagerBaseTest : public testing::Test { 35 protected: 36 virtual void SetUp() OVERRIDE { 37 SyncManager::InitArgs args; 38 args.database_location = base::FilePath(base::FilePath::kCurrentDirectory); 39 args.service_url = GURL("https://example.com/"); 40 args.internal_components_factory.reset(new TestInternalComponentsFactory( 41 InternalComponentsFactory::Switches(), 42 InternalComponentsFactory::STORAGE_IN_MEMORY, 43 &storage_used_)); 44 manager_.Init(&args); 45 EXPECT_EQ(InternalComponentsFactory::STORAGE_IN_MEMORY, storage_used_); 46 } 47 48 SyncTestRollbackManager manager_; 49 base::MessageLoop loop_; // Needed for WeakHandle 50 InternalComponentsFactory::StorageOption storage_used_; 51 }; 52 53 TEST_F(SyncRollbackManagerBaseTest, InitTypeOnConfiguration) { 54 EXPECT_TRUE(manager_.InitialSyncEndedTypes().Empty()); 55 56 manager_.ConfigureSyncer( 57 CONFIGURE_REASON_NEW_CLIENT, 58 ModelTypeSet(PREFERENCES, BOOKMARKS), 59 ModelTypeSet(), ModelTypeSet(), ModelTypeSet(), ModelSafeRoutingInfo(), 60 base::Bind(&OnConfigDone, true), 61 base::Bind(&OnConfigDone, false)); 62 63 ReadTransaction trans(FROM_HERE, manager_.GetUserShare()); 64 ReadNode pref_root(&trans); 65 EXPECT_EQ(BaseNode::INIT_OK, 66 pref_root.InitTypeRoot(PREFERENCES)); 67 68 ReadNode bookmark_root(&trans); 69 EXPECT_EQ(BaseNode::INIT_OK, 70 bookmark_root.InitTypeRoot(BOOKMARKS)); 71 ReadNode bookmark_bar(&trans); 72 EXPECT_EQ(BaseNode::INIT_OK, 73 bookmark_bar.InitByTagLookupForBookmarks("bookmark_bar")); 74 ReadNode bookmark_mobile(&trans); 75 EXPECT_EQ(BaseNode::INIT_FAILED_ENTRY_NOT_GOOD, 76 bookmark_mobile.InitByTagLookupForBookmarks("synced_bookmarks")); 77 ReadNode bookmark_other(&trans); 78 EXPECT_EQ(BaseNode::INIT_OK, 79 bookmark_other.InitByTagLookupForBookmarks("other_bookmarks")); 80 } 81 82 } // anonymous namespace 83 84 } // namespace syncer 85