Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: chrome/browser/extensions/extension_service_unittest.cc

Issue 69683002: Merge 233885 "Revert 231221 - "Remove enabled/disabled state fro..." (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1700/src/
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/extensions/extension_sync_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698