Home | History | Annotate | Download | only in internal_api
      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 
     13 namespace syncer {
     14 
     15 namespace {
     16 
     17 void OnConfigDone(bool success) {
     18   EXPECT_TRUE(success);
     19 }
     20 
     21 class SyncTestRollbackManager : public SyncRollbackManagerBase {
     22  public:
     23   virtual void Init(
     24       const base::FilePath& database_location,
     25       const WeakHandle<JsEventHandler>& event_handler,
     26       const std::string& sync_server_and_path,
     27       int sync_server_port,
     28       bool use_ssl,
     29       scoped_ptr<HttpPostProviderFactory> post_factory,
     30       const std::vector<scoped_refptr<ModelSafeWorker> >& workers,
     31       ExtensionsActivity* extensions_activity,
     32       ChangeDelegate* change_delegate,
     33       const SyncCredentials& credentials,
     34       const std::string& invalidator_client_id,
     35       const std::string& restored_key_for_bootstrapping,
     36       const std::string& restored_keystore_key_for_bootstrapping,
     37       InternalComponentsFactory* internal_components_factory,
     38       Encryptor* encryptor,
     39       scoped_ptr<UnrecoverableErrorHandler> unrecoverable_error_handler,
     40       ReportUnrecoverableErrorFunction report_unrecoverable_error_function,
     41       CancelationSignal* cancelation_signal) OVERRIDE {
     42     SyncRollbackManagerBase::InitInternal(database_location,
     43                                           internal_components_factory,
     44                                           unrecoverable_error_handler.Pass(),
     45                                           report_unrecoverable_error_function);
     46   }
     47 };
     48 
     49 class SyncRollbackManagerBaseTest : public testing::Test {
     50  protected:
     51   virtual void SetUp() OVERRIDE {
     52     TestInternalComponentsFactory factory(InternalComponentsFactory::Switches(),
     53                                           STORAGE_IN_MEMORY);
     54     manager_.Init(base::FilePath(base::FilePath::kCurrentDirectory),
     55                   MakeWeakHandle(base::WeakPtr<JsEventHandler>()),
     56                   "", 0, true, scoped_ptr<HttpPostProviderFactory>().Pass(),
     57                   std::vector<scoped_refptr<ModelSafeWorker> >(),
     58                   NULL, NULL, SyncCredentials(), "", "", "", &factory,
     59                   NULL, scoped_ptr<UnrecoverableErrorHandler>().Pass(),
     60                   NULL, NULL);
     61   }
     62 
     63   SyncTestRollbackManager manager_;
     64   base::MessageLoop loop_;    // Needed for WeakHandle
     65 };
     66 
     67 TEST_F(SyncRollbackManagerBaseTest, InitTypeOnConfiguration) {
     68   EXPECT_TRUE(manager_.InitialSyncEndedTypes().Empty());
     69 
     70   manager_.ConfigureSyncer(
     71       CONFIGURE_REASON_NEW_CLIENT,
     72       ModelTypeSet(PREFERENCES, BOOKMARKS),
     73       ModelTypeSet(), ModelTypeSet(), ModelTypeSet(), ModelSafeRoutingInfo(),
     74       base::Bind(&OnConfigDone, true),
     75       base::Bind(&OnConfigDone, false));
     76 
     77   ReadTransaction trans(FROM_HERE, manager_.GetUserShare());
     78   ReadNode pref_root(&trans);
     79   EXPECT_EQ(BaseNode::INIT_OK,
     80             pref_root.InitTypeRoot(PREFERENCES));
     81 
     82   ReadNode bookmark_root(&trans);
     83   EXPECT_EQ(BaseNode::INIT_OK,
     84             bookmark_root.InitTypeRoot(BOOKMARKS));
     85   ReadNode bookmark_bar(&trans);
     86   EXPECT_EQ(BaseNode::INIT_OK,
     87             bookmark_bar.InitByTagLookupForBookmarks("bookmark_bar"));
     88   ReadNode bookmark_mobile(&trans);
     89   EXPECT_EQ(BaseNode::INIT_FAILED_ENTRY_NOT_GOOD,
     90             bookmark_mobile.InitByTagLookupForBookmarks("synced_bookmarks"));
     91   ReadNode bookmark_other(&trans);
     92   EXPECT_EQ(BaseNode::INIT_OK,
     93             bookmark_other.InitByTagLookupForBookmarks("other_bookmarks"));
     94 }
     95 
     96 }  // anonymous namespace
     97 
     98 }  // namespace syncer
     99