Home | History | Annotate | Download | only in integration
      1 // Copyright 2013 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 "base/basictypes.h"
      6 #include "base/command_line.h"
      7 #include "chrome/browser/sync/profile_sync_service.h"
      8 #include "chrome/browser/sync/test/integration/apps_helper.h"
      9 #include "chrome/browser/sync/test/integration/sync_app_list_helper.h"
     10 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h"
     11 #include "chrome/browser/sync/test/integration/sync_test.h"
     12 #include "chrome/browser/ui/app_list/app_list_syncable_service.h"
     13 #include "chrome/browser/ui/app_list/app_list_syncable_service_factory.h"
     14 #include "ui/app_list/app_list_switches.h"
     15 
     16 using sync_integration_test_util::AwaitCommitActivityCompletion;
     17 
     18 namespace {
     19 
     20 const size_t kNumDefaultApps = 2;
     21 
     22 bool AllProfilesHaveSameAppListAsVerifier() {
     23   return SyncAppListHelper::GetInstance()->
     24       AllProfilesHaveSameAppListAsVerifier();
     25 }
     26 
     27 }  // namespace
     28 
     29 class SingleClientAppListSyncTest : public SyncTest {
     30  public:
     31   SingleClientAppListSyncTest() : SyncTest(SINGLE_CLIENT) {}
     32 
     33   virtual ~SingleClientAppListSyncTest() {}
     34 
     35   // SyncTest
     36   virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
     37     SyncTest::SetUpCommandLine(command_line);
     38     command_line->AppendSwitch(app_list::switches::kEnableSyncAppList);
     39   }
     40 
     41   virtual bool SetupClients() OVERRIDE {
     42     if (!SyncTest::SetupClients())
     43       return false;
     44 
     45     // Init SyncAppListHelper to ensure that the extension system is initialized
     46     // for each Profile.
     47     SyncAppListHelper::GetInstance();
     48     return true;
     49   }
     50 
     51  private:
     52   DISALLOW_COPY_AND_ASSIGN(SingleClientAppListSyncTest);
     53 };
     54 
     55 IN_PROC_BROWSER_TEST_F(SingleClientAppListSyncTest, AppListEmpty) {
     56   ASSERT_TRUE(SetupSync());
     57 
     58   ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
     59 }
     60 
     61 IN_PROC_BROWSER_TEST_F(SingleClientAppListSyncTest, AppListSomeApps) {
     62   ASSERT_TRUE(SetupSync());
     63 
     64   const size_t kNumApps = 5;
     65   for (int i = 0; i < static_cast<int>(kNumApps); ++i) {
     66     apps_helper::InstallApp(GetProfile(0), i);
     67     apps_helper::InstallApp(verifier(), i);
     68   }
     69 
     70   app_list::AppListSyncableService* service =
     71       app_list::AppListSyncableServiceFactory::GetForProfile(verifier());
     72   ASSERT_EQ(kNumApps + kNumDefaultApps, service->GetNumSyncItemsForTest());
     73 
     74   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
     75   ASSERT_TRUE(AllProfilesHaveSameAppListAsVerifier());
     76 
     77 }
     78