Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / sync / test / integration / two_client_extensions_sync_test.cc
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   ~TwoClientExtensionsSyncTest() override {}
26   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