| 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 "sync/util/cryptographer.h" | 5 #include "sync/util/cryptographer.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 cryptographer_.UpdateNigoriFromEncryptedTypes(&nigori); | 267 cryptographer_.UpdateNigoriFromEncryptedTypes(&nigori); |
| 268 cryptographer2.UpdateEncryptedTypesFromNigori(nigori); | 268 cryptographer2.UpdateEncryptedTypesFromNigori(nigori); |
| 269 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); | 269 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); |
| 270 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes())); | 270 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes())); |
| 271 | 271 |
| 272 Mock::VerifyAndClearExpectations(&observer); | 272 Mock::VerifyAndClearExpectations(&observer); |
| 273 Mock::VerifyAndClearExpectations(&observer2); | 273 Mock::VerifyAndClearExpectations(&observer2); |
| 274 | 274 |
| 275 EXPECT_CALL(observer, | 275 EXPECT_CALL(observer, |
| 276 OnEncryptedTypesChanged( | 276 OnEncryptedTypesChanged( |
| 277 HasModelTypes(ModelTypeSet::All()), false)); | 277 HasModelTypes(syncer::EncryptableTypes()), false)); |
| 278 EXPECT_CALL(observer2, | 278 EXPECT_CALL(observer2, |
| 279 OnEncryptedTypesChanged( | 279 OnEncryptedTypesChanged( |
| 280 HasModelTypes(ModelTypeSet::All()), false)); | 280 HasModelTypes(syncer::EncryptableTypes()), false)); |
| 281 | 281 |
| 282 // Set all encrypted types | 282 // Set all encryptable types |
| 283 encrypted_types = ModelTypeSet::All(); | 283 encrypted_types = syncer::EncryptableTypes(); |
| 284 cryptographer_.MergeEncryptedTypesForTest(encrypted_types); | 284 cryptographer_.MergeEncryptedTypesForTest(encrypted_types); |
| 285 cryptographer_.UpdateNigoriFromEncryptedTypes(&nigori); | 285 cryptographer_.UpdateNigoriFromEncryptedTypes(&nigori); |
| 286 cryptographer2.UpdateEncryptedTypesFromNigori(nigori); | 286 cryptographer2.UpdateEncryptedTypesFromNigori(nigori); |
| 287 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); | 287 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); |
| 288 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes())); | 288 EXPECT_TRUE(encrypted_types.Equals(cryptographer2.GetEncryptedTypes())); |
| 289 | 289 |
| 290 // Receiving an empty nigori should not reset any encrypted types or trigger | 290 // Receiving an empty nigori should not reset any encrypted types or trigger |
| 291 // an observer notification. | 291 // an observer notification. |
| 292 Mock::VerifyAndClearExpectations(&observer); | 292 Mock::VerifyAndClearExpectations(&observer); |
| 293 nigori = sync_pb::NigoriSpecifics(); | 293 nigori = sync_pb::NigoriSpecifics(); |
| 294 cryptographer_.UpdateEncryptedTypesFromNigori(nigori); | 294 cryptographer_.UpdateEncryptedTypesFromNigori(nigori); |
| 295 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); | 295 EXPECT_TRUE(encrypted_types.Equals(cryptographer_.GetEncryptedTypes())); |
| 296 } | 296 } |
| 297 | 297 |
| 298 TEST_F(SyncCryptographerTest, EncryptEverythingExplicit) { | 298 TEST_F(SyncCryptographerTest, EncryptEverythingExplicit) { |
| 299 ModelTypeSet real_types = ModelTypeSet::All(); | 299 ModelTypeSet encryptable_types = syncer::EncryptableTypes(); |
| 300 sync_pb::NigoriSpecifics specifics; | 300 sync_pb::NigoriSpecifics specifics; |
| 301 specifics.set_encrypt_everything(true); | 301 specifics.set_encrypt_everything(true); |
| 302 | 302 |
| 303 StrictMock<MockObserver> observer; | 303 StrictMock<MockObserver> observer; |
| 304 cryptographer_.AddObserver(&observer); | 304 cryptographer_.AddObserver(&observer); |
| 305 | 305 |
| 306 EXPECT_CALL(observer, | 306 EXPECT_CALL(observer, |
| 307 OnEncryptedTypesChanged( | 307 OnEncryptedTypesChanged( |
| 308 HasModelTypes(ModelTypeSet::All()), true)); | 308 HasModelTypes(syncer::EncryptableTypes()), true)); |
| 309 | 309 |
| 310 EXPECT_FALSE(cryptographer_.encrypt_everything()); | 310 EXPECT_FALSE(cryptographer_.encrypt_everything()); |
| 311 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes(); | 311 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes(); |
| 312 for (ModelTypeSet::Iterator iter = real_types.First(); | 312 for (ModelTypeSet::Iterator iter = encryptable_types.First(); |
| 313 iter.Good(); iter.Inc()) { | 313 iter.Good(); iter.Inc()) { |
| 314 if (iter.Get() == PASSWORDS || iter.Get() == NIGORI) | 314 if (iter.Get() == PASSWORDS || iter.Get() == NIGORI) |
| 315 EXPECT_TRUE(encrypted_types.Has(iter.Get())); | 315 EXPECT_TRUE(encrypted_types.Has(iter.Get())); |
| 316 else | 316 else |
| 317 EXPECT_FALSE(encrypted_types.Has(iter.Get())); | 317 EXPECT_FALSE(encrypted_types.Has(iter.Get())); |
| 318 } | 318 } |
| 319 | 319 |
| 320 cryptographer_.UpdateEncryptedTypesFromNigori(specifics); | 320 cryptographer_.UpdateEncryptedTypesFromNigori(specifics); |
| 321 | 321 |
| 322 EXPECT_TRUE(cryptographer_.encrypt_everything()); | 322 EXPECT_TRUE(cryptographer_.encrypt_everything()); |
| 323 encrypted_types = cryptographer_.GetEncryptedTypes(); | 323 encrypted_types = cryptographer_.GetEncryptedTypes(); |
| 324 for (ModelTypeSet::Iterator iter = real_types.First(); | 324 for (ModelTypeSet::Iterator iter = encryptable_types.First(); |
| 325 iter.Good(); iter.Inc()) { | 325 iter.Good(); iter.Inc()) { |
| 326 EXPECT_TRUE(encrypted_types.Has(iter.Get())); | 326 EXPECT_TRUE(encrypted_types.Has(iter.Get())); |
| 327 } | 327 } |
| 328 | 328 |
| 329 // Shouldn't trigger another notification. | 329 // Shouldn't trigger another notification. |
| 330 specifics.set_encrypt_everything(true); | 330 specifics.set_encrypt_everything(true); |
| 331 | 331 |
| 332 cryptographer_.RemoveObserver(&observer); | 332 cryptographer_.RemoveObserver(&observer); |
| 333 } | 333 } |
| 334 | 334 |
| 335 TEST_F(SyncCryptographerTest, EncryptEverythingImplicit) { | 335 TEST_F(SyncCryptographerTest, EncryptEverythingImplicit) { |
| 336 ModelTypeSet real_types = ModelTypeSet::All(); | 336 ModelTypeSet encryptable_types = syncer::EncryptableTypes(); |
| 337 sync_pb::NigoriSpecifics specifics; | 337 sync_pb::NigoriSpecifics specifics; |
| 338 specifics.set_encrypt_bookmarks(true); // Non-passwords = encrypt everything | 338 specifics.set_encrypt_bookmarks(true); // Non-passwords = encrypt everything |
| 339 | 339 |
| 340 StrictMock<MockObserver> observer; | 340 StrictMock<MockObserver> observer; |
| 341 cryptographer_.AddObserver(&observer); | 341 cryptographer_.AddObserver(&observer); |
| 342 | 342 |
| 343 EXPECT_CALL(observer, | 343 EXPECT_CALL(observer, |
| 344 OnEncryptedTypesChanged( | 344 OnEncryptedTypesChanged( |
| 345 HasModelTypes(ModelTypeSet::All()), true)); | 345 HasModelTypes(syncer::EncryptableTypes()), true)); |
| 346 | 346 |
| 347 EXPECT_FALSE(cryptographer_.encrypt_everything()); | 347 EXPECT_FALSE(cryptographer_.encrypt_everything()); |
| 348 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes(); | 348 ModelTypeSet encrypted_types = cryptographer_.GetEncryptedTypes(); |
| 349 for (ModelTypeSet::Iterator iter = real_types.First(); | 349 for (ModelTypeSet::Iterator iter = encryptable_types.First(); |
| 350 iter.Good(); iter.Inc()) { | 350 iter.Good(); iter.Inc()) { |
| 351 if (iter.Get() == PASSWORDS || iter.Get() == NIGORI) | 351 if (iter.Get() == PASSWORDS || iter.Get() == NIGORI) |
| 352 EXPECT_TRUE(encrypted_types.Has(iter.Get())); | 352 EXPECT_TRUE(encrypted_types.Has(iter.Get())); |
| 353 else | 353 else |
| 354 EXPECT_FALSE(encrypted_types.Has(iter.Get())); | 354 EXPECT_FALSE(encrypted_types.Has(iter.Get())); |
| 355 } | 355 } |
| 356 | 356 |
| 357 cryptographer_.UpdateEncryptedTypesFromNigori(specifics); | 357 cryptographer_.UpdateEncryptedTypesFromNigori(specifics); |
| 358 | 358 |
| 359 EXPECT_TRUE(cryptographer_.encrypt_everything()); | 359 EXPECT_TRUE(cryptographer_.encrypt_everything()); |
| 360 encrypted_types = cryptographer_.GetEncryptedTypes(); | 360 encrypted_types = cryptographer_.GetEncryptedTypes(); |
| 361 for (ModelTypeSet::Iterator iter = real_types.First(); | 361 for (ModelTypeSet::Iterator iter = encryptable_types.First(); |
| 362 iter.Good(); iter.Inc()) { | 362 iter.Good(); iter.Inc()) { |
| 363 EXPECT_TRUE(encrypted_types.Has(iter.Get())); | 363 EXPECT_TRUE(encrypted_types.Has(iter.Get())); |
| 364 } | 364 } |
| 365 | 365 |
| 366 // Shouldn't trigger another notification. | 366 // Shouldn't trigger another notification. |
| 367 specifics.set_encrypt_everything(true); | 367 specifics.set_encrypt_everything(true); |
| 368 | 368 |
| 369 cryptographer_.RemoveObserver(&observer); | 369 cryptographer_.RemoveObserver(&observer); |
| 370 } | 370 } |
| 371 | 371 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 iter.Get() == BOOKMARKS) | 408 iter.Get() == BOOKMARKS) |
| 409 EXPECT_TRUE(encrypted_types.Has(iter.Get())); | 409 EXPECT_TRUE(encrypted_types.Has(iter.Get())); |
| 410 else | 410 else |
| 411 EXPECT_FALSE(encrypted_types.Has(iter.Get())); | 411 EXPECT_FALSE(encrypted_types.Has(iter.Get())); |
| 412 } | 412 } |
| 413 | 413 |
| 414 cryptographer_.RemoveObserver(&observer); | 414 cryptographer_.RemoveObserver(&observer); |
| 415 } | 415 } |
| 416 | 416 |
| 417 } // namespace syncer | 417 } // namespace syncer |
| OLD | NEW |