| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 156 EXPECT_EQ(expected_type_, type); | 156 EXPECT_EQ(expected_type_, type); |
| 157 return FakeSyncChangeProcessor::GetAllSyncData(type); | 157 return FakeSyncChangeProcessor::GetAllSyncData(type); |
| 158 } | 158 } |
| 159 | 159 |
| 160 // This is a helper to vend a wrapped version of this object suitable for | 160 // This is a helper to vend a wrapped version of this object suitable for |
| 161 // passing in to MergeDataAndStartSyncing, which takes a | 161 // passing in to MergeDataAndStartSyncing, which takes a |
| 162 // std::unique_ptr<SyncChangeProcessor>, since in tests we typically don't | 162 // std::unique_ptr<SyncChangeProcessor>, since in tests we typically don't |
| 163 // want to | 163 // want to |
| 164 // give up ownership of a local change processor. | 164 // give up ownership of a local change processor. |
| 165 std::unique_ptr<syncer::SyncChangeProcessor> GetWrapped() { | 165 std::unique_ptr<syncer::SyncChangeProcessor> GetWrapped() { |
| 166 return base::WrapUnique( | 166 return base::MakeUnique<syncer::SyncChangeProcessorWrapperForTest>(this); |
| 167 new syncer::SyncChangeProcessorWrapperForTest(this)); | |
| 168 } | 167 } |
| 169 | 168 |
| 170 protected: | 169 protected: |
| 171 // The expected ModelType of changes that this processor will see. | 170 // The expected ModelType of changes that this processor will see. |
| 172 syncer::ModelType expected_type_; | 171 syncer::ModelType expected_type_; |
| 173 | 172 |
| 174 DISALLOW_COPY_AND_ASSIGN(StatefulChangeProcessor); | 173 DISALLOW_COPY_AND_ASSIGN(StatefulChangeProcessor); |
| 175 }; | 174 }; |
| 176 | 175 |
| 177 } // namespace | 176 } // namespace |
| 178 | 177 |
| 179 class ExtensionServiceSyncTest | 178 class ExtensionServiceSyncTest |
| 180 : public extensions::ExtensionServiceTestWithInstall { | 179 : public extensions::ExtensionServiceTestWithInstall { |
| 181 public: | 180 public: |
| 182 void MockSyncStartFlare(bool* was_called, | 181 void MockSyncStartFlare(bool* was_called, |
| 183 syncer::ModelType* model_type_passed_in, | 182 syncer::ModelType* model_type_passed_in, |
| 184 syncer::ModelType model_type) { | 183 syncer::ModelType model_type) { |
| 185 *was_called = true; | 184 *was_called = true; |
| 186 *model_type_passed_in = model_type; | 185 *model_type_passed_in = model_type; |
| 187 } | 186 } |
| 188 | 187 |
| 189 // Helper to call MergeDataAndStartSyncing with no server data and dummy | 188 // Helper to call MergeDataAndStartSyncing with no server data and dummy |
| 190 // change processor / error factory. | 189 // change processor / error factory. |
| 191 void StartSyncing(syncer::ModelType type) { | 190 void StartSyncing(syncer::ModelType type) { |
| 192 ASSERT_TRUE(type == syncer::EXTENSIONS || type == syncer::APPS); | 191 ASSERT_TRUE(type == syncer::EXTENSIONS || type == syncer::APPS); |
| 193 extension_sync_service()->MergeDataAndStartSyncing( | 192 extension_sync_service()->MergeDataAndStartSyncing( |
| 194 type, syncer::SyncDataList(), | 193 type, syncer::SyncDataList(), |
| 195 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 194 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 196 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 195 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 197 } | 196 } |
| 198 | 197 |
| 199 protected: | 198 protected: |
| 200 // Paths to some of the fake extensions. | 199 // Paths to some of the fake extensions. |
| 201 base::FilePath good0_path() { | 200 base::FilePath good0_path() { |
| 202 return data_dir() | 201 return data_dir() |
| 203 .AppendASCII("good") | 202 .AppendASCII("good") |
| 204 .AppendASCII("Extensions") | 203 .AppendASCII("Extensions") |
| 205 .AppendASCII(good0) | 204 .AppendASCII(good0) |
| 206 .AppendASCII("1.0.0.0"); | 205 .AppendASCII("1.0.0.0"); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 EXPECT_TRUE(flare_was_called); | 278 EXPECT_TRUE(flare_was_called); |
| 280 EXPECT_EQ(syncer::EXTENSIONS, triggered_type); | 279 EXPECT_EQ(syncer::EXTENSIONS, triggered_type); |
| 281 | 280 |
| 282 // Reset. | 281 // Reset. |
| 283 flare_was_called = false; | 282 flare_was_called = false; |
| 284 triggered_type = syncer::UNSPECIFIED; | 283 triggered_type = syncer::UNSPECIFIED; |
| 285 | 284 |
| 286 // Once sync starts, flare should no longer be invoked. | 285 // Once sync starts, flare should no longer be invoked. |
| 287 extension_sync_service()->MergeDataAndStartSyncing( | 286 extension_sync_service()->MergeDataAndStartSyncing( |
| 288 syncer::EXTENSIONS, syncer::SyncDataList(), | 287 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 289 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 288 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 290 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 289 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 291 path = data_dir().AppendASCII("page_action.crx"); | 290 path = data_dir().AppendASCII("page_action.crx"); |
| 292 InstallCRX(path, INSTALL_NEW); | 291 InstallCRX(path, INSTALL_NEW); |
| 293 EXPECT_FALSE(flare_was_called); | 292 EXPECT_FALSE(flare_was_called); |
| 294 ASSERT_EQ(syncer::UNSPECIFIED, triggered_type); | 293 ASSERT_EQ(syncer::UNSPECIFIED, triggered_type); |
| 295 } | 294 } |
| 296 | 295 |
| 297 TEST_F(ExtensionServiceSyncTest, DisableExtensionFromSync) { | 296 TEST_F(ExtensionServiceSyncTest, DisableExtensionFromSync) { |
| 298 // Start the extensions service with one external extension already installed. | 297 // Start the extensions service with one external extension already installed. |
| 299 base::FilePath source_install_dir = | 298 base::FilePath source_install_dir = |
| 300 data_dir().AppendASCII("good").AppendASCII("Extensions"); | 299 data_dir().AppendASCII("good").AppendASCII("Extensions"); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 314 ASSERT_EQ(3u, loaded_.size()); | 313 ASSERT_EQ(3u, loaded_.size()); |
| 315 | 314 |
| 316 // We start enabled. | 315 // We start enabled. |
| 317 const Extension* extension = service()->GetExtensionById(good0, true); | 316 const Extension* extension = service()->GetExtensionById(good0, true); |
| 318 ASSERT_TRUE(extension); | 317 ASSERT_TRUE(extension); |
| 319 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); | 318 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); |
| 320 | 319 |
| 321 // Sync starts up. | 320 // Sync starts up. |
| 322 extension_sync_service()->MergeDataAndStartSyncing( | 321 extension_sync_service()->MergeDataAndStartSyncing( |
| 323 syncer::EXTENSIONS, syncer::SyncDataList(), | 322 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 324 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 323 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 325 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 324 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 326 | 325 |
| 327 // Then sync data arrives telling us to disable |good0|. | 326 // Then sync data arrives telling us to disable |good0|. |
| 328 ExtensionSyncData disable_good_crx(*extension, false, | 327 ExtensionSyncData disable_good_crx(*extension, false, |
| 329 Extension::DISABLE_USER_ACTION, false, | 328 Extension::DISABLE_USER_ACTION, false, |
| 330 false, ExtensionSyncData::BOOLEAN_UNSET, | 329 false, ExtensionSyncData::BOOLEAN_UNSET, |
| 331 false); | 330 false); |
| 332 SyncChangeList list( | 331 SyncChangeList list( |
| 333 1, disable_good_crx.GetSyncChange(SyncChange::ACTION_UPDATE)); | 332 1, disable_good_crx.GetSyncChange(SyncChange::ACTION_UPDATE)); |
| 334 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); | 333 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); |
| 335 | 334 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 379 Extension::DISABLE_USER_ACTION, false, false, | 378 Extension::DISABLE_USER_ACTION, false, false, |
| 380 ExtensionSyncData::BOOLEAN_UNSET, false); | 379 ExtensionSyncData::BOOLEAN_UNSET, false); |
| 381 ExtensionSyncData enable_good2(*extension2, true, Extension::DISABLE_NONE, | 380 ExtensionSyncData enable_good2(*extension2, true, Extension::DISABLE_NONE, |
| 382 false, false, | 381 false, false, |
| 383 ExtensionSyncData::BOOLEAN_UNSET, false); | 382 ExtensionSyncData::BOOLEAN_UNSET, false); |
| 384 syncer::SyncDataList sync_data; | 383 syncer::SyncDataList sync_data; |
| 385 sync_data.push_back(disable_good0.GetSyncData()); | 384 sync_data.push_back(disable_good0.GetSyncData()); |
| 386 sync_data.push_back(enable_good2.GetSyncData()); | 385 sync_data.push_back(enable_good2.GetSyncData()); |
| 387 extension_sync_service()->MergeDataAndStartSyncing( | 386 extension_sync_service()->MergeDataAndStartSyncing( |
| 388 syncer::EXTENSIONS, sync_data, | 387 syncer::EXTENSIONS, sync_data, |
| 389 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 388 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 390 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 389 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 391 | 390 |
| 392 // Both sync changes should be ignored, since the local state was changed | 391 // Both sync changes should be ignored, since the local state was changed |
| 393 // before sync started, and so the local state is considered more recent. | 392 // before sync started, and so the local state is considered more recent. |
| 394 EXPECT_TRUE(service()->IsExtensionEnabled(good0)); | 393 EXPECT_TRUE(service()->IsExtensionEnabled(good0)); |
| 395 EXPECT_FALSE(service()->IsExtensionEnabled(good2)); | 394 EXPECT_FALSE(service()->IsExtensionEnabled(good2)); |
| 396 } | 395 } |
| 397 | 396 |
| 398 TEST_F(ExtensionServiceSyncTest, DontSelfNotify) { | 397 TEST_F(ExtensionServiceSyncTest, DontSelfNotify) { |
| 399 // Start the extension service with three extensions already installed. | 398 // Start the extension service with three extensions already installed. |
| 400 base::FilePath source_install_dir = | 399 base::FilePath source_install_dir = |
| (...skipping 10 matching lines...) Expand all Loading... |
| 411 | 410 |
| 412 service()->Init(); | 411 service()->Init(); |
| 413 ASSERT_TRUE(service()->is_ready()); | 412 ASSERT_TRUE(service()->is_ready()); |
| 414 ASSERT_EQ(3u, loaded_.size()); | 413 ASSERT_EQ(3u, loaded_.size()); |
| 415 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); | 414 ASSERT_TRUE(service()->IsExtensionEnabled(good0)); |
| 416 | 415 |
| 417 syncer::FakeSyncChangeProcessor* processor = | 416 syncer::FakeSyncChangeProcessor* processor = |
| 418 new syncer::FakeSyncChangeProcessor; | 417 new syncer::FakeSyncChangeProcessor; |
| 419 extension_sync_service()->MergeDataAndStartSyncing( | 418 extension_sync_service()->MergeDataAndStartSyncing( |
| 420 syncer::EXTENSIONS, syncer::SyncDataList(), base::WrapUnique(processor), | 419 syncer::EXTENSIONS, syncer::SyncDataList(), base::WrapUnique(processor), |
| 421 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 420 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 422 | 421 |
| 423 processor->changes().clear(); | 422 processor->changes().clear(); |
| 424 | 423 |
| 425 // Simulate various incoming sync changes, and make sure they don't result in | 424 // Simulate various incoming sync changes, and make sure they don't result in |
| 426 // any outgoing changes. | 425 // any outgoing changes. |
| 427 | 426 |
| 428 { | 427 { |
| 429 const Extension* extension = service()->GetExtensionById(good0, true); | 428 const Extension* extension = service()->GetExtensionById(good0, true); |
| 430 ASSERT_TRUE(extension); | 429 ASSERT_TRUE(extension); |
| 431 | 430 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 } | 489 } |
| 491 | 490 |
| 492 TEST_F(ExtensionServiceSyncTest, GetSyncData) { | 491 TEST_F(ExtensionServiceSyncTest, GetSyncData) { |
| 493 InitializeEmptyExtensionService(); | 492 InitializeEmptyExtensionService(); |
| 494 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 493 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 495 const Extension* extension = service()->GetInstalledExtension(good_crx); | 494 const Extension* extension = service()->GetInstalledExtension(good_crx); |
| 496 ASSERT_TRUE(extension); | 495 ASSERT_TRUE(extension); |
| 497 | 496 |
| 498 extension_sync_service()->MergeDataAndStartSyncing( | 497 extension_sync_service()->MergeDataAndStartSyncing( |
| 499 syncer::EXTENSIONS, syncer::SyncDataList(), | 498 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 500 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 499 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 501 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 500 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 502 | 501 |
| 503 syncer::SyncDataList list = | 502 syncer::SyncDataList list = |
| 504 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); | 503 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); |
| 505 ASSERT_EQ(list.size(), 1U); | 504 ASSERT_EQ(list.size(), 1U); |
| 506 std::unique_ptr<ExtensionSyncData> data = | 505 std::unique_ptr<ExtensionSyncData> data = |
| 507 ExtensionSyncData::CreateFromSyncData(list[0]); | 506 ExtensionSyncData::CreateFromSyncData(list[0]); |
| 508 ASSERT_TRUE(data.get()); | 507 ASSERT_TRUE(data.get()); |
| 509 EXPECT_EQ(extension->id(), data->id()); | 508 EXPECT_EQ(extension->id(), data->id()); |
| 510 EXPECT_FALSE(data->uninstalled()); | 509 EXPECT_FALSE(data->uninstalled()); |
| 511 EXPECT_EQ(service()->IsExtensionEnabled(good_crx), data->enabled()); | 510 EXPECT_EQ(service()->IsExtensionEnabled(good_crx), data->enabled()); |
| 512 EXPECT_EQ(extensions::util::IsIncognitoEnabled(good_crx, profile()), | 511 EXPECT_EQ(extensions::util::IsIncognitoEnabled(good_crx, profile()), |
| 513 data->incognito_enabled()); | 512 data->incognito_enabled()); |
| 514 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled()); | 513 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled()); |
| 515 EXPECT_EQ(data->version(), *extension->version()); | 514 EXPECT_EQ(data->version(), *extension->version()); |
| 516 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), | 515 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), |
| 517 data->update_url()); | 516 data->update_url()); |
| 518 EXPECT_EQ(extension->name(), data->name()); | 517 EXPECT_EQ(extension->name(), data->name()); |
| 519 } | 518 } |
| 520 | 519 |
| 521 TEST_F(ExtensionServiceSyncTest, GetSyncDataDisableReasons) { | 520 TEST_F(ExtensionServiceSyncTest, GetSyncDataDisableReasons) { |
| 522 InitializeEmptyExtensionService(); | 521 InitializeEmptyExtensionService(); |
| 523 const Extension* extension = | 522 const Extension* extension = |
| 524 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 523 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 525 ASSERT_TRUE(extension); | 524 ASSERT_TRUE(extension); |
| 526 | 525 |
| 527 extension_sync_service()->MergeDataAndStartSyncing( | 526 extension_sync_service()->MergeDataAndStartSyncing( |
| 528 syncer::EXTENSIONS, syncer::SyncDataList(), | 527 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 529 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 528 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 530 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 529 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 531 | 530 |
| 532 { | 531 { |
| 533 syncer::SyncDataList list = | 532 syncer::SyncDataList list = |
| 534 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); | 533 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); |
| 535 ASSERT_EQ(list.size(), 1U); | 534 ASSERT_EQ(list.size(), 1U); |
| 536 std::unique_ptr<ExtensionSyncData> data = | 535 std::unique_ptr<ExtensionSyncData> data = |
| 537 ExtensionSyncData::CreateFromSyncData(list[0]); | 536 ExtensionSyncData::CreateFromSyncData(list[0]); |
| 538 ASSERT_TRUE(data.get()); | 537 ASSERT_TRUE(data.get()); |
| 539 EXPECT_TRUE(data->enabled()); | 538 EXPECT_TRUE(data->enabled()); |
| 540 EXPECT_TRUE(data->supports_disable_reasons()); | 539 EXPECT_TRUE(data->supports_disable_reasons()); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 591 | 590 |
| 592 TEST_F(ExtensionServiceSyncTest, GetSyncDataTerminated) { | 591 TEST_F(ExtensionServiceSyncTest, GetSyncDataTerminated) { |
| 593 InitializeEmptyExtensionService(); | 592 InitializeEmptyExtensionService(); |
| 594 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 593 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 595 TerminateExtension(good_crx); | 594 TerminateExtension(good_crx); |
| 596 const Extension* extension = service()->GetInstalledExtension(good_crx); | 595 const Extension* extension = service()->GetInstalledExtension(good_crx); |
| 597 ASSERT_TRUE(extension); | 596 ASSERT_TRUE(extension); |
| 598 | 597 |
| 599 extension_sync_service()->MergeDataAndStartSyncing( | 598 extension_sync_service()->MergeDataAndStartSyncing( |
| 600 syncer::EXTENSIONS, syncer::SyncDataList(), | 599 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 601 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 600 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 602 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 601 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 603 | 602 |
| 604 syncer::SyncDataList list = | 603 syncer::SyncDataList list = |
| 605 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); | 604 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); |
| 606 ASSERT_EQ(list.size(), 1U); | 605 ASSERT_EQ(list.size(), 1U); |
| 607 std::unique_ptr<ExtensionSyncData> data = | 606 std::unique_ptr<ExtensionSyncData> data = |
| 608 ExtensionSyncData::CreateFromSyncData(list[0]); | 607 ExtensionSyncData::CreateFromSyncData(list[0]); |
| 609 ASSERT_TRUE(data.get()); | 608 ASSERT_TRUE(data.get()); |
| 610 EXPECT_EQ(extension->id(), data->id()); | 609 EXPECT_EQ(extension->id(), data->id()); |
| 611 EXPECT_FALSE(data->uninstalled()); | 610 EXPECT_FALSE(data->uninstalled()); |
| 612 EXPECT_EQ(service()->IsExtensionEnabled(good_crx), data->enabled()); | 611 EXPECT_EQ(service()->IsExtensionEnabled(good_crx), data->enabled()); |
| 613 EXPECT_EQ(extensions::util::IsIncognitoEnabled(good_crx, profile()), | 612 EXPECT_EQ(extensions::util::IsIncognitoEnabled(good_crx, profile()), |
| 614 data->incognito_enabled()); | 613 data->incognito_enabled()); |
| 615 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled()); | 614 EXPECT_EQ(ExtensionSyncData::BOOLEAN_UNSET, data->all_urls_enabled()); |
| 616 EXPECT_EQ(data->version(), *extension->version()); | 615 EXPECT_EQ(data->version(), *extension->version()); |
| 617 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), | 616 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), |
| 618 data->update_url()); | 617 data->update_url()); |
| 619 EXPECT_EQ(extension->name(), data->name()); | 618 EXPECT_EQ(extension->name(), data->name()); |
| 620 } | 619 } |
| 621 | 620 |
| 622 TEST_F(ExtensionServiceSyncTest, GetSyncDataFilter) { | 621 TEST_F(ExtensionServiceSyncTest, GetSyncDataFilter) { |
| 623 InitializeEmptyExtensionService(); | 622 InitializeEmptyExtensionService(); |
| 624 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 623 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 625 const Extension* extension = service()->GetInstalledExtension(good_crx); | 624 const Extension* extension = service()->GetInstalledExtension(good_crx); |
| 626 ASSERT_TRUE(extension); | 625 ASSERT_TRUE(extension); |
| 627 | 626 |
| 628 extension_sync_service()->MergeDataAndStartSyncing( | 627 extension_sync_service()->MergeDataAndStartSyncing( |
| 629 syncer::APPS, syncer::SyncDataList(), | 628 syncer::APPS, syncer::SyncDataList(), |
| 630 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 629 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 631 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 630 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 632 | 631 |
| 633 syncer::SyncDataList list = | 632 syncer::SyncDataList list = |
| 634 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); | 633 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); |
| 635 ASSERT_EQ(list.size(), 0U); | 634 ASSERT_EQ(list.size(), 0U); |
| 636 } | 635 } |
| 637 | 636 |
| 638 TEST_F(ExtensionServiceSyncTest, GetSyncExtensionDataUserSettings) { | 637 TEST_F(ExtensionServiceSyncTest, GetSyncExtensionDataUserSettings) { |
| 639 InitializeEmptyExtensionService(); | 638 InitializeEmptyExtensionService(); |
| 640 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 639 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 641 const Extension* extension = service()->GetInstalledExtension(good_crx); | 640 const Extension* extension = service()->GetInstalledExtension(good_crx); |
| 642 ASSERT_TRUE(extension); | 641 ASSERT_TRUE(extension); |
| 643 | 642 |
| 644 extension_sync_service()->MergeDataAndStartSyncing( | 643 extension_sync_service()->MergeDataAndStartSyncing( |
| 645 syncer::EXTENSIONS, syncer::SyncDataList(), | 644 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 646 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 645 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 647 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 646 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 648 | 647 |
| 649 { | 648 { |
| 650 syncer::SyncDataList list = | 649 syncer::SyncDataList list = |
| 651 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); | 650 extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS); |
| 652 ASSERT_EQ(list.size(), 1U); | 651 ASSERT_EQ(list.size(), 1U); |
| 653 std::unique_ptr<ExtensionSyncData> data = | 652 std::unique_ptr<ExtensionSyncData> data = |
| 654 ExtensionSyncData::CreateFromSyncData(list[0]); | 653 ExtensionSyncData::CreateFromSyncData(list[0]); |
| 655 ASSERT_TRUE(data.get()); | 654 ASSERT_TRUE(data.get()); |
| 656 EXPECT_TRUE(data->enabled()); | 655 EXPECT_TRUE(data->enabled()); |
| 657 EXPECT_FALSE(data->incognito_enabled()); | 656 EXPECT_FALSE(data->incognito_enabled()); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 705 | 704 |
| 706 TEST_F(ExtensionServiceSyncTest, SyncForUninstalledExternalExtension) { | 705 TEST_F(ExtensionServiceSyncTest, SyncForUninstalledExternalExtension) { |
| 707 InitializeEmptyExtensionService(); | 706 InitializeEmptyExtensionService(); |
| 708 InstallCRXWithLocation( | 707 InstallCRXWithLocation( |
| 709 data_dir().AppendASCII("good.crx"), Manifest::EXTERNAL_PREF, INSTALL_NEW); | 708 data_dir().AppendASCII("good.crx"), Manifest::EXTERNAL_PREF, INSTALL_NEW); |
| 710 const Extension* extension = service()->GetInstalledExtension(good_crx); | 709 const Extension* extension = service()->GetInstalledExtension(good_crx); |
| 711 ASSERT_TRUE(extension); | 710 ASSERT_TRUE(extension); |
| 712 | 711 |
| 713 extension_sync_service()->MergeDataAndStartSyncing( | 712 extension_sync_service()->MergeDataAndStartSyncing( |
| 714 syncer::EXTENSIONS, syncer::SyncDataList(), | 713 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 715 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 714 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 716 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 715 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 717 StartSyncing(syncer::APPS); | 716 StartSyncing(syncer::APPS); |
| 718 | 717 |
| 719 UninstallExtension(good_crx, false); | 718 UninstallExtension(good_crx, false); |
| 720 EXPECT_TRUE( | 719 EXPECT_TRUE( |
| 721 ExtensionPrefs::Get(profile())->IsExternalExtensionUninstalled(good_crx)); | 720 ExtensionPrefs::Get(profile())->IsExternalExtensionUninstalled(good_crx)); |
| 722 | 721 |
| 723 sync_pb::EntitySpecifics specifics; | 722 sync_pb::EntitySpecifics specifics; |
| 724 sync_pb::AppSpecifics* app_specifics = specifics.mutable_app(); | 723 sync_pb::AppSpecifics* app_specifics = specifics.mutable_app(); |
| 725 sync_pb::ExtensionSpecifics* extension_specifics = | 724 sync_pb::ExtensionSpecifics* extension_specifics = |
| 726 app_specifics->mutable_extension(); | 725 app_specifics->mutable_extension(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 738 | 737 |
| 739 TEST_F(ExtensionServiceSyncTest, GetSyncAppDataUserSettings) { | 738 TEST_F(ExtensionServiceSyncTest, GetSyncAppDataUserSettings) { |
| 740 InitializeEmptyExtensionService(); | 739 InitializeEmptyExtensionService(); |
| 741 const Extension* app = | 740 const Extension* app = |
| 742 PackAndInstallCRX(data_dir().AppendASCII("app"), INSTALL_NEW); | 741 PackAndInstallCRX(data_dir().AppendASCII("app"), INSTALL_NEW); |
| 743 ASSERT_TRUE(app); | 742 ASSERT_TRUE(app); |
| 744 ASSERT_TRUE(app->is_app()); | 743 ASSERT_TRUE(app->is_app()); |
| 745 | 744 |
| 746 extension_sync_service()->MergeDataAndStartSyncing( | 745 extension_sync_service()->MergeDataAndStartSyncing( |
| 747 syncer::APPS, syncer::SyncDataList(), | 746 syncer::APPS, syncer::SyncDataList(), |
| 748 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 747 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 749 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 748 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 750 | 749 |
| 751 syncer::StringOrdinal initial_ordinal = | 750 syncer::StringOrdinal initial_ordinal = |
| 752 syncer::StringOrdinal::CreateInitialOrdinal(); | 751 syncer::StringOrdinal::CreateInitialOrdinal(); |
| 753 { | 752 { |
| 754 syncer::SyncDataList list = | 753 syncer::SyncDataList list = |
| 755 extension_sync_service()->GetAllSyncData(syncer::APPS); | 754 extension_sync_service()->GetAllSyncData(syncer::APPS); |
| 756 ASSERT_EQ(list.size(), 1U); | 755 ASSERT_EQ(list.size(), 1U); |
| 757 | 756 |
| 758 std::unique_ptr<ExtensionSyncData> app_sync_data = | 757 std::unique_ptr<ExtensionSyncData> app_sync_data = |
| 759 ExtensionSyncData::CreateFromSyncData(list[0]); | 758 ExtensionSyncData::CreateFromSyncData(list[0]); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 842 | 841 |
| 843 TEST_F(ExtensionServiceSyncTest, GetSyncDataList) { | 842 TEST_F(ExtensionServiceSyncTest, GetSyncDataList) { |
| 844 InitializeEmptyExtensionService(); | 843 InitializeEmptyExtensionService(); |
| 845 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 844 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 846 InstallCRX(data_dir().AppendASCII("page_action.crx"), INSTALL_NEW); | 845 InstallCRX(data_dir().AppendASCII("page_action.crx"), INSTALL_NEW); |
| 847 InstallCRX(data_dir().AppendASCII("theme.crx"), INSTALL_NEW); | 846 InstallCRX(data_dir().AppendASCII("theme.crx"), INSTALL_NEW); |
| 848 InstallCRX(data_dir().AppendASCII("theme2.crx"), INSTALL_NEW); | 847 InstallCRX(data_dir().AppendASCII("theme2.crx"), INSTALL_NEW); |
| 849 | 848 |
| 850 extension_sync_service()->MergeDataAndStartSyncing( | 849 extension_sync_service()->MergeDataAndStartSyncing( |
| 851 syncer::APPS, syncer::SyncDataList(), | 850 syncer::APPS, syncer::SyncDataList(), |
| 852 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 851 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 853 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 852 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 854 extension_sync_service()->MergeDataAndStartSyncing( | 853 extension_sync_service()->MergeDataAndStartSyncing( |
| 855 syncer::EXTENSIONS, syncer::SyncDataList(), | 854 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 856 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 855 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 857 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 856 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 858 | 857 |
| 859 service()->DisableExtension(page_action, Extension::DISABLE_USER_ACTION); | 858 service()->DisableExtension(page_action, Extension::DISABLE_USER_ACTION); |
| 860 TerminateExtension(theme2_crx); | 859 TerminateExtension(theme2_crx); |
| 861 | 860 |
| 862 EXPECT_EQ(0u, extension_sync_service()->GetAllSyncData(syncer::APPS).size()); | 861 EXPECT_EQ(0u, extension_sync_service()->GetAllSyncData(syncer::APPS).size()); |
| 863 EXPECT_EQ( | 862 EXPECT_EQ( |
| 864 2u, extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS).size()); | 863 2u, extension_sync_service()->GetAllSyncData(syncer::EXTENSIONS).size()); |
| 865 } | 864 } |
| 866 | 865 |
| 867 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataUninstall) { | 866 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataUninstall) { |
| 868 InitializeEmptyExtensionService(); | 867 InitializeEmptyExtensionService(); |
| 869 extension_sync_service()->MergeDataAndStartSyncing( | 868 extension_sync_service()->MergeDataAndStartSyncing( |
| 870 syncer::EXTENSIONS, syncer::SyncDataList(), | 869 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 871 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 870 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 872 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 871 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 873 | 872 |
| 874 sync_pb::EntitySpecifics specifics; | 873 sync_pb::EntitySpecifics specifics; |
| 875 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); | 874 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); |
| 876 ext_specifics->set_id(good_crx); | 875 ext_specifics->set_id(good_crx); |
| 877 ext_specifics->set_version("1.0"); | 876 ext_specifics->set_version("1.0"); |
| 878 | 877 |
| 879 SyncChangeList list = | 878 SyncChangeList list = |
| 880 MakeSyncChangeList(good_crx, specifics, SyncChange::ACTION_DELETE); | 879 MakeSyncChangeList(good_crx, specifics, SyncChange::ACTION_DELETE); |
| 881 | 880 |
| 882 // Should do nothing. | 881 // Should do nothing. |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 935 // Should again do nothing. | 934 // Should again do nothing. |
| 936 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); | 935 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); |
| 937 EXPECT_TRUE(service()->GetExtensionById(good_crx, false)); | 936 EXPECT_TRUE(service()->GetExtensionById(good_crx, false)); |
| 938 } | 937 } |
| 939 } | 938 } |
| 940 | 939 |
| 941 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataSettings) { | 940 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataSettings) { |
| 942 InitializeEmptyExtensionService(); | 941 InitializeEmptyExtensionService(); |
| 943 extension_sync_service()->MergeDataAndStartSyncing( | 942 extension_sync_service()->MergeDataAndStartSyncing( |
| 944 syncer::EXTENSIONS, syncer::SyncDataList(), | 943 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 945 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 944 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 946 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 945 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 947 | 946 |
| 948 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 947 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 949 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx)); | 948 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx)); |
| 950 EXPECT_FALSE(extensions::util::IsIncognitoEnabled(good_crx, profile())); | 949 EXPECT_FALSE(extensions::util::IsIncognitoEnabled(good_crx, profile())); |
| 951 // Returns a ScriptingPermissionsModifier for the extension. We use this | 950 // Returns a ScriptingPermissionsModifier for the extension. We use this |
| 952 // because various parts of this test reload the extension, making keeping a | 951 // because various parts of this test reload the extension, making keeping a |
| 953 // ptr to it inviable. | 952 // ptr to it inviable. |
| 954 auto get_permissions_modifier = [this]() { | 953 auto get_permissions_modifier = [this]() { |
| 955 const Extension* extension = registry()->GetExtensionById( | 954 const Extension* extension = registry()->GetExtensionById( |
| 956 good_crx, extensions::ExtensionRegistry::EVERYTHING); | 955 good_crx, extensions::ExtensionRegistry::EVERYTHING); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1032 get_permissions_modifier()->IsAllowedOnAllUrls()); | 1031 get_permissions_modifier()->IsAllowedOnAllUrls()); |
| 1033 } | 1032 } |
| 1034 | 1033 |
| 1035 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); | 1034 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); |
| 1036 } | 1035 } |
| 1037 | 1036 |
| 1038 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataNewExtension) { | 1037 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataNewExtension) { |
| 1039 InitializeEmptyExtensionService(); | 1038 InitializeEmptyExtensionService(); |
| 1040 extension_sync_service()->MergeDataAndStartSyncing( | 1039 extension_sync_service()->MergeDataAndStartSyncing( |
| 1041 syncer::EXTENSIONS, syncer::SyncDataList(), | 1040 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 1042 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 1041 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 1043 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 1042 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 1044 | 1043 |
| 1045 const base::FilePath path = data_dir().AppendASCII("good.crx"); | 1044 const base::FilePath path = data_dir().AppendASCII("good.crx"); |
| 1046 const ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); | 1045 const ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); |
| 1047 | 1046 |
| 1048 struct TestCase { | 1047 struct TestCase { |
| 1049 const char* name; // For failure output only. | 1048 const char* name; // For failure output only. |
| 1050 bool sync_enabled; // The "enabled" flag coming in from Sync. | 1049 bool sync_enabled; // The "enabled" flag coming in from Sync. |
| 1051 // The disable reason(s) coming in from Sync, or -1 for "not set". | 1050 // The disable reason(s) coming in from Sync, or -1 for "not set". |
| 1052 int sync_disable_reasons; | 1051 int sync_disable_reasons; |
| 1053 // The disable reason(s) that should be set on the installed extension. | 1052 // The disable reason(s) that should be set on the installed extension. |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1106 UninstallExtension(good_crx, false, | 1105 UninstallExtension(good_crx, false, |
| 1107 test_case.sync_enabled ? Extension::ENABLED | 1106 test_case.sync_enabled ? Extension::ENABLED |
| 1108 : Extension::DISABLED); | 1107 : Extension::DISABLED); |
| 1109 } | 1108 } |
| 1110 } | 1109 } |
| 1111 | 1110 |
| 1112 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataTerminatedExtension) { | 1111 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataTerminatedExtension) { |
| 1113 InitializeExtensionServiceWithUpdater(); | 1112 InitializeExtensionServiceWithUpdater(); |
| 1114 extension_sync_service()->MergeDataAndStartSyncing( | 1113 extension_sync_service()->MergeDataAndStartSyncing( |
| 1115 syncer::EXTENSIONS, syncer::SyncDataList(), | 1114 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 1116 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 1115 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 1117 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 1116 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 1118 | 1117 |
| 1119 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 1118 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 1120 TerminateExtension(good_crx); | 1119 TerminateExtension(good_crx); |
| 1121 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx)); | 1120 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx)); |
| 1122 EXPECT_FALSE(extensions::util::IsIncognitoEnabled(good_crx, profile())); | 1121 EXPECT_FALSE(extensions::util::IsIncognitoEnabled(good_crx, profile())); |
| 1123 | 1122 |
| 1124 sync_pb::EntitySpecifics specifics; | 1123 sync_pb::EntitySpecifics specifics; |
| 1125 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); | 1124 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); |
| 1126 ext_specifics->set_id(good_crx); | 1125 ext_specifics->set_id(good_crx); |
| 1127 ext_specifics->set_version( | 1126 ext_specifics->set_version( |
| 1128 service()->GetInstalledExtension(good_crx)->version()->GetString()); | 1127 service()->GetInstalledExtension(good_crx)->version()->GetString()); |
| 1129 ext_specifics->set_enabled(false); | 1128 ext_specifics->set_enabled(false); |
| 1130 ext_specifics->set_incognito_enabled(true); | 1129 ext_specifics->set_incognito_enabled(true); |
| 1131 | 1130 |
| 1132 SyncChangeList list = | 1131 SyncChangeList list = |
| 1133 MakeSyncChangeList(good_crx, specifics, SyncChange::ACTION_UPDATE); | 1132 MakeSyncChangeList(good_crx, specifics, SyncChange::ACTION_UPDATE); |
| 1134 | 1133 |
| 1135 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); | 1134 extension_sync_service()->ProcessSyncChanges(FROM_HERE, list); |
| 1136 EXPECT_FALSE(service()->IsExtensionEnabled(good_crx)); | 1135 EXPECT_FALSE(service()->IsExtensionEnabled(good_crx)); |
| 1137 EXPECT_TRUE(extensions::util::IsIncognitoEnabled(good_crx, profile())); | 1136 EXPECT_TRUE(extensions::util::IsIncognitoEnabled(good_crx, profile())); |
| 1138 | 1137 |
| 1139 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); | 1138 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); |
| 1140 } | 1139 } |
| 1141 | 1140 |
| 1142 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataVersionCheck) { | 1141 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataVersionCheck) { |
| 1143 InitializeExtensionServiceWithUpdater(); | 1142 InitializeExtensionServiceWithUpdater(); |
| 1144 extension_sync_service()->MergeDataAndStartSyncing( | 1143 extension_sync_service()->MergeDataAndStartSyncing( |
| 1145 syncer::EXTENSIONS, syncer::SyncDataList(), | 1144 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 1146 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 1145 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 1147 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 1146 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 1148 | 1147 |
| 1149 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); | 1148 InstallCRX(data_dir().AppendASCII("good.crx"), INSTALL_NEW); |
| 1150 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx)); | 1149 EXPECT_TRUE(service()->IsExtensionEnabled(good_crx)); |
| 1151 EXPECT_FALSE(extensions::util::IsIncognitoEnabled(good_crx, profile())); | 1150 EXPECT_FALSE(extensions::util::IsIncognitoEnabled(good_crx, profile())); |
| 1152 | 1151 |
| 1153 sync_pb::EntitySpecifics specifics; | 1152 sync_pb::EntitySpecifics specifics; |
| 1154 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); | 1153 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); |
| 1155 ext_specifics->set_id(good_crx); | 1154 ext_specifics->set_id(good_crx); |
| 1156 ext_specifics->set_enabled(true); | 1155 ext_specifics->set_enabled(true); |
| 1157 | 1156 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1218 EXPECT_EQ(new_version, extension_data->version()); | 1217 EXPECT_EQ(new_version, extension_data->version()); |
| 1219 } | 1218 } |
| 1220 | 1219 |
| 1221 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); | 1220 EXPECT_FALSE(service()->pending_extension_manager()->IsIdPending(good_crx)); |
| 1222 } | 1221 } |
| 1223 | 1222 |
| 1224 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataNotInstalled) { | 1223 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataNotInstalled) { |
| 1225 InitializeExtensionServiceWithUpdater(); | 1224 InitializeExtensionServiceWithUpdater(); |
| 1226 extension_sync_service()->MergeDataAndStartSyncing( | 1225 extension_sync_service()->MergeDataAndStartSyncing( |
| 1227 syncer::EXTENSIONS, syncer::SyncDataList(), | 1226 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 1228 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 1227 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 1229 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 1228 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 1230 | 1229 |
| 1231 sync_pb::EntitySpecifics specifics; | 1230 sync_pb::EntitySpecifics specifics; |
| 1232 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); | 1231 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); |
| 1233 ext_specifics->set_id(good_crx); | 1232 ext_specifics->set_id(good_crx); |
| 1234 ext_specifics->set_enabled(false); | 1233 ext_specifics->set_enabled(false); |
| 1235 ext_specifics->set_incognito_enabled(true); | 1234 ext_specifics->set_incognito_enabled(true); |
| 1236 ext_specifics->set_update_url("http://www.google.com/"); | 1235 ext_specifics->set_update_url("http://www.google.com/"); |
| 1237 ext_specifics->set_version("1.2.3.4"); | 1236 ext_specifics->set_version("1.2.3.4"); |
| 1238 | 1237 |
| 1239 SyncChangeList list = | 1238 SyncChangeList list = |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1252 EXPECT_EQ(ext_specifics->update_url(), info->update_url().spec()); | 1251 EXPECT_EQ(ext_specifics->update_url(), info->update_url().spec()); |
| 1253 EXPECT_TRUE(info->is_from_sync()); | 1252 EXPECT_TRUE(info->is_from_sync()); |
| 1254 EXPECT_EQ(Manifest::INTERNAL, info->install_source()); | 1253 EXPECT_EQ(Manifest::INTERNAL, info->install_source()); |
| 1255 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|. | 1254 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|. |
| 1256 } | 1255 } |
| 1257 | 1256 |
| 1258 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataEnableDisable) { | 1257 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataEnableDisable) { |
| 1259 InitializeEmptyExtensionService(); | 1258 InitializeEmptyExtensionService(); |
| 1260 extension_sync_service()->MergeDataAndStartSyncing( | 1259 extension_sync_service()->MergeDataAndStartSyncing( |
| 1261 syncer::EXTENSIONS, syncer::SyncDataList(), | 1260 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 1262 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 1261 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 1263 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 1262 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 1264 | 1263 |
| 1265 const ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); | 1264 const ExtensionPrefs* prefs = ExtensionPrefs::Get(profile()); |
| 1266 | 1265 |
| 1267 struct TestCase { | 1266 struct TestCase { |
| 1268 const char* name; // For failure output only. | 1267 const char* name; // For failure output only. |
| 1269 // Set of disable reasons before any Sync data comes in. If this is != 0, | 1268 // Set of disable reasons before any Sync data comes in. If this is != 0, |
| 1270 // the extension is disabled. | 1269 // the extension is disabled. |
| 1271 int previous_disable_reasons; | 1270 int previous_disable_reasons; |
| 1272 bool sync_enable; // The enabled flag coming in from Sync. | 1271 bool sync_enable; // The enabled flag coming in from Sync. |
| 1273 // The disable reason(s) coming in from Sync, or -1 for "not set". | 1272 // The disable reason(s) coming in from Sync, or -1 for "not set". |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1354 // Remove the extension again, so we can install it again for the next case. | 1353 // Remove the extension again, so we can install it again for the next case. |
| 1355 UninstallExtension(id, false, expect_enabled ? Extension::ENABLED | 1354 UninstallExtension(id, false, expect_enabled ? Extension::ENABLED |
| 1356 : Extension::DISABLED); | 1355 : Extension::DISABLED); |
| 1357 } | 1356 } |
| 1358 } | 1357 } |
| 1359 | 1358 |
| 1360 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataDeferredEnable) { | 1359 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataDeferredEnable) { |
| 1361 InitializeEmptyExtensionService(); | 1360 InitializeEmptyExtensionService(); |
| 1362 extension_sync_service()->MergeDataAndStartSyncing( | 1361 extension_sync_service()->MergeDataAndStartSyncing( |
| 1363 syncer::EXTENSIONS, syncer::SyncDataList(), | 1362 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 1364 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 1363 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 1365 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 1364 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 1366 | 1365 |
| 1367 base::FilePath base_path = data_dir().AppendASCII("permissions_increase"); | 1366 base::FilePath base_path = data_dir().AppendASCII("permissions_increase"); |
| 1368 base::FilePath pem_path = base_path.AppendASCII("permissions.pem"); | 1367 base::FilePath pem_path = base_path.AppendASCII("permissions.pem"); |
| 1369 | 1368 |
| 1370 base::FilePath path = base_path.AppendASCII("v1"); | 1369 base::FilePath path = base_path.AppendASCII("v1"); |
| 1371 const Extension* extension = PackAndInstallCRX(path, pem_path, INSTALL_NEW); | 1370 const Extension* extension = PackAndInstallCRX(path, pem_path, INSTALL_NEW); |
| 1372 // The extension must now be installed and enabled. | 1371 // The extension must now be installed and enabled. |
| 1373 ASSERT_TRUE(extension); | 1372 ASSERT_TRUE(extension); |
| 1374 ASSERT_TRUE(registry()->enabled_extensions().Contains(extension->id())); | 1373 ASSERT_TRUE(registry()->enabled_extensions().Contains(extension->id())); |
| 1375 | 1374 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1404 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataPermissionApproval) { | 1403 TEST_F(ExtensionServiceSyncTest, ProcessSyncDataPermissionApproval) { |
| 1405 // This is the update URL specified in the test extension. Setting it here is | 1404 // This is the update URL specified in the test extension. Setting it here is |
| 1406 // necessary to make it considered syncable. | 1405 // necessary to make it considered syncable. |
| 1407 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 1406 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| 1408 switches::kAppsGalleryUpdateURL, | 1407 switches::kAppsGalleryUpdateURL, |
| 1409 "http://localhost/autoupdate/updates.xml"); | 1408 "http://localhost/autoupdate/updates.xml"); |
| 1410 | 1409 |
| 1411 InitializeEmptyExtensionService(); | 1410 InitializeEmptyExtensionService(); |
| 1412 extension_sync_service()->MergeDataAndStartSyncing( | 1411 extension_sync_service()->MergeDataAndStartSyncing( |
| 1413 syncer::EXTENSIONS, syncer::SyncDataList(), | 1412 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 1414 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 1413 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 1415 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 1414 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 1416 | 1415 |
| 1417 const base::FilePath base_path = | 1416 const base::FilePath base_path = |
| 1418 data_dir().AppendASCII("permissions_increase"); | 1417 data_dir().AppendASCII("permissions_increase"); |
| 1419 const base::FilePath pem_path = base_path.AppendASCII("permissions.pem"); | 1418 const base::FilePath pem_path = base_path.AppendASCII("permissions.pem"); |
| 1420 const base::FilePath path_v1 = base_path.AppendASCII("v1"); | 1419 const base::FilePath path_v1 = base_path.AppendASCII("v1"); |
| 1421 const base::FilePath path_v2 = base_path.AppendASCII("v2"); | 1420 const base::FilePath path_v2 = base_path.AppendASCII("v2"); |
| 1422 | 1421 |
| 1423 base::ScopedTempDir crx_dir; | 1422 base::ScopedTempDir crx_dir; |
| 1424 ASSERT_TRUE(crx_dir.CreateUniqueTempDir()); | 1423 ASSERT_TRUE(crx_dir.CreateUniqueTempDir()); |
| 1425 const base::FilePath crx_path_v1 = crx_dir.path().AppendASCII("temp1.crx"); | 1424 const base::FilePath crx_path_v1 = crx_dir.path().AppendASCII("temp1.crx"); |
| (...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2315 UpdatePermissionsTestExtension(id, version2, ENABLED); | 2314 UpdatePermissionsTestExtension(id, version2, ENABLED); |
| 2316 // The extension should be enabled again. | 2315 // The extension should be enabled again. |
| 2317 EXPECT_TRUE(registry()->enabled_extensions().Contains(id)); | 2316 EXPECT_TRUE(registry()->enabled_extensions().Contains(id)); |
| 2318 EXPECT_FALSE(IsPendingCustodianApproval(id)); | 2317 EXPECT_FALSE(IsPendingCustodianApproval(id)); |
| 2319 } | 2318 } |
| 2320 | 2319 |
| 2321 TEST_F(ExtensionServiceSyncTest, SyncUninstallByCustodianSkipsPolicy) { | 2320 TEST_F(ExtensionServiceSyncTest, SyncUninstallByCustodianSkipsPolicy) { |
| 2322 InitializeEmptyExtensionService(); | 2321 InitializeEmptyExtensionService(); |
| 2323 extension_sync_service()->MergeDataAndStartSyncing( | 2322 extension_sync_service()->MergeDataAndStartSyncing( |
| 2324 syncer::EXTENSIONS, syncer::SyncDataList(), | 2323 syncer::EXTENSIONS, syncer::SyncDataList(), |
| 2325 base::WrapUnique(new syncer::FakeSyncChangeProcessor()), | 2324 base::MakeUnique<syncer::FakeSyncChangeProcessor>(), |
| 2326 base::WrapUnique(new syncer::SyncErrorFactoryMock())); | 2325 base::MakeUnique<syncer::SyncErrorFactoryMock>()); |
| 2327 | 2326 |
| 2328 extensions::util::SetWasInstalledByCustodian(good2048, profile(), true); | 2327 extensions::util::SetWasInstalledByCustodian(good2048, profile(), true); |
| 2329 // Install two extensions. | 2328 // Install two extensions. |
| 2330 base::FilePath path1 = data_dir().AppendASCII("good.crx"); | 2329 base::FilePath path1 = data_dir().AppendASCII("good.crx"); |
| 2331 base::FilePath path2 = data_dir().AppendASCII("good2048.crx"); | 2330 base::FilePath path2 = data_dir().AppendASCII("good2048.crx"); |
| 2332 const Extension* extensions[] = { | 2331 const Extension* extensions[] = { |
| 2333 InstallCRX(path1, INSTALL_NEW), | 2332 InstallCRX(path1, INSTALL_NEW), |
| 2334 InstallCRX(path2, INSTALL_NEW) | 2333 InstallCRX(path2, INSTALL_NEW) |
| 2335 }; | 2334 }; |
| 2336 | 2335 |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2511 break; | 2510 break; |
| 2512 } | 2511 } |
| 2513 } | 2512 } |
| 2514 } | 2513 } |
| 2515 EXPECT_TRUE(found_delete); | 2514 EXPECT_TRUE(found_delete); |
| 2516 | 2515 |
| 2517 // Make sure there is one extension, and there are no more apps. | 2516 // Make sure there is one extension, and there are no more apps. |
| 2518 EXPECT_EQ(1u, extensions_processor.data().size()); | 2517 EXPECT_EQ(1u, extensions_processor.data().size()); |
| 2519 EXPECT_TRUE(apps_processor.data().empty()); | 2518 EXPECT_TRUE(apps_processor.data().empty()); |
| 2520 } | 2519 } |
| OLD | NEW |