Home | History | Annotate | Download | only in integration
      1 // Copyright (c) 2012 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 "chrome/browser/sync/test/integration/extensions_helper.h"
      7 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
      8 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h"
      9 #include "chrome/browser/sync/test/integration/sync_test.h"
     10 
     11 using extensions_helper::AwaitAllProfilesHaveSameExtensionsAsVerifier;
     12 using extensions_helper::AllProfilesHaveSameExtensionsAsVerifier;
     13 using extensions_helper::DisableExtension;
     14 using extensions_helper::EnableExtension;
     15 using extensions_helper::HasSameExtensionsAsVerifier;
     16 using extensions_helper::IncognitoDisableExtension;
     17 using extensions_helper::IncognitoEnableExtension;
     18 using extensions_helper::InstallExtension;
     19 using extensions_helper::UninstallExtension;
     20 
     21 class TwoClientExtensionsSyncTest : public SyncTest {
     22  public:
     23   TwoClientExtensionsSyncTest() : SyncTest(TWO_CLIENT) {}
     24 
     25   virtual ~TwoClientExtensionsSyncTest() {}
     26   virtual bool TestUsesSelfNotifications() OVERRIDE { return false; }
     27 
     28  private:
     29   DISALLOW_COPY_AND_ASSIGN(TwoClientExtensionsSyncTest);
     30 };
     31 
     32 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, StartWithNoExtensions) {
     33   ASSERT_TRUE(SetupSync());
     34   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
     35 }
     36 
     37 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, StartWithSameExtensions) {
     38   ASSERT_TRUE(SetupClients());
     39 
     40   const int kNumExtensions = 5;
     41   for (int i = 0; i < kNumExtensions; ++i) {
     42     InstallExtension(GetProfile(0), i);
     43     InstallExtension(GetProfile(1), i);
     44     InstallExtension(verifier(), i);
     45   }
     46 
     47   ASSERT_TRUE(SetupSync());
     48   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
     49 }
     50 
     51 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
     52                        StartWithDifferentExtensions) {
     53   ASSERT_TRUE(SetupClients());
     54 
     55   int i = 0;
     56 
     57   const int kNumCommonExtensions = 5;
     58   for (int j = 0; j < kNumCommonExtensions; ++i, ++j) {
     59     InstallExtension(GetProfile(0), i);
     60     InstallExtension(GetProfile(1), i);
     61     InstallExtension(verifier(), i);
     62   }
     63 
     64   const int kNumProfile0Extensions = 10;
     65   for (int j = 0; j < kNumProfile0Extensions; ++i, ++j) {
     66     InstallExtension(GetProfile(0), i);
     67     InstallExtension(verifier(), i);
     68   }
     69 
     70   const int kNumProfile1Extensions = 10;
     71   for (int j = 0; j < kNumProfile1Extensions; ++i, ++j) {
     72     InstallExtension(GetProfile(1), i);
     73     InstallExtension(verifier(), i);
     74   }
     75 
     76   ASSERT_TRUE(SetupSync());
     77   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
     78 }
     79 
     80 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
     81                        InstallDifferentExtensions) {
     82   ASSERT_TRUE(SetupClients());
     83 
     84   int i = 0;
     85 
     86   const int kNumCommonExtensions = 5;
     87   for (int j = 0; j < kNumCommonExtensions; ++i, ++j) {
     88     InstallExtension(GetProfile(0), i);
     89     InstallExtension(GetProfile(1), i);
     90     InstallExtension(verifier(), i);
     91   }
     92 
     93   ASSERT_TRUE(SetupSync());
     94   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
     95 
     96   const int kNumProfile0Extensions = 10;
     97   for (int j = 0; j < kNumProfile0Extensions; ++i, ++j) {
     98     InstallExtension(GetProfile(0), i);
     99     InstallExtension(verifier(), i);
    100   }
    101 
    102   const int kNumProfile1Extensions = 10;
    103   for (int j = 0; j < kNumProfile1Extensions; ++i, ++j) {
    104     InstallExtension(GetProfile(1), i);
    105     InstallExtension(verifier(), i);
    106   }
    107 
    108   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    109 }
    110 
    111 // TCM ID - 3637311.
    112 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, Add) {
    113   ASSERT_TRUE(SetupSync());
    114   ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
    115 
    116   InstallExtension(GetProfile(0), 0);
    117   InstallExtension(verifier(), 0);
    118 
    119   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    120 }
    121 
    122 // TCM ID - 3724281.
    123 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest, Uninstall) {
    124   ASSERT_TRUE(SetupSync());
    125   ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
    126 
    127   InstallExtension(GetProfile(0), 0);
    128   InstallExtension(verifier(), 0);
    129   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    130 
    131   UninstallExtension(GetProfile(0), 0);
    132   UninstallExtension(verifier(), 0);
    133   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    134 }
    135 
    136 // TCM ID - 3605300.
    137 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
    138                        UpdateEnableDisableExtension) {
    139   ASSERT_TRUE(SetupSync());
    140   ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
    141 
    142   InstallExtension(GetProfile(0), 0);
    143   InstallExtension(verifier(), 0);
    144   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    145 
    146   DisableExtension(GetProfile(0), 0);
    147   DisableExtension(verifier(), 0);
    148   ASSERT_TRUE(HasSameExtensionsAsVerifier(0));
    149   ASSERT_FALSE(HasSameExtensionsAsVerifier(1));
    150 
    151   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    152 
    153   EnableExtension(GetProfile(1), 0);
    154   EnableExtension(verifier(), 0);
    155   ASSERT_TRUE(HasSameExtensionsAsVerifier(1));
    156   ASSERT_FALSE(HasSameExtensionsAsVerifier(0));
    157 
    158   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    159 }
    160 
    161 // TCM ID - 3728322.
    162 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
    163                        UpdateIncognitoEnableDisable) {
    164   ASSERT_TRUE(SetupSync());
    165   ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
    166 
    167   InstallExtension(GetProfile(0), 0);
    168   InstallExtension(verifier(), 0);
    169   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    170 
    171   IncognitoEnableExtension(GetProfile(0), 0);
    172   IncognitoEnableExtension(verifier(), 0);
    173   ASSERT_TRUE(HasSameExtensionsAsVerifier(0));
    174   ASSERT_FALSE(HasSameExtensionsAsVerifier(1));
    175 
    176   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    177 
    178   IncognitoDisableExtension(GetProfile(1), 0);
    179   IncognitoDisableExtension(verifier(), 0);
    180   ASSERT_TRUE(HasSameExtensionsAsVerifier(1));
    181   ASSERT_FALSE(HasSameExtensionsAsVerifier(0));
    182 
    183   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    184 }
    185 
    186 // Regression test for bug 104399: ensure that an extension installed prior to
    187 // setting up sync, when uninstalled, is also uninstalled from sync.
    188 IN_PROC_BROWSER_TEST_F(TwoClientExtensionsSyncTest,
    189                        UninstallPreinstalledExtensions) {
    190   ASSERT_TRUE(SetupClients());
    191   ASSERT_TRUE(AllProfilesHaveSameExtensionsAsVerifier());
    192 
    193   InstallExtension(GetProfile(0), 0);
    194   InstallExtension(verifier(), 0);
    195 
    196   ASSERT_TRUE(SetupSync());
    197 
    198   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    199 
    200   UninstallExtension(GetProfile(0), 0);
    201   UninstallExtension(verifier(), 0);
    202 
    203   ASSERT_TRUE(AwaitAllProfilesHaveSameExtensionsAsVerifier());
    204 }
    205 
    206 // TODO(akalin): Add tests exercising:
    207 //   - Offline installation/uninstallation behavior
    208