OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 "chrome/browser/extensions/extension_service_unittest.h" | 5 #include "chrome/browser/extensions/extension_service_unittest.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 5261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5272 extension_sync_service_->MergeDataAndStartSyncing( | 5272 extension_sync_service_->MergeDataAndStartSyncing( |
5273 syncer::EXTENSIONS, syncer::SyncDataList(), | 5273 syncer::EXTENSIONS, syncer::SyncDataList(), |
5274 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 5274 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
5275 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 5275 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
5276 path = data_dir_.AppendASCII("page_action.crx"); | 5276 path = data_dir_.AppendASCII("page_action.crx"); |
5277 InstallCRX(path, INSTALL_NEW); | 5277 InstallCRX(path, INSTALL_NEW); |
5278 EXPECT_FALSE(flare_was_called); | 5278 EXPECT_FALSE(flare_was_called); |
5279 ASSERT_EQ(syncer::UNSPECIFIED, triggered_type); | 5279 ASSERT_EQ(syncer::UNSPECIFIED, triggered_type); |
5280 } | 5280 } |
5281 | 5281 |
| 5282 TEST_F(ExtensionServiceTest, DisableExtensionFromSync) { |
| 5283 // Start the extensions service with one external extension already installed. |
| 5284 base::FilePath source_install_dir = data_dir_ |
| 5285 .AppendASCII("good") |
| 5286 .AppendASCII("Extensions"); |
| 5287 base::FilePath pref_path = source_install_dir |
| 5288 .DirName() |
| 5289 .AppendASCII("Preferences"); |
| 5290 |
| 5291 InitializeInstalledExtensionService(pref_path, source_install_dir); |
| 5292 InitializeExtensionSyncService(); |
| 5293 |
| 5294 // The user has enabled sync. |
| 5295 ProfileSyncService* sync_service = |
| 5296 ProfileSyncServiceFactory::GetForProfile(profile_.get()); |
| 5297 sync_service->SetSyncSetupCompleted(); |
| 5298 |
| 5299 service_->Init(); |
| 5300 ASSERT_TRUE(service_->is_ready()); |
| 5301 |
| 5302 ASSERT_EQ(3u, loaded_.size()); |
| 5303 |
| 5304 // We start enabled. |
| 5305 const Extension* extension = service_->GetExtensionById(good0, true); |
| 5306 ASSERT_TRUE(extension); |
| 5307 ASSERT_TRUE(service_->IsExtensionEnabled(good0)); |
| 5308 extensions::ExtensionSyncData disable_good_crx(*extension, false, false); |
| 5309 |
| 5310 // Then sync data arrives telling us to disable |good0|. |
| 5311 syncer::SyncDataList sync_data; |
| 5312 sync_data.push_back(disable_good_crx.GetSyncData()); |
| 5313 extension_sync_service_->MergeDataAndStartSyncing( |
| 5314 syncer::EXTENSIONS, sync_data, |
| 5315 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
| 5316 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 5317 ASSERT_FALSE(service_->IsExtensionEnabled(good0)); |
| 5318 } |
| 5319 |
| 5320 TEST_F(ExtensionServiceTest, DontDisableExtensionWithPendingEnableFromSync) { |
| 5321 // Start the extensions service with one external extension already installed. |
| 5322 base::FilePath source_install_dir = data_dir_ |
| 5323 .AppendASCII("good") |
| 5324 .AppendASCII("Extensions"); |
| 5325 base::FilePath pref_path = source_install_dir |
| 5326 .DirName() |
| 5327 .AppendASCII("Preferences"); |
| 5328 |
| 5329 InitializeInstalledExtensionService(pref_path, source_install_dir); |
| 5330 InitializeExtensionSyncService(); |
| 5331 |
| 5332 // The user has enabled sync. |
| 5333 ProfileSyncService* sync_service = |
| 5334 ProfileSyncServiceFactory::GetForProfile(profile_.get()); |
| 5335 sync_service->SetSyncSetupCompleted(); |
| 5336 |
| 5337 service_->Init(); |
| 5338 ASSERT_TRUE(service_->is_ready()); |
| 5339 ASSERT_EQ(3u, loaded_.size()); |
| 5340 |
| 5341 const Extension* extension = service_->GetExtensionById(good0, true); |
| 5342 ASSERT_TRUE(service_->IsExtensionEnabled(good0)); |
| 5343 |
| 5344 // Disable extension before first sync data arrives. |
| 5345 service_->DisableExtension(good0, Extension::DISABLE_USER_ACTION); |
| 5346 ASSERT_FALSE(service_->IsExtensionEnabled(good0)); |
| 5347 |
| 5348 // Enable extension - this is now the most recent state. |
| 5349 service_->EnableExtension(good0); |
| 5350 ASSERT_TRUE(service_->IsExtensionEnabled(good0)); |
| 5351 |
| 5352 // Now sync data comes in that says to disable good0. This should be |
| 5353 // ignored. |
| 5354 extensions::ExtensionSyncData disable_good_crx(*extension, false, false); |
| 5355 syncer::SyncDataList sync_data; |
| 5356 sync_data.push_back(disable_good_crx.GetSyncData()); |
| 5357 extension_sync_service_->MergeDataAndStartSyncing( |
| 5358 syncer::EXTENSIONS, sync_data, |
| 5359 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
| 5360 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
| 5361 |
| 5362 // The extension was enabled locally before the sync data arrived, so it |
| 5363 // should still be enabled now. |
| 5364 ASSERT_TRUE(service_->IsExtensionEnabled(good0)); |
| 5365 } |
| 5366 |
5282 TEST_F(ExtensionServiceTest, GetSyncData) { | 5367 TEST_F(ExtensionServiceTest, GetSyncData) { |
5283 InitializeEmptyExtensionService(); | 5368 InitializeEmptyExtensionService(); |
5284 InitializeExtensionSyncService(); | 5369 InitializeExtensionSyncService(); |
5285 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); | 5370 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); |
5286 const Extension* extension = service_->GetInstalledExtension(good_crx); | 5371 const Extension* extension = service_->GetInstalledExtension(good_crx); |
5287 ASSERT_TRUE(extension); | 5372 ASSERT_TRUE(extension); |
5288 | 5373 |
5289 extension_sync_service_->MergeDataAndStartSyncing( | 5374 extension_sync_service_->MergeDataAndStartSyncing( |
5290 syncer::EXTENSIONS, syncer::SyncDataList(), | 5375 syncer::EXTENSIONS, syncer::SyncDataList(), |
5291 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 5376 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
5292 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 5377 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
5293 | 5378 |
5294 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( | 5379 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( |
5295 syncer::EXTENSIONS); | 5380 syncer::EXTENSIONS); |
5296 ASSERT_EQ(list.size(), 1U); | 5381 ASSERT_EQ(list.size(), 1U); |
5297 extensions::ExtensionSyncData data(list[0]); | 5382 extensions::ExtensionSyncData data(list[0]); |
5298 EXPECT_EQ(extension->id(), data.id()); | 5383 EXPECT_EQ(extension->id(), data.id()); |
5299 EXPECT_FALSE(data.uninstalled()); | 5384 EXPECT_FALSE(data.uninstalled()); |
| 5385 EXPECT_EQ(service_->IsExtensionEnabled(good_crx), data.enabled()); |
5300 EXPECT_EQ(extension_util::IsIncognitoEnabled(good_crx, service_), | 5386 EXPECT_EQ(extension_util::IsIncognitoEnabled(good_crx, service_), |
5301 data.incognito_enabled()); | 5387 data.incognito_enabled()); |
5302 EXPECT_TRUE(data.version().Equals(*extension->version())); | 5388 EXPECT_TRUE(data.version().Equals(*extension->version())); |
5303 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), | 5389 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), |
5304 data.update_url()); | 5390 data.update_url()); |
5305 EXPECT_EQ(extension->name(), data.name()); | 5391 EXPECT_EQ(extension->name(), data.name()); |
5306 } | 5392 } |
5307 | 5393 |
5308 TEST_F(ExtensionServiceTest, GetSyncDataTerminated) { | 5394 TEST_F(ExtensionServiceTest, GetSyncDataTerminated) { |
5309 InitializeEmptyExtensionService(); | 5395 InitializeEmptyExtensionService(); |
5310 InitializeExtensionSyncService(); | 5396 InitializeExtensionSyncService(); |
5311 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); | 5397 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); |
5312 TerminateExtension(good_crx); | 5398 TerminateExtension(good_crx); |
5313 const Extension* extension = service_->GetInstalledExtension(good_crx); | 5399 const Extension* extension = service_->GetInstalledExtension(good_crx); |
5314 ASSERT_TRUE(extension); | 5400 ASSERT_TRUE(extension); |
5315 | 5401 |
5316 TestSyncProcessorStub processor; | 5402 TestSyncProcessorStub processor; |
5317 extension_sync_service_->MergeDataAndStartSyncing( | 5403 extension_sync_service_->MergeDataAndStartSyncing( |
5318 syncer::EXTENSIONS, syncer::SyncDataList(), | 5404 syncer::EXTENSIONS, syncer::SyncDataList(), |
5319 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 5405 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
5320 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 5406 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
5321 | 5407 |
5322 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( | 5408 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( |
5323 syncer::EXTENSIONS); | 5409 syncer::EXTENSIONS); |
5324 ASSERT_EQ(list.size(), 1U); | 5410 ASSERT_EQ(list.size(), 1U); |
5325 extensions::ExtensionSyncData data(list[0]); | 5411 extensions::ExtensionSyncData data(list[0]); |
5326 EXPECT_EQ(extension->id(), data.id()); | 5412 EXPECT_EQ(extension->id(), data.id()); |
5327 EXPECT_FALSE(data.uninstalled()); | 5413 EXPECT_FALSE(data.uninstalled()); |
| 5414 EXPECT_EQ(service_->IsExtensionEnabled(good_crx), data.enabled()); |
5328 EXPECT_EQ(extension_util::IsIncognitoEnabled(good_crx, service_), | 5415 EXPECT_EQ(extension_util::IsIncognitoEnabled(good_crx, service_), |
5329 data.incognito_enabled()); | 5416 data.incognito_enabled()); |
5330 EXPECT_TRUE(data.version().Equals(*extension->version())); | 5417 EXPECT_TRUE(data.version().Equals(*extension->version())); |
5331 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), | 5418 EXPECT_EQ(extensions::ManifestURL::GetUpdateURL(extension), |
5332 data.update_url()); | 5419 data.update_url()); |
5333 EXPECT_EQ(extension->name(), data.name()); | 5420 EXPECT_EQ(extension->name(), data.name()); |
5334 } | 5421 } |
5335 | 5422 |
5336 TEST_F(ExtensionServiceTest, GetSyncDataFilter) { | 5423 TEST_F(ExtensionServiceTest, GetSyncDataFilter) { |
5337 InitializeEmptyExtensionService(); | 5424 InitializeEmptyExtensionService(); |
(...skipping 25 matching lines...) Expand all Loading... |
5363 extension_sync_service_->MergeDataAndStartSyncing( | 5450 extension_sync_service_->MergeDataAndStartSyncing( |
5364 syncer::EXTENSIONS, syncer::SyncDataList(), | 5451 syncer::EXTENSIONS, syncer::SyncDataList(), |
5365 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 5452 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
5366 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 5453 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
5367 | 5454 |
5368 { | 5455 { |
5369 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( | 5456 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( |
5370 syncer::EXTENSIONS); | 5457 syncer::EXTENSIONS); |
5371 ASSERT_EQ(list.size(), 1U); | 5458 ASSERT_EQ(list.size(), 1U); |
5372 extensions::ExtensionSyncData data(list[0]); | 5459 extensions::ExtensionSyncData data(list[0]); |
| 5460 EXPECT_TRUE(data.enabled()); |
| 5461 EXPECT_FALSE(data.incognito_enabled()); |
| 5462 } |
| 5463 |
| 5464 service_->DisableExtension(good_crx, Extension::DISABLE_USER_ACTION); |
| 5465 { |
| 5466 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( |
| 5467 syncer::EXTENSIONS); |
| 5468 ASSERT_EQ(list.size(), 1U); |
| 5469 extensions::ExtensionSyncData data(list[0]); |
| 5470 EXPECT_FALSE(data.enabled()); |
5373 EXPECT_FALSE(data.incognito_enabled()); | 5471 EXPECT_FALSE(data.incognito_enabled()); |
5374 } | 5472 } |
5375 | 5473 |
5376 extension_util::SetIsIncognitoEnabled(good_crx, service_, true); | 5474 extension_util::SetIsIncognitoEnabled(good_crx, service_, true); |
5377 { | 5475 { |
5378 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( | 5476 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( |
5379 syncer::EXTENSIONS); | 5477 syncer::EXTENSIONS); |
5380 ASSERT_EQ(list.size(), 1U); | 5478 ASSERT_EQ(list.size(), 1U); |
5381 extensions::ExtensionSyncData data(list[0]); | 5479 extensions::ExtensionSyncData data(list[0]); |
| 5480 EXPECT_FALSE(data.enabled()); |
| 5481 EXPECT_TRUE(data.incognito_enabled()); |
| 5482 } |
| 5483 |
| 5484 service_->EnableExtension(good_crx); |
| 5485 { |
| 5486 syncer::SyncDataList list = extension_sync_service_->GetAllSyncData( |
| 5487 syncer::EXTENSIONS); |
| 5488 ASSERT_EQ(list.size(), 1U); |
| 5489 extensions::ExtensionSyncData data(list[0]); |
| 5490 EXPECT_TRUE(data.enabled()); |
5382 EXPECT_TRUE(data.incognito_enabled()); | 5491 EXPECT_TRUE(data.incognito_enabled()); |
5383 } | 5492 } |
5384 } | 5493 } |
5385 | 5494 |
5386 TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) { | 5495 TEST_F(ExtensionServiceTest, SyncForUninstalledExternalExtension) { |
5387 InitializeEmptyExtensionService(); | 5496 InitializeEmptyExtensionService(); |
5388 InitializeExtensionSyncService(); | 5497 InitializeExtensionSyncService(); |
5389 InstallCRXWithLocation(data_dir_.AppendASCII("good.crx"), | 5498 InstallCRXWithLocation(data_dir_.AppendASCII("good.crx"), |
5390 Manifest::EXTERNAL_PREF, INSTALL_NEW); | 5499 Manifest::EXTERNAL_PREF, INSTALL_NEW); |
5391 const Extension* extension = service_->GetInstalledExtension(good_crx); | 5500 const Extension* extension = service_->GetInstalledExtension(good_crx); |
5392 ASSERT_TRUE(extension); | 5501 ASSERT_TRUE(extension); |
5393 | 5502 |
5394 TestSyncProcessorStub processor; | 5503 TestSyncProcessorStub processor; |
5395 extension_sync_service_->MergeDataAndStartSyncing( | 5504 extension_sync_service_->MergeDataAndStartSyncing( |
5396 syncer::EXTENSIONS, syncer::SyncDataList(), | 5505 syncer::EXTENSIONS, syncer::SyncDataList(), |
5397 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 5506 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
5398 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 5507 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
5399 | 5508 |
5400 UninstallExtension(good_crx, false); | 5509 UninstallExtension(good_crx, false); |
5401 EXPECT_TRUE(service_->IsExternalExtensionUninstalled(good_crx)); | 5510 EXPECT_TRUE(service_->IsExternalExtensionUninstalled(good_crx)); |
5402 | 5511 |
5403 sync_pb::EntitySpecifics specifics; | 5512 sync_pb::EntitySpecifics specifics; |
5404 sync_pb::AppSpecifics* app_specifics = specifics.mutable_app(); | 5513 sync_pb::AppSpecifics* app_specifics = specifics.mutable_app(); |
5405 sync_pb::ExtensionSpecifics* extension_specifics = | 5514 sync_pb::ExtensionSpecifics* extension_specifics = |
5406 app_specifics->mutable_extension(); | 5515 app_specifics->mutable_extension(); |
5407 extension_specifics->set_id(good_crx); | 5516 extension_specifics->set_id(good_crx); |
5408 extension_specifics->set_version("1.0"); | 5517 extension_specifics->set_version("1.0"); |
| 5518 extension_specifics->set_enabled(true); |
5409 | 5519 |
5410 syncer::SyncData sync_data = | 5520 syncer::SyncData sync_data = |
5411 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); | 5521 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
5412 syncer::SyncChange sync_change(FROM_HERE, | 5522 syncer::SyncChange sync_change(FROM_HERE, |
5413 syncer::SyncChange::ACTION_UPDATE, | 5523 syncer::SyncChange::ACTION_UPDATE, |
5414 sync_data); | 5524 sync_data); |
5415 syncer::SyncChangeList list(1); | 5525 syncer::SyncChangeList list(1); |
5416 list[0] = sync_change; | 5526 list[0] = sync_change; |
5417 | 5527 |
5418 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 5528 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5591 | 5701 |
5592 sync_pb::EntitySpecifics specifics; | 5702 sync_pb::EntitySpecifics specifics; |
5593 sync_pb::AppSpecifics* app_specifics = specifics.mutable_app(); | 5703 sync_pb::AppSpecifics* app_specifics = specifics.mutable_app(); |
5594 sync_pb::ExtensionSpecifics* extension_specifics = | 5704 sync_pb::ExtensionSpecifics* extension_specifics = |
5595 app_specifics->mutable_extension(); | 5705 app_specifics->mutable_extension(); |
5596 extension_specifics->set_id(good_crx); | 5706 extension_specifics->set_id(good_crx); |
5597 extension_specifics->set_version( | 5707 extension_specifics->set_version( |
5598 service_->GetInstalledExtension(good_crx)->version()->GetString()); | 5708 service_->GetInstalledExtension(good_crx)->version()->GetString()); |
5599 | 5709 |
5600 { | 5710 { |
| 5711 extension_specifics->set_enabled(true); |
5601 syncer::SyncData sync_data = | 5712 syncer::SyncData sync_data = |
5602 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); | 5713 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
5603 syncer::SyncChange sync_change(FROM_HERE, | 5714 syncer::SyncChange sync_change(FROM_HERE, |
5604 syncer::SyncChange::ACTION_DELETE, | 5715 syncer::SyncChange::ACTION_DELETE, |
5605 sync_data); | 5716 sync_data); |
5606 syncer::SyncChangeList list(1); | 5717 syncer::SyncChangeList list(1); |
5607 list[0] = sync_change; | 5718 list[0] = sync_change; |
5608 | 5719 |
5609 // Should do nothing | 5720 // Should do nothing |
5610 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 5721 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
5611 EXPECT_TRUE(service_->GetExtensionById(good_crx, true)); | 5722 EXPECT_TRUE(service_->GetExtensionById(good_crx, true)); |
5612 } | 5723 } |
5613 | 5724 |
5614 { | 5725 { |
| 5726 extension_specifics->set_enabled(false); |
5615 syncer::SyncData sync_data = | 5727 syncer::SyncData sync_data = |
5616 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); | 5728 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
5617 syncer::SyncChange sync_change(FROM_HERE, | 5729 syncer::SyncChange sync_change(FROM_HERE, |
5618 syncer::SyncChange::ACTION_UPDATE, | 5730 syncer::SyncChange::ACTION_UPDATE, |
5619 sync_data); | 5731 sync_data); |
5620 syncer::SyncChangeList list(1); | 5732 syncer::SyncChangeList list(1); |
5621 list[0] = sync_change; | 5733 list[0] = sync_change; |
5622 | 5734 |
5623 // Should again do nothing. | 5735 // Should again do nothing. |
5624 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 5736 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
(...skipping 13 matching lines...) Expand all Loading... |
5638 | 5750 |
5639 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); | 5751 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); |
5640 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); | 5752 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); |
5641 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); | 5753 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
5642 | 5754 |
5643 sync_pb::EntitySpecifics specifics; | 5755 sync_pb::EntitySpecifics specifics; |
5644 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); | 5756 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); |
5645 ext_specifics->set_id(good_crx); | 5757 ext_specifics->set_id(good_crx); |
5646 ext_specifics->set_version( | 5758 ext_specifics->set_version( |
5647 service_->GetInstalledExtension(good_crx)->version()->GetString()); | 5759 service_->GetInstalledExtension(good_crx)->version()->GetString()); |
| 5760 ext_specifics->set_enabled(false); |
5648 | 5761 |
5649 { | 5762 { |
5650 syncer::SyncData sync_data = | 5763 syncer::SyncData sync_data = |
5651 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); | 5764 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
5652 syncer::SyncChange sync_change(FROM_HERE, | 5765 syncer::SyncChange sync_change(FROM_HERE, |
5653 syncer::SyncChange::ACTION_UPDATE, | 5766 syncer::SyncChange::ACTION_UPDATE, |
5654 sync_data); | 5767 sync_data); |
5655 syncer::SyncChangeList list(1); | 5768 syncer::SyncChangeList list(1); |
5656 list[0] = sync_change; | 5769 list[0] = sync_change; |
5657 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 5770 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
| 5771 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); |
5658 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); | 5772 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
5659 } | 5773 } |
5660 | 5774 |
5661 { | 5775 { |
5662 // Note: enabled is a deprecated field. Although clients may set it, | 5776 ext_specifics->set_enabled(true); |
5663 // we should ignore it. | |
5664 ext_specifics->set_enabled(false); | |
5665 ext_specifics->set_incognito_enabled(true); | 5777 ext_specifics->set_incognito_enabled(true); |
5666 syncer::SyncData sync_data = | 5778 syncer::SyncData sync_data = |
5667 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); | 5779 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
5668 syncer::SyncChange sync_change(FROM_HERE, | 5780 syncer::SyncChange sync_change(FROM_HERE, |
5669 syncer::SyncChange::ACTION_UPDATE, | 5781 syncer::SyncChange::ACTION_UPDATE, |
5670 sync_data); | 5782 sync_data); |
5671 syncer::SyncChangeList list(1); | 5783 syncer::SyncChangeList list(1); |
5672 list[0] = sync_change; | 5784 list[0] = sync_change; |
5673 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 5785 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
5674 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); | 5786 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); |
5675 EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_)); | 5787 EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
5676 } | 5788 } |
5677 | 5789 |
| 5790 { |
| 5791 ext_specifics->set_enabled(false); |
| 5792 ext_specifics->set_incognito_enabled(true); |
| 5793 syncer::SyncData sync_data = |
| 5794 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
| 5795 syncer::SyncChange sync_change(FROM_HERE, |
| 5796 syncer::SyncChange::ACTION_UPDATE, |
| 5797 sync_data); |
| 5798 syncer::SyncChangeList list(1); |
| 5799 list[0] = sync_change; |
| 5800 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
| 5801 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); |
| 5802 EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
| 5803 } |
| 5804 |
5678 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx)); | 5805 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx)); |
5679 } | 5806 } |
5680 | 5807 |
5681 TEST_F(ExtensionServiceTest, ProcessSyncDataTerminatedExtension) { | 5808 TEST_F(ExtensionServiceTest, ProcessSyncDataTerminatedExtension) { |
5682 InitializeExtensionServiceWithUpdater(); | 5809 InitializeExtensionServiceWithUpdater(); |
5683 InitializeExtensionSyncService(); | 5810 InitializeExtensionSyncService(); |
5684 TestSyncProcessorStub processor; | 5811 TestSyncProcessorStub processor; |
5685 extension_sync_service_->MergeDataAndStartSyncing( | 5812 extension_sync_service_->MergeDataAndStartSyncing( |
5686 syncer::EXTENSIONS, syncer::SyncDataList(), | 5813 syncer::EXTENSIONS, syncer::SyncDataList(), |
5687 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 5814 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
5688 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 5815 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
5689 | 5816 |
5690 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); | 5817 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); |
5691 TerminateExtension(good_crx); | 5818 TerminateExtension(good_crx); |
5692 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); | 5819 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); |
5693 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); | 5820 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
5694 | 5821 |
5695 sync_pb::EntitySpecifics specifics; | 5822 sync_pb::EntitySpecifics specifics; |
5696 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); | 5823 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); |
5697 ext_specifics->set_id(good_crx); | 5824 ext_specifics->set_id(good_crx); |
5698 ext_specifics->set_version( | 5825 ext_specifics->set_version( |
5699 service_->GetInstalledExtension(good_crx)->version()->GetString()); | 5826 service_->GetInstalledExtension(good_crx)->version()->GetString()); |
| 5827 ext_specifics->set_enabled(false); |
5700 ext_specifics->set_incognito_enabled(true); | 5828 ext_specifics->set_incognito_enabled(true); |
5701 syncer::SyncData sync_data = | 5829 syncer::SyncData sync_data = |
5702 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); | 5830 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
5703 syncer::SyncChange sync_change(FROM_HERE, | 5831 syncer::SyncChange sync_change(FROM_HERE, |
5704 syncer::SyncChange::ACTION_UPDATE, | 5832 syncer::SyncChange::ACTION_UPDATE, |
5705 sync_data); | 5833 sync_data); |
5706 syncer::SyncChangeList list(1); | 5834 syncer::SyncChangeList list(1); |
5707 list[0] = sync_change; | 5835 list[0] = sync_change; |
5708 | 5836 |
5709 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 5837 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
| 5838 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); |
5710 EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_)); | 5839 EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
5711 | 5840 |
5712 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx)); | 5841 EXPECT_FALSE(service_->pending_extension_manager()->IsIdPending(good_crx)); |
5713 } | 5842 } |
5714 | 5843 |
5715 TEST_F(ExtensionServiceTest, ProcessSyncDataVersionCheck) { | 5844 TEST_F(ExtensionServiceTest, ProcessSyncDataVersionCheck) { |
5716 InitializeExtensionServiceWithUpdater(); | 5845 InitializeExtensionServiceWithUpdater(); |
5717 InitializeExtensionSyncService(); | 5846 InitializeExtensionSyncService(); |
5718 TestSyncProcessorStub processor; | 5847 TestSyncProcessorStub processor; |
5719 extension_sync_service_->MergeDataAndStartSyncing( | 5848 extension_sync_service_->MergeDataAndStartSyncing( |
5720 syncer::EXTENSIONS, syncer::SyncDataList(), | 5849 syncer::EXTENSIONS, syncer::SyncDataList(), |
5721 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 5850 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
5722 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 5851 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
5723 | 5852 |
5724 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); | 5853 InstallCRX(data_dir_.AppendASCII("good.crx"), INSTALL_NEW); |
5725 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); | 5854 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); |
5726 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); | 5855 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
5727 | 5856 |
5728 sync_pb::EntitySpecifics specifics; | 5857 sync_pb::EntitySpecifics specifics; |
5729 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); | 5858 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); |
5730 ext_specifics->set_id(good_crx); | 5859 ext_specifics->set_id(good_crx); |
| 5860 ext_specifics->set_enabled(true); |
5731 | 5861 |
5732 { | 5862 { |
5733 ext_specifics->set_version( | 5863 ext_specifics->set_version( |
5734 service_->GetInstalledExtension(good_crx)->version()->GetString()); | 5864 service_->GetInstalledExtension(good_crx)->version()->GetString()); |
5735 syncer::SyncData sync_data = | 5865 syncer::SyncData sync_data = |
5736 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); | 5866 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
5737 syncer::SyncChange sync_change(FROM_HERE, | 5867 syncer::SyncChange sync_change(FROM_HERE, |
5738 syncer::SyncChange::ACTION_UPDATE, | 5868 syncer::SyncChange::ACTION_UPDATE, |
5739 sync_data); | 5869 sync_data); |
5740 syncer::SyncChangeList list(1); | 5870 syncer::SyncChangeList list(1); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5784 InitializeExtensionSyncService(); | 5914 InitializeExtensionSyncService(); |
5785 TestSyncProcessorStub processor; | 5915 TestSyncProcessorStub processor; |
5786 extension_sync_service_->MergeDataAndStartSyncing( | 5916 extension_sync_service_->MergeDataAndStartSyncing( |
5787 syncer::EXTENSIONS, syncer::SyncDataList(), | 5917 syncer::EXTENSIONS, syncer::SyncDataList(), |
5788 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), | 5918 scoped_ptr<syncer::SyncChangeProcessor>(new TestSyncProcessorStub), |
5789 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); | 5919 scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock())); |
5790 | 5920 |
5791 sync_pb::EntitySpecifics specifics; | 5921 sync_pb::EntitySpecifics specifics; |
5792 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); | 5922 sync_pb::ExtensionSpecifics* ext_specifics = specifics.mutable_extension(); |
5793 ext_specifics->set_id(good_crx); | 5923 ext_specifics->set_id(good_crx); |
| 5924 ext_specifics->set_enabled(false); |
5794 ext_specifics->set_incognito_enabled(true); | 5925 ext_specifics->set_incognito_enabled(true); |
5795 ext_specifics->set_update_url("http://www.google.com/"); | 5926 ext_specifics->set_update_url("http://www.google.com/"); |
5796 ext_specifics->set_version("1.2.3.4"); | 5927 ext_specifics->set_version("1.2.3.4"); |
5797 syncer::SyncData sync_data = | 5928 syncer::SyncData sync_data = |
5798 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); | 5929 syncer::SyncData::CreateLocalData(good_crx, "Name", specifics); |
5799 syncer::SyncChange sync_change(FROM_HERE, | 5930 syncer::SyncChange sync_change(FROM_HERE, |
5800 syncer::SyncChange::ACTION_UPDATE, | 5931 syncer::SyncChange::ACTION_UPDATE, |
5801 sync_data); | 5932 sync_data); |
5802 syncer::SyncChangeList list(1); | 5933 syncer::SyncChangeList list(1); |
5803 list[0] = sync_change; | 5934 list[0] = sync_change; |
5804 | 5935 |
5805 | 5936 |
5806 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); | 5937 EXPECT_TRUE(service_->IsExtensionEnabled(good_crx)); |
5807 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); | 5938 EXPECT_FALSE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
5808 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); | 5939 extension_sync_service_->ProcessSyncChanges(FROM_HERE, list); |
5809 EXPECT_TRUE(service_->updater()->WillCheckSoon()); | 5940 EXPECT_TRUE(service_->updater()->WillCheckSoon()); |
| 5941 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); |
5810 EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_)); | 5942 EXPECT_TRUE(extension_util::IsIncognitoEnabled(good_crx, service_)); |
5811 | 5943 |
5812 const extensions::PendingExtensionInfo* info; | 5944 const extensions::PendingExtensionInfo* info; |
5813 EXPECT_TRUE((info = service_->pending_extension_manager()-> | 5945 EXPECT_TRUE((info = service_->pending_extension_manager()-> |
5814 GetById(good_crx))); | 5946 GetById(good_crx))); |
5815 EXPECT_EQ(ext_specifics->update_url(), info->update_url().spec()); | 5947 EXPECT_EQ(ext_specifics->update_url(), info->update_url().spec()); |
5816 EXPECT_TRUE(info->is_from_sync()); | 5948 EXPECT_TRUE(info->is_from_sync()); |
5817 EXPECT_TRUE(info->install_silently()); | 5949 EXPECT_TRUE(info->install_silently()); |
5818 EXPECT_EQ(Manifest::INTERNAL, info->install_source()); | 5950 EXPECT_EQ(Manifest::INTERNAL, info->install_source()); |
5819 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|. | 5951 // TODO(akalin): Figure out a way to test |info.ShouldAllowInstall()|. |
(...skipping 714 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6534 // ReconcileKnownDisabled(). | 6666 // ReconcileKnownDisabled(). |
6535 service_->EnableExtension(good2); | 6667 service_->EnableExtension(good2); |
6536 service_->ReconcileKnownDisabled(); | 6668 service_->ReconcileKnownDisabled(); |
6537 expected_extensions.insert(good2); | 6669 expected_extensions.insert(good2); |
6538 expected_disabled_extensions.erase(good2); | 6670 expected_disabled_extensions.erase(good2); |
6539 | 6671 |
6540 EXPECT_EQ(expected_extensions, service_->extensions()->GetIDs()); | 6672 EXPECT_EQ(expected_extensions, service_->extensions()->GetIDs()); |
6541 EXPECT_EQ(expected_disabled_extensions, | 6673 EXPECT_EQ(expected_disabled_extensions, |
6542 service_->disabled_extensions()->GetIDs()); | 6674 service_->disabled_extensions()->GetIDs()); |
6543 } | 6675 } |
OLD | NEW |