OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/memory/scoped_vector.h" | 5 #include "base/memory/scoped_vector.h" |
6 #include "chrome/browser/sessions/session_service.h" | 6 #include "chrome/browser/sessions/session_service.h" |
7 #include "chrome/browser/sync/profile_sync_service_harness.h" | 7 #include "chrome/browser/sync/profile_sync_service_harness.h" |
8 #include "chrome/browser/sync/test/integration/passwords_helper.h" | 8 #include "chrome/browser/sync/test/integration/passwords_helper.h" |
9 #include "chrome/browser/sync/test/integration/sessions_helper.h" | 9 #include "chrome/browser/sync/test/integration/sessions_helper.h" |
10 #include "chrome/browser/sync/test/integration/sync_test.h" | 10 #include "chrome/browser/sync/test/integration/sync_test.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 | 23 |
24 class TwoClientSessionsSyncTest : public SyncTest { | 24 class TwoClientSessionsSyncTest : public SyncTest { |
25 public: | 25 public: |
26 TwoClientSessionsSyncTest() : SyncTest(TWO_CLIENT) {} | 26 TwoClientSessionsSyncTest() : SyncTest(TWO_CLIENT) {} |
27 virtual ~TwoClientSessionsSyncTest() {} | 27 virtual ~TwoClientSessionsSyncTest() {} |
28 | 28 |
29 private: | 29 private: |
30 DISALLOW_COPY_AND_ASSIGN(TwoClientSessionsSyncTest); | 30 DISALLOW_COPY_AND_ASSIGN(TwoClientSessionsSyncTest); |
31 }; | 31 }; |
32 | 32 |
33 static const char* kValidPassphrase = "passphrase!"; | |
34 static const char* kURL1 = "http://127.0.0.1/bubba1"; | 33 static const char* kURL1 = "http://127.0.0.1/bubba1"; |
35 static const char* kURL2 = "http://127.0.0.1/bubba2"; | 34 static const char* kURL2 = "http://127.0.0.1/bubba2"; |
36 | 35 |
37 // TODO(zea): Test each individual session command we care about separately. | 36 // TODO(zea): Test each individual session command we care about separately. |
38 // (as well as multi-window). We're currently only checking basic single-window/ | 37 // (as well as multi-window). We're currently only checking basic single-window/ |
39 // single-tab functionality. | 38 // single-tab functionality. |
40 | 39 |
41 // All tests involving changes to the sessions appear to be flaky, especially | |
42 // on windows. | |
43 // crbug.com/85294 | |
44 | |
45 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, | 40 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, |
46 DISABLED_SingleClientChanged) { | 41 SingleClientChanged) { |
47 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 42 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
48 | 43 |
49 ASSERT_TRUE(CheckInitialState(0)); | 44 ASSERT_TRUE(CheckInitialState(0)); |
50 ASSERT_TRUE(CheckInitialState(1)); | 45 ASSERT_TRUE(CheckInitialState(1)); |
51 | 46 |
52 ScopedWindowMap client0_windows; | 47 ScopedWindowMap client0_windows; |
53 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), | 48 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), |
54 client0_windows.GetMutable())); | 49 client0_windows.GetMutable())); |
55 | 50 |
56 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | 51 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); |
(...skipping 19 matching lines...) Expand all Loading... |
76 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); | 71 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); |
77 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); | 72 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); |
78 | 73 |
79 // Should enable encryption for all other types as well. Just check a subset. | 74 // Should enable encryption for all other types as well. Just check a subset. |
80 ASSERT_TRUE(IsEncrypted(1, syncable::PREFERENCES)); | 75 ASSERT_TRUE(IsEncrypted(1, syncable::PREFERENCES)); |
81 ASSERT_TRUE(IsEncrypted(1, syncable::BOOKMARKS)); | 76 ASSERT_TRUE(IsEncrypted(1, syncable::BOOKMARKS)); |
82 ASSERT_TRUE(IsEncrypted(1, syncable::APPS)); | 77 ASSERT_TRUE(IsEncrypted(1, syncable::APPS)); |
83 } | 78 } |
84 | 79 |
85 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, | 80 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, |
86 DISABLED_SingleClientEnabledEncryptionAndChanged) { | 81 SingleClientEnabledEncryptionAndChanged) { |
87 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 82 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
88 | 83 |
89 ASSERT_TRUE(CheckInitialState(0)); | 84 ASSERT_TRUE(CheckInitialState(0)); |
90 ASSERT_TRUE(CheckInitialState(1)); | 85 ASSERT_TRUE(CheckInitialState(1)); |
91 | 86 |
92 ScopedWindowMap client0_windows; | 87 ScopedWindowMap client0_windows; |
93 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), | 88 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), |
94 client0_windows.GetMutable())); | 89 client0_windows.GetMutable())); |
95 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); | 90 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); |
96 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | 91 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); |
(...skipping 15 matching lines...) Expand all Loading... |
112 ASSERT_TRUE(CheckInitialState(0)); | 107 ASSERT_TRUE(CheckInitialState(0)); |
113 ASSERT_TRUE(CheckInitialState(1)); | 108 ASSERT_TRUE(CheckInitialState(1)); |
114 | 109 |
115 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); | 110 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); |
116 ASSERT_TRUE(EnableEncryption(1, syncable::SESSIONS)); | 111 ASSERT_TRUE(EnableEncryption(1, syncable::SESSIONS)); |
117 ASSERT_TRUE(AwaitQuiescence()); | 112 ASSERT_TRUE(AwaitQuiescence()); |
118 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); | 113 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); |
119 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); | 114 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); |
120 } | 115 } |
121 | 116 |
122 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, DISABLED_BothChanged) { | 117 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, BothChanged) { |
123 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 118 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
124 | 119 |
125 ASSERT_TRUE(CheckInitialState(0)); | 120 ASSERT_TRUE(CheckInitialState(0)); |
126 ASSERT_TRUE(CheckInitialState(1)); | 121 ASSERT_TRUE(CheckInitialState(1)); |
127 | 122 |
128 // Open tabs on both clients and retain window information. | 123 // Open tabs on both clients and retain window information. |
129 ScopedWindowMap client0_windows; | 124 ScopedWindowMap client0_windows; |
130 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL2), | 125 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL2), |
131 client0_windows.GetMutable())); | 126 client0_windows.GetMutable())); |
132 ScopedWindowMap client1_windows; | 127 ScopedWindowMap client1_windows; |
(...skipping 10 matching lines...) Expand all Loading... |
143 ASSERT_TRUE(GetSessionData(1, &sessions1)); | 138 ASSERT_TRUE(GetSessionData(1, &sessions1)); |
144 | 139 |
145 // Verify client 1's foreign session matches client 0's current window and | 140 // Verify client 1's foreign session matches client 0's current window and |
146 // vice versa. | 141 // vice versa. |
147 ASSERT_EQ(1U, sessions0.size()); | 142 ASSERT_EQ(1U, sessions0.size()); |
148 ASSERT_EQ(1U, sessions1.size()); | 143 ASSERT_EQ(1U, sessions1.size()); |
149 ASSERT_TRUE(WindowsMatch(sessions1[0]->windows, *client0_windows.Get())); | 144 ASSERT_TRUE(WindowsMatch(sessions1[0]->windows, *client0_windows.Get())); |
150 ASSERT_TRUE(WindowsMatch(sessions0[0]->windows, *client1_windows.Get())); | 145 ASSERT_TRUE(WindowsMatch(sessions0[0]->windows, *client1_windows.Get())); |
151 } | 146 } |
152 | 147 |
153 // Flaky (number of conflicting nodes is off). http://crbug.com/85294. | |
154 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, | |
155 DISABLED_FirstChangesAndSetsPassphrase) { | |
156 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
157 | |
158 ASSERT_TRUE(CheckInitialState(0)); | |
159 ASSERT_TRUE(CheckInitialState(1)); | |
160 | |
161 ScopedWindowMap client0_windows; | |
162 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), | |
163 client0_windows.GetMutable())); | |
164 | |
165 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); | |
166 SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT); | |
167 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
168 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
169 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
170 ASSERT_EQ(0, GetClient(1)->GetLastSessionSnapshot()-> | |
171 num_simple_conflicts); | |
172 // We have two meta nodes (one for each client), the one tab node, plus the | |
173 // basic preference/themes/search engines items. | |
174 ASSERT_EQ(NumberOfDefaultSyncItems() + 3, | |
175 GetClient(1)->GetLastSessionSnapshot()-> | |
176 num_encryption_conflicts); // The encrypted nodes. | |
177 | |
178 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
179 ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase)); | |
180 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
181 ASSERT_TRUE(GetClient(1)->WaitForTypeEncryption(syncable::SESSIONS)); | |
182 | |
183 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); | |
184 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); | |
185 // Get foreign session data from client 0 and 1. | |
186 SyncedSessionVector sessions1; | |
187 ASSERT_TRUE(GetSessionData(1, &sessions1)); | |
188 | |
189 // Verify client 1's foreign session matches client 0's current window and | |
190 // vice versa. | |
191 ASSERT_EQ(1U, sessions1.size()); | |
192 ASSERT_TRUE(WindowsMatch(sessions1[0]->windows, *client0_windows.Get())); | |
193 } | |
194 | |
195 // Flaky (number of conflicting nodes is off). http://crbug.com/85294. | |
196 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, | |
197 DISABLED_FirstChangesWhileSecondWaitingForPassphrase) { | |
198 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
199 | |
200 ASSERT_TRUE(CheckInitialState(0)); | |
201 ASSERT_TRUE(CheckInitialState(1)); | |
202 | |
203 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); | |
204 SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT); | |
205 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
206 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
207 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
208 ASSERT_EQ(0, GetClient(1)->GetLastSessionSnapshot()-> | |
209 num_simple_conflicts); | |
210 // We have nine encryption conflicts due to the two meta nodes (one for each | |
211 // client), plus the basic preference/themes/search engines nodes. | |
212 ASSERT_EQ(NumberOfDefaultSyncItems() + 2, | |
213 GetClient(1)->GetLastSessionSnapshot()-> | |
214 num_encryption_conflicts); // The encrypted nodes. | |
215 | |
216 ScopedWindowMap client0_windows; | |
217 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), | |
218 client0_windows.GetMutable())); | |
219 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
220 ASSERT_EQ(0, GetClient(1)->GetLastSessionSnapshot()-> | |
221 num_simple_conflicts); | |
222 ASSERT_EQ(NumberOfDefaultSyncItems() + 3, | |
223 GetClient(1)->GetLastSessionSnapshot()-> | |
224 num_encryption_conflicts); // The encrypted nodes. | |
225 | |
226 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
227 ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase)); | |
228 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
229 ASSERT_TRUE(GetClient(1)->WaitForTypeEncryption(syncable::SESSIONS)); | |
230 | |
231 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); | |
232 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); | |
233 // Get foreign session data from client 0 and 1. | |
234 SyncedSessionVector sessions1; | |
235 ASSERT_TRUE(GetSessionData(1, &sessions1)); | |
236 | |
237 // Verify client 1's foreign session matches client 0's current window and | |
238 // vice versa. | |
239 ASSERT_EQ(1U, sessions1.size()); | |
240 ASSERT_TRUE(WindowsMatch(sessions1[0]->windows, *client0_windows.Get())); | |
241 } | |
242 | |
243 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, | |
244 DISABLED_SecondChangesAfterEncrAndPassphraseChange) { | |
245 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
246 | |
247 ASSERT_TRUE(CheckInitialState(0)); | |
248 ASSERT_TRUE(CheckInitialState(1)); | |
249 | |
250 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); | |
251 SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT); | |
252 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
253 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
254 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
255 ASSERT_EQ(0, GetClient(1)->GetLastSessionSnapshot()-> | |
256 num_simple_conflicts); | |
257 // We have two encryption conflicts due to the two meta nodes (one for each | |
258 // client), plus the basic preference/themes/search engines nodes. | |
259 ASSERT_EQ(NumberOfDefaultSyncItems() + 2, | |
260 GetClient(1)->GetLastSessionSnapshot()-> | |
261 num_encryption_conflicts); // The encrypted nodes. | |
262 | |
263 // These changes are either made with the old passphrase or not encrypted at | |
264 // all depending on when client 0's changes are propagated. | |
265 ScopedWindowMap client1_windows; | |
266 ASSERT_TRUE(OpenTabAndGetLocalWindows(1, GURL(kURL1), | |
267 client1_windows.GetMutable())); | |
268 | |
269 // At this point we enter the passphrase, triggering a resync, in which the | |
270 // local changes of client 1 get sent to client 0. | |
271 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
272 ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase)); | |
273 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
274 ASSERT_TRUE(GetClient(1)->WaitForTypeEncryption(syncable::SESSIONS)); | |
275 ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); | |
276 ASSERT_EQ(0, GetClient(1)->GetLastSessionSnapshot()-> | |
277 num_encryption_conflicts); | |
278 | |
279 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); | |
280 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); | |
281 SyncedSessionVector sessions0; | |
282 SyncedSessionVector sessions1; | |
283 ASSERT_TRUE(GetSessionData(0, &sessions0)); | |
284 ASSERT_FALSE(GetSessionData(1, &sessions1)); | |
285 } | |
286 | |
287 // Flaky (number of conflicting nodes is off). http://crbug.com/85294. | |
288 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, | |
289 DISABLED_SecondChangesBeforeEncrAndPassphraseChange) { | |
290 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
291 | |
292 ASSERT_TRUE(CheckInitialState(0)); | |
293 ASSERT_TRUE(CheckInitialState(1)); | |
294 | |
295 // These changes are either made on client 1 without encryption. | |
296 ScopedWindowMap client1_windows; | |
297 ASSERT_TRUE(OpenTabAndGetLocalWindows(1, GURL(kURL1), | |
298 client1_windows.GetMutable())); | |
299 ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); | |
300 | |
301 // Turn encryption on client 0. Client 1's foreign will be encrypted with the | |
302 // new passphrase and synced back. It will be unable to decrypt it yet. | |
303 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); | |
304 SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT); | |
305 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
306 ASSERT_TRUE(AwaitQuiescence()); | |
307 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
308 ASSERT_EQ(0, GetClient(1)->GetLastSessionSnapshot()-> | |
309 num_simple_conflicts); | |
310 // We have three encryption conflicts due to the two meta nodes (one for | |
311 // each client), the one tab node, plus the basic preference/themes/search | |
312 // engines nodes. | |
313 ASSERT_GE(NumberOfDefaultSyncItems() + 3, | |
314 GetClient(1)->GetLastSessionSnapshot()-> | |
315 num_encryption_conflicts); // The encrypted nodes. | |
316 | |
317 // At this point we enter the passphrase, triggering a resync. | |
318 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
319 ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase)); | |
320 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
321 ASSERT_TRUE(GetClient(1)->WaitForTypeEncryption(syncable::SESSIONS)); | |
322 | |
323 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); | |
324 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); | |
325 // Client 0's foreign data should match client 1's local data. Client 1's | |
326 // foreign data is empty because client 0 did not open any tabs. | |
327 SyncedSessionVector sessions0; | |
328 SyncedSessionVector sessions1; | |
329 ASSERT_TRUE(GetSessionData(0, &sessions0)); | |
330 ASSERT_FALSE(GetSessionData(1, &sessions1)); | |
331 ASSERT_EQ(1U, sessions0.size()); | |
332 ASSERT_TRUE(WindowsMatch(sessions0[0]->windows, *client1_windows.Get())); | |
333 } | |
334 | |
335 // Flaky (number of conflicting nodes is off). http://crbug.com/85294. | |
336 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, | |
337 DISABLED_BothChangeWithEncryptionAndPassphrase) { | |
338 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | |
339 | |
340 ASSERT_TRUE(CheckInitialState(0)); | |
341 ASSERT_TRUE(CheckInitialState(1)); | |
342 | |
343 SetEncryptionPassphrase(0, kValidPassphrase, ProfileSyncService::EXPLICIT); | |
344 ASSERT_TRUE(GetClient(0)->AwaitPassphraseAccepted()); | |
345 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
346 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
347 | |
348 // These changes will sync over to client 1, who will be unable to decrypt | |
349 // them due to the missing passphrase. | |
350 ScopedWindowMap client0_windows; | |
351 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), | |
352 client0_windows.GetMutable())); | |
353 ASSERT_TRUE(EnableEncryption(0, syncable::SESSIONS)); | |
354 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | |
355 ASSERT_EQ(0, GetClient(1)->GetLastSessionSnapshot()-> | |
356 num_simple_conflicts); | |
357 // We have three encryption conflicts due to the two meta nodes (one for | |
358 // each client), the one tab node, plus the basic preference/themes/search | |
359 // engines nodes. | |
360 ASSERT_EQ(NumberOfDefaultSyncItems() + 3, | |
361 GetClient(1)->GetLastSessionSnapshot()-> | |
362 num_encryption_conflicts); // The encrypted nodes. | |
363 | |
364 ASSERT_TRUE(GetClient(1)->AwaitPassphraseRequired()); | |
365 ASSERT_TRUE(SetDecryptionPassphrase(1, kValidPassphrase)); | |
366 ASSERT_TRUE(GetClient(1)->AwaitPassphraseAccepted()); | |
367 ASSERT_FALSE(GetClient(1)->service()->IsPassphraseRequired()); | |
368 ASSERT_TRUE(GetClient(1)->WaitForTypeEncryption(syncable::SESSIONS)); | |
369 | |
370 // Open windows on client 1, which should automatically be encrypted. | |
371 ScopedWindowMap client1_windows; | |
372 ASSERT_TRUE(OpenTabAndGetLocalWindows(1, GURL(kURL2), | |
373 client1_windows.GetMutable())); | |
374 ASSERT_TRUE(GetClient(1)->AwaitMutualSyncCycleCompletion(GetClient(0))); | |
375 | |
376 ASSERT_TRUE(IsEncrypted(0, syncable::SESSIONS)); | |
377 ASSERT_TRUE(IsEncrypted(1, syncable::SESSIONS)); | |
378 // Get foreign session data from client 0 and 1. | |
379 SyncedSessionVector sessions0; | |
380 SyncedSessionVector sessions1; | |
381 ASSERT_TRUE(GetSessionData(0, &sessions0)); | |
382 ASSERT_TRUE(GetSessionData(1, &sessions1)); | |
383 | |
384 // Verify client 1's foreign session matches client 0's current window and | |
385 // vice versa. | |
386 ASSERT_EQ(1U, sessions0.size()); | |
387 ASSERT_EQ(1U, sessions1.size()); | |
388 ASSERT_TRUE(WindowsMatch(sessions1[0]->windows, *client0_windows.Get())); | |
389 ASSERT_TRUE(WindowsMatch(sessions0[0]->windows, *client1_windows.Get())); | |
390 } | |
391 | |
392 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, DeleteIdleSession) { | 148 IN_PROC_BROWSER_TEST_F(TwoClientSessionsSyncTest, DeleteIdleSession) { |
393 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; | 149 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
394 | 150 |
395 ASSERT_TRUE(CheckInitialState(0)); | 151 ASSERT_TRUE(CheckInitialState(0)); |
396 ASSERT_TRUE(CheckInitialState(1)); | 152 ASSERT_TRUE(CheckInitialState(1)); |
397 | 153 |
398 // Client 0 opened some tabs then went idle. | 154 // Client 0 opened some tabs then went idle. |
399 ScopedWindowMap client0_windows; | 155 ScopedWindowMap client0_windows; |
400 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), | 156 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL1), |
401 client0_windows.GetMutable())); | 157 client0_windows.GetMutable())); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 ASSERT_FALSE(GetSessionData(1, &sessions1)); | 195 ASSERT_FALSE(GetSessionData(1, &sessions1)); |
440 | 196 |
441 // Client 0 becomes active again with a new tab. | 197 // Client 0 becomes active again with a new tab. |
442 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL2), | 198 ASSERT_TRUE(OpenTabAndGetLocalWindows(0, GURL(kURL2), |
443 client0_windows.GetMutable())); | 199 client0_windows.GetMutable())); |
444 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); | 200 ASSERT_TRUE(GetClient(0)->AwaitMutualSyncCycleCompletion(GetClient(1))); |
445 ASSERT_TRUE(GetSessionData(1, &sessions1)); | 201 ASSERT_TRUE(GetSessionData(1, &sessions1)); |
446 ASSERT_EQ(1U, sessions1.size()); | 202 ASSERT_EQ(1U, sessions1.size()); |
447 ASSERT_TRUE(WindowsMatch(sessions1[0]->windows, *client0_windows.Get())); | 203 ASSERT_TRUE(WindowsMatch(sessions1[0]->windows, *client0_windows.Get())); |
448 } | 204 } |
OLD | NEW |