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

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

Issue 313173003: Revert of Resubmit: Refactor external_install_ui (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 6 months 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 29 matching lines...) Expand all
40 #include "chrome/browser/extensions/extension_creator.h" 40 #include "chrome/browser/extensions/extension_creator.h"
41 #include "chrome/browser/extensions/extension_error_reporter.h" 41 #include "chrome/browser/extensions/extension_error_reporter.h"
42 #include "chrome/browser/extensions/extension_error_ui.h" 42 #include "chrome/browser/extensions/extension_error_ui.h"
43 #include "chrome/browser/extensions/extension_garbage_collector_factory.h" 43 #include "chrome/browser/extensions/extension_garbage_collector_factory.h"
44 #include "chrome/browser/extensions/extension_notification_observer.h" 44 #include "chrome/browser/extensions/extension_notification_observer.h"
45 #include "chrome/browser/extensions/extension_service.h" 45 #include "chrome/browser/extensions/extension_service.h"
46 #include "chrome/browser/extensions/extension_special_storage_policy.h" 46 #include "chrome/browser/extensions/extension_special_storage_policy.h"
47 #include "chrome/browser/extensions/extension_sync_data.h" 47 #include "chrome/browser/extensions/extension_sync_data.h"
48 #include "chrome/browser/extensions/extension_sync_service.h" 48 #include "chrome/browser/extensions/extension_sync_service.h"
49 #include "chrome/browser/extensions/extension_util.h" 49 #include "chrome/browser/extensions/extension_util.h"
50 #include "chrome/browser/extensions/external_install_error.h" 50 #include "chrome/browser/extensions/external_install_ui.h"
51 #include "chrome/browser/extensions/external_install_manager.h"
52 #include "chrome/browser/extensions/external_policy_loader.h" 51 #include "chrome/browser/extensions/external_policy_loader.h"
53 #include "chrome/browser/extensions/external_pref_loader.h" 52 #include "chrome/browser/extensions/external_pref_loader.h"
54 #include "chrome/browser/extensions/external_provider_impl.h" 53 #include "chrome/browser/extensions/external_provider_impl.h"
55 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h" 54 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h"
56 #include "chrome/browser/extensions/install_observer.h" 55 #include "chrome/browser/extensions/install_observer.h"
57 #include "chrome/browser/extensions/install_tracker.h" 56 #include "chrome/browser/extensions/install_tracker.h"
58 #include "chrome/browser/extensions/install_tracker_factory.h" 57 #include "chrome/browser/extensions/install_tracker_factory.h"
59 #include "chrome/browser/extensions/installed_loader.h" 58 #include "chrome/browser/extensions/installed_loader.h"
60 #include "chrome/browser/extensions/pack_extension_job.h" 59 #include "chrome/browser/extensions/pack_extension_job.h"
61 #include "chrome/browser/extensions/pending_extension_info.h" 60 #include "chrome/browser/extensions/pending_extension_info.h"
(...skipping 6675 matching lines...) Expand 10 before | Expand all | Expand 10 after
6737 FeatureSwitch::prompt_for_external_extensions(), true); 6736 FeatureSwitch::prompt_for_external_extensions(), true);
6738 6737
6739 InitializeEmptyExtensionService(); 6738 InitializeEmptyExtensionService();
6740 MockExtensionProvider* provider = 6739 MockExtensionProvider* provider =
6741 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6740 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6742 AddMockExternalProvider(provider); 6741 AddMockExternalProvider(provider);
6743 6742
6744 service_->UpdateExternalExtensionAlert(); 6743 service_->UpdateExternalExtensionAlert();
6745 // Should return false, meaning there aren't any extensions that the user 6744 // Should return false, meaning there aren't any extensions that the user
6746 // needs to know about. 6745 // needs to know about.
6747 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError()); 6746 EXPECT_FALSE(extensions::HasExternalInstallError(service_));
6748 6747
6749 // This is a normal extension, installed normally. 6748 // This is a normal extension, installed normally.
6750 // This should NOT trigger an alert. 6749 // This should NOT trigger an alert.
6751 set_extensions_enabled(true); 6750 set_extensions_enabled(true);
6752 base::FilePath path = data_dir_.AppendASCII("good.crx"); 6751 base::FilePath path = data_dir_.AppendASCII("good.crx");
6753 InstallCRX(path, INSTALL_NEW); 6752 InstallCRX(path, INSTALL_NEW);
6754 6753
6755 service_->CheckForExternalUpdates(); 6754 service_->CheckForExternalUpdates();
6756 base::RunLoop().RunUntilIdle(); 6755 base::RunLoop().RunUntilIdle();
6757 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError()); 6756 EXPECT_FALSE(extensions::HasExternalInstallError(service_));
6758 6757
6759 // A hosted app, installed externally. 6758 // A hosted app, installed externally.
6760 // This should NOT trigger an alert. 6759 // This should NOT trigger an alert.
6761 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0", 6760 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0",
6762 data_dir_.AppendASCII("hosted_app.crx")); 6761 data_dir_.AppendASCII("hosted_app.crx"));
6763 6762
6764 content::WindowedNotificationObserver observer( 6763 content::WindowedNotificationObserver observer(
6765 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6764 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6766 content::NotificationService::AllSources()); 6765 content::NotificationService::AllSources());
6767 service_->CheckForExternalUpdates(); 6766 service_->CheckForExternalUpdates();
6768 observer.Wait(); 6767 observer.Wait();
6769 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError()); 6768 EXPECT_FALSE(extensions::HasExternalInstallError(service_));
6770 6769
6771 // Another normal extension, but installed externally. 6770 // Another normal extension, but installed externally.
6772 // This SHOULD trigger an alert. 6771 // This SHOULD trigger an alert.
6773 provider->UpdateOrAddExtension(page_action, "1.0.0.0", 6772 provider->UpdateOrAddExtension(page_action, "1.0.0.0",
6774 data_dir_.AppendASCII("page_action.crx")); 6773 data_dir_.AppendASCII("page_action.crx"));
6775 6774
6776 content::WindowedNotificationObserver observer2( 6775 content::WindowedNotificationObserver observer2(
6777 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6776 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6778 content::NotificationService::AllSources()); 6777 content::NotificationService::AllSources());
6779 service_->CheckForExternalUpdates(); 6778 service_->CheckForExternalUpdates();
6780 observer2.Wait(); 6779 observer2.Wait();
6781 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError()); 6780 EXPECT_TRUE(extensions::HasExternalInstallError(service_));
6782 } 6781 }
6783 6782
6784 // Test that external extensions are initially disabled, and that enabling 6783 // Test that external extensions are initially disabled, and that enabling
6785 // them clears the prompt. 6784 // them clears the prompt.
6786 TEST_F(ExtensionServiceTest, ExternalInstallInitiallyDisabled) { 6785 TEST_F(ExtensionServiceTest, ExternalInstallInitiallyDisabled) {
6787 FeatureSwitch::ScopedOverride prompt( 6786 FeatureSwitch::ScopedOverride prompt(
6788 FeatureSwitch::prompt_for_external_extensions(), true); 6787 FeatureSwitch::prompt_for_external_extensions(), true);
6789 6788
6790 InitializeEmptyExtensionService(); 6789 InitializeEmptyExtensionService();
6791 MockExtensionProvider* provider = 6790 MockExtensionProvider* provider =
6792 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6791 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6793 AddMockExternalProvider(provider); 6792 AddMockExternalProvider(provider);
6794 6793
6795 provider->UpdateOrAddExtension(page_action, "1.0.0.0", 6794 provider->UpdateOrAddExtension(page_action, "1.0.0.0",
6796 data_dir_.AppendASCII("page_action.crx")); 6795 data_dir_.AppendASCII("page_action.crx"));
6797 6796
6798 content::WindowedNotificationObserver observer( 6797 content::WindowedNotificationObserver observer(
6799 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6798 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6800 content::NotificationService::AllSources()); 6799 content::NotificationService::AllSources());
6801 service_->CheckForExternalUpdates(); 6800 service_->CheckForExternalUpdates();
6802 observer.Wait(); 6801 observer.Wait();
6803 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError()); 6802 EXPECT_TRUE(extensions::HasExternalInstallError(service_));
6804 EXPECT_FALSE(service_->IsExtensionEnabled(page_action)); 6803 EXPECT_FALSE(service_->IsExtensionEnabled(page_action));
6805 6804
6806 const Extension* extension = 6805 const Extension* extension =
6807 registry_->disabled_extensions().GetByID(page_action); 6806 registry_->disabled_extensions().GetByID(page_action);
6808 EXPECT_TRUE(extension); 6807 EXPECT_TRUE(extension);
6809 EXPECT_EQ(page_action, extension->id()); 6808 EXPECT_EQ(page_action, extension->id());
6810 6809
6811 service_->EnableExtension(page_action); 6810 service_->EnableExtension(page_action);
6812 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError()); 6811 EXPECT_FALSE(extensions::HasExternalInstallError(service_));
6813 EXPECT_TRUE(service_->IsExtensionEnabled(page_action)); 6812 EXPECT_TRUE(service_->IsExtensionEnabled(page_action));
6814 } 6813 }
6815 6814
6816 // Test that installing multiple external extensions works. 6815 // Test that installing multiple external extensions works.
6817 // Flaky on windows; http://crbug.com/295757 . 6816 // Flaky on windows; http://crbug.com/295757 .
6818 #if defined(OS_WIN) 6817 #if defined(OS_WIN)
6819 #define MAYBE_ExternalInstallMultiple DISABLED_ExternalInstallMultiple 6818 #define MAYBE_ExternalInstallMultiple DISABLED_ExternalInstallMultiple
6820 #else 6819 #else
6821 #define MAYBE_ExternalInstallMultiple ExternalInstallMultiple 6820 #define MAYBE_ExternalInstallMultiple ExternalInstallMultiple
6822 #endif 6821 #endif
(...skipping 12 matching lines...) Expand all
6835 data_dir_.AppendASCII("good.crx")); 6834 data_dir_.AppendASCII("good.crx"));
6836 provider->UpdateOrAddExtension(theme_crx, "2.0", 6835 provider->UpdateOrAddExtension(theme_crx, "2.0",
6837 data_dir_.AppendASCII("theme.crx")); 6836 data_dir_.AppendASCII("theme.crx"));
6838 6837
6839 int count = 3; 6838 int count = 3;
6840 content::WindowedNotificationObserver observer( 6839 content::WindowedNotificationObserver observer(
6841 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6840 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6842 base::Bind(&WaitForCountNotificationsCallback, &count)); 6841 base::Bind(&WaitForCountNotificationsCallback, &count));
6843 service_->CheckForExternalUpdates(); 6842 service_->CheckForExternalUpdates();
6844 observer.Wait(); 6843 observer.Wait();
6845 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError()); 6844 EXPECT_TRUE(extensions::HasExternalInstallError(service_));
6846 EXPECT_FALSE(service_->IsExtensionEnabled(page_action)); 6845 EXPECT_FALSE(service_->IsExtensionEnabled(page_action));
6847 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); 6846 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx));
6848 EXPECT_FALSE(service_->IsExtensionEnabled(theme_crx)); 6847 EXPECT_FALSE(service_->IsExtensionEnabled(theme_crx));
6849 6848
6850 service_->EnableExtension(page_action); 6849 service_->EnableExtension(page_action);
6851 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError()); 6850 EXPECT_TRUE(extensions::HasExternalInstallError(service_));
6852 EXPECT_FALSE( 6851 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_));
6853 service_->external_install_manager()->HasExternalInstallBubble());
6854
6855 service_->EnableExtension(theme_crx); 6852 service_->EnableExtension(theme_crx);
6856 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError()); 6853 EXPECT_TRUE(extensions::HasExternalInstallError(service_));
6857 EXPECT_FALSE( 6854 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_));
6858 service_->external_install_manager()->HasExternalInstallBubble());
6859
6860 service_->EnableExtension(good_crx); 6855 service_->EnableExtension(good_crx);
6861 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError()); 6856 EXPECT_FALSE(extensions::HasExternalInstallError(service_));
6862 EXPECT_FALSE( 6857 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_));
6863 service_->external_install_manager()->HasExternalInstallBubble());
6864 } 6858 }
6865 6859
6866 // Test that there is a bubble for external extensions that update 6860 // Test that there is a bubble for external extensions that update
6867 // from the webstore if the profile is not new. 6861 // from the webstore if the profile is not new.
6868 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreOldProfile) { 6862 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreOldProfile) {
6869 FeatureSwitch::ScopedOverride prompt( 6863 FeatureSwitch::ScopedOverride prompt(
6870 FeatureSwitch::prompt_for_external_extensions(), true); 6864 FeatureSwitch::prompt_for_external_extensions(), true);
6871 6865
6872 // This sets up the ExtensionPrefs used by our ExtensionService to be 6866 // This sets up the ExtensionPrefs used by our ExtensionService to be
6873 // post-first run. 6867 // post-first run.
6874 ExtensionServiceInitParams params = CreateDefaultInitParams(); 6868 ExtensionServiceInitParams params = CreateDefaultInitParams();
6875 params.is_first_run = false; 6869 params.is_first_run = false;
6876 InitializeExtensionService(params); 6870 InitializeExtensionService(params);
6877 6871
6878 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx"); 6872 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx");
6879 PackCRX(data_dir_.AppendASCII("update_from_webstore"), 6873 PackCRX(data_dir_.AppendASCII("update_from_webstore"),
6880 data_dir_.AppendASCII("update_from_webstore.pem"), 6874 data_dir_.AppendASCII("update_from_webstore.pem"),
6881 crx_path); 6875 crx_path);
6882 6876
6883 MockExtensionProvider* provider = 6877 MockExtensionProvider* provider =
6884 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6878 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6885 AddMockExternalProvider(provider); 6879 AddMockExternalProvider(provider);
6886 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); 6880 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
6887 6881
6888 content::WindowedNotificationObserver observer( 6882 content::WindowedNotificationObserver observer(
6889 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6883 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6890 content::NotificationService::AllSources()); 6884 content::NotificationService::AllSources());
6891 service_->CheckForExternalUpdates(); 6885 service_->CheckForExternalUpdates();
6892 observer.Wait(); 6886 observer.Wait();
6893 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError()); 6887 EXPECT_TRUE(extensions::HasExternalInstallError(service_));
6894 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallBubble()); 6888 EXPECT_TRUE(extensions::HasExternalInstallBubble(service_));
6895 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore)); 6889 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore));
6896 } 6890 }
6897 6891
6898 // Test that there is no bubble for external extensions if the profile is new. 6892 // Test that there is no bubble for external extensions if the profile is new.
6899 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreNewProfile) { 6893 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreNewProfile) {
6900 FeatureSwitch::ScopedOverride prompt( 6894 FeatureSwitch::ScopedOverride prompt(
6901 FeatureSwitch::prompt_for_external_extensions(), true); 6895 FeatureSwitch::prompt_for_external_extensions(), true);
6902 6896
6903 InitializeEmptyExtensionService(); 6897 InitializeEmptyExtensionService();
6904 6898
6905 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx"); 6899 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx");
6906 PackCRX(data_dir_.AppendASCII("update_from_webstore"), 6900 PackCRX(data_dir_.AppendASCII("update_from_webstore"),
6907 data_dir_.AppendASCII("update_from_webstore.pem"), 6901 data_dir_.AppendASCII("update_from_webstore.pem"),
6908 crx_path); 6902 crx_path);
6909 6903
6910 MockExtensionProvider* provider = 6904 MockExtensionProvider* provider =
6911 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6905 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6912 AddMockExternalProvider(provider); 6906 AddMockExternalProvider(provider);
6913 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); 6907 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
6914 6908
6915 content::WindowedNotificationObserver observer( 6909 content::WindowedNotificationObserver observer(
6916 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6910 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6917 content::NotificationService::AllSources()); 6911 content::NotificationService::AllSources());
6918 service_->CheckForExternalUpdates(); 6912 service_->CheckForExternalUpdates();
6919 observer.Wait(); 6913 observer.Wait();
6920 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError()); 6914 EXPECT_TRUE(extensions::HasExternalInstallError(service_));
6921 EXPECT_FALSE( 6915 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_));
6922 service_->external_install_manager()->HasExternalInstallBubble());
6923 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore)); 6916 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore));
6924 } 6917 }
6925 6918
6926 // Test that clicking to remove the extension on an external install warning
6927 // uninstalls the extension.
6928 TEST_F(ExtensionServiceTest, ExternalInstallClickToRemove) {
6929 FeatureSwitch::ScopedOverride prompt(
6930 FeatureSwitch::prompt_for_external_extensions(), true);
6931
6932 ExtensionServiceInitParams params = CreateDefaultInitParams();
6933 params.is_first_run = false;
6934 InitializeExtensionService(params);
6935
6936 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx");
6937 PackCRX(data_dir_.AppendASCII("update_from_webstore"),
6938 data_dir_.AppendASCII("update_from_webstore.pem"),
6939 crx_path);
6940
6941 MockExtensionProvider* provider =
6942 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6943 AddMockExternalProvider(provider);
6944 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
6945
6946 content::WindowedNotificationObserver observer(
6947 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6948 content::NotificationService::AllSources());
6949 service_->CheckForExternalUpdates();
6950 observer.Wait();
6951 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6952
6953 // We check both enabled and disabled, since these are "eventually exclusive"
6954 // sets.
6955 EXPECT_TRUE(registry_->disabled_extensions().GetByID(updates_from_webstore));
6956 EXPECT_FALSE(registry_->enabled_extensions().GetByID(updates_from_webstore));
6957
6958 // Click the negative response.
6959 service_->external_install_manager()->error_for_testing()->InstallUIAbort(
6960 true);
6961 // The Extension should be uninstalled.
6962 EXPECT_FALSE(registry_->GetExtensionById(updates_from_webstore,
6963 ExtensionRegistry::EVERYTHING));
6964 // The error should be removed.
6965 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError());
6966 }
6967
6968 // Test that clicking to keep the extension on an external install warning
6969 // re-enables the extension.
6970 TEST_F(ExtensionServiceTest, ExternalInstallClickToKeep) {
6971 FeatureSwitch::ScopedOverride prompt(
6972 FeatureSwitch::prompt_for_external_extensions(), true);
6973
6974 ExtensionServiceInitParams params = CreateDefaultInitParams();
6975 params.is_first_run = false;
6976 InitializeExtensionService(params);
6977
6978 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx");
6979 PackCRX(data_dir_.AppendASCII("update_from_webstore"),
6980 data_dir_.AppendASCII("update_from_webstore.pem"),
6981 crx_path);
6982
6983 MockExtensionProvider* provider =
6984 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6985 AddMockExternalProvider(provider);
6986 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
6987
6988 content::WindowedNotificationObserver observer(
6989 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6990 content::NotificationService::AllSources());
6991 service_->CheckForExternalUpdates();
6992 observer.Wait();
6993 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6994
6995 // We check both enabled and disabled, since these are "eventually exclusive"
6996 // sets.
6997 EXPECT_TRUE(registry_->disabled_extensions().GetByID(updates_from_webstore));
6998 EXPECT_FALSE(registry_->enabled_extensions().GetByID(updates_from_webstore));
6999
7000 // Accept the extension.
7001 service_->external_install_manager()->error_for_testing()->InstallUIProceed();
7002
7003 // It should be enabled again.
7004 EXPECT_TRUE(registry_->enabled_extensions().GetByID(updates_from_webstore));
7005 EXPECT_FALSE(registry_->disabled_extensions().GetByID(updates_from_webstore));
7006
7007 // The error should be removed.
7008 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError());
7009 }
7010
7011 TEST_F(ExtensionServiceTest, InstallBlacklistedExtension) { 6919 TEST_F(ExtensionServiceTest, InstallBlacklistedExtension) {
7012 InitializeEmptyExtensionService(); 6920 InitializeEmptyExtensionService();
7013 6921
7014 scoped_refptr<Extension> extension = extensions::ExtensionBuilder() 6922 scoped_refptr<Extension> extension = extensions::ExtensionBuilder()
7015 .SetManifest(extensions::DictionaryBuilder() 6923 .SetManifest(extensions::DictionaryBuilder()
7016 .Set("name", "extension") 6924 .Set("name", "extension")
7017 .Set("version", "1.0") 6925 .Set("version", "1.0")
7018 .Set("manifest_version", 2).Build()) 6926 .Set("manifest_version", 2).Build())
7019 .Build(); 6927 .Build();
7020 ASSERT_TRUE(extension.get()); 6928 ASSERT_TRUE(extension.get());
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
7125 7033
7126 service_->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, 7034 service_->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED,
7127 content::Source<Profile>(profile_.get()), 7035 content::Source<Profile>(profile_.get()),
7128 content::NotificationService::NoDetails()); 7036 content::NotificationService::NoDetails());
7129 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); 7037 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_);
7130 EXPECT_EQ(0u, registry_->enabled_extensions().size()); 7038 EXPECT_EQ(0u, registry_->enabled_extensions().size());
7131 EXPECT_EQ(0u, registry_->disabled_extensions().size()); 7039 EXPECT_EQ(0u, registry_->disabled_extensions().size());
7132 EXPECT_EQ(0u, registry_->terminated_extensions().size()); 7040 EXPECT_EQ(0u, registry_->terminated_extensions().size());
7133 EXPECT_EQ(0u, registry_->blacklisted_extensions().size()); 7041 EXPECT_EQ(0u, registry_->blacklisted_extensions().size());
7134 } 7042 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/extensions/external_install_error.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698