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

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

Issue 309643007: Resubmit: Refactor external_install_ui (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix 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_ui.h" 50 #include "chrome/browser/extensions/external_install_error.h"
51 #include "chrome/browser/extensions/external_install_manager.h"
51 #include "chrome/browser/extensions/external_policy_loader.h" 52 #include "chrome/browser/extensions/external_policy_loader.h"
52 #include "chrome/browser/extensions/external_pref_loader.h" 53 #include "chrome/browser/extensions/external_pref_loader.h"
53 #include "chrome/browser/extensions/external_provider_impl.h" 54 #include "chrome/browser/extensions/external_provider_impl.h"
54 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h" 55 #include "chrome/browser/extensions/fake_safe_browsing_database_manager.h"
55 #include "chrome/browser/extensions/install_observer.h" 56 #include "chrome/browser/extensions/install_observer.h"
56 #include "chrome/browser/extensions/install_tracker.h" 57 #include "chrome/browser/extensions/install_tracker.h"
57 #include "chrome/browser/extensions/install_tracker_factory.h" 58 #include "chrome/browser/extensions/install_tracker_factory.h"
58 #include "chrome/browser/extensions/installed_loader.h" 59 #include "chrome/browser/extensions/installed_loader.h"
59 #include "chrome/browser/extensions/pack_extension_job.h" 60 #include "chrome/browser/extensions/pack_extension_job.h"
60 #include "chrome/browser/extensions/pending_extension_info.h" 61 #include "chrome/browser/extensions/pending_extension_info.h"
(...skipping 6675 matching lines...) Expand 10 before | Expand all | Expand 10 after
6736 FeatureSwitch::prompt_for_external_extensions(), true); 6737 FeatureSwitch::prompt_for_external_extensions(), true);
6737 6738
6738 InitializeEmptyExtensionService(); 6739 InitializeEmptyExtensionService();
6739 MockExtensionProvider* provider = 6740 MockExtensionProvider* provider =
6740 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6741 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6741 AddMockExternalProvider(provider); 6742 AddMockExternalProvider(provider);
6742 6743
6743 service_->UpdateExternalExtensionAlert(); 6744 service_->UpdateExternalExtensionAlert();
6744 // Should return false, meaning there aren't any extensions that the user 6745 // Should return false, meaning there aren't any extensions that the user
6745 // needs to know about. 6746 // needs to know about.
6746 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); 6747 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError());
6747 6748
6748 // This is a normal extension, installed normally. 6749 // This is a normal extension, installed normally.
6749 // This should NOT trigger an alert. 6750 // This should NOT trigger an alert.
6750 set_extensions_enabled(true); 6751 set_extensions_enabled(true);
6751 base::FilePath path = data_dir_.AppendASCII("good.crx"); 6752 base::FilePath path = data_dir_.AppendASCII("good.crx");
6752 InstallCRX(path, INSTALL_NEW); 6753 InstallCRX(path, INSTALL_NEW);
6753 6754
6754 service_->CheckForExternalUpdates(); 6755 service_->CheckForExternalUpdates();
6755 base::RunLoop().RunUntilIdle(); 6756 base::RunLoop().RunUntilIdle();
6756 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); 6757 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError());
6757 6758
6758 // A hosted app, installed externally. 6759 // A hosted app, installed externally.
6759 // This should NOT trigger an alert. 6760 // This should NOT trigger an alert.
6760 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0", 6761 provider->UpdateOrAddExtension(hosted_app, "1.0.0.0",
6761 data_dir_.AppendASCII("hosted_app.crx")); 6762 data_dir_.AppendASCII("hosted_app.crx"));
6762 6763
6763 content::WindowedNotificationObserver observer( 6764 content::WindowedNotificationObserver observer(
6764 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6765 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6765 content::NotificationService::AllSources()); 6766 content::NotificationService::AllSources());
6766 service_->CheckForExternalUpdates(); 6767 service_->CheckForExternalUpdates();
6767 observer.Wait(); 6768 observer.Wait();
6768 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); 6769 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError());
6769 6770
6770 // Another normal extension, but installed externally. 6771 // Another normal extension, but installed externally.
6771 // This SHOULD trigger an alert. 6772 // This SHOULD trigger an alert.
6772 provider->UpdateOrAddExtension(page_action, "1.0.0.0", 6773 provider->UpdateOrAddExtension(page_action, "1.0.0.0",
6773 data_dir_.AppendASCII("page_action.crx")); 6774 data_dir_.AppendASCII("page_action.crx"));
6774 6775
6775 content::WindowedNotificationObserver observer2( 6776 content::WindowedNotificationObserver observer2(
6776 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6777 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6777 content::NotificationService::AllSources()); 6778 content::NotificationService::AllSources());
6778 service_->CheckForExternalUpdates(); 6779 service_->CheckForExternalUpdates();
6779 observer2.Wait(); 6780 observer2.Wait();
6780 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); 6781 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6781 } 6782 }
6782 6783
6783 // Test that external extensions are initially disabled, and that enabling 6784 // Test that external extensions are initially disabled, and that enabling
6784 // them clears the prompt. 6785 // them clears the prompt.
6785 TEST_F(ExtensionServiceTest, ExternalInstallInitiallyDisabled) { 6786 TEST_F(ExtensionServiceTest, ExternalInstallInitiallyDisabled) {
6786 FeatureSwitch::ScopedOverride prompt( 6787 FeatureSwitch::ScopedOverride prompt(
6787 FeatureSwitch::prompt_for_external_extensions(), true); 6788 FeatureSwitch::prompt_for_external_extensions(), true);
6788 6789
6789 InitializeEmptyExtensionService(); 6790 InitializeEmptyExtensionService();
6790 MockExtensionProvider* provider = 6791 MockExtensionProvider* provider =
6791 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6792 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6792 AddMockExternalProvider(provider); 6793 AddMockExternalProvider(provider);
6793 6794
6794 provider->UpdateOrAddExtension(page_action, "1.0.0.0", 6795 provider->UpdateOrAddExtension(page_action, "1.0.0.0",
6795 data_dir_.AppendASCII("page_action.crx")); 6796 data_dir_.AppendASCII("page_action.crx"));
6796 6797
6797 content::WindowedNotificationObserver observer( 6798 content::WindowedNotificationObserver observer(
6798 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6799 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6799 content::NotificationService::AllSources()); 6800 content::NotificationService::AllSources());
6800 service_->CheckForExternalUpdates(); 6801 service_->CheckForExternalUpdates();
6801 observer.Wait(); 6802 observer.Wait();
6802 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); 6803 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6803 EXPECT_FALSE(service_->IsExtensionEnabled(page_action)); 6804 EXPECT_FALSE(service_->IsExtensionEnabled(page_action));
6804 6805
6805 const Extension* extension = 6806 const Extension* extension =
6806 registry_->disabled_extensions().GetByID(page_action); 6807 registry_->disabled_extensions().GetByID(page_action);
6807 EXPECT_TRUE(extension); 6808 EXPECT_TRUE(extension);
6808 EXPECT_EQ(page_action, extension->id()); 6809 EXPECT_EQ(page_action, extension->id());
6809 6810
6810 service_->EnableExtension(page_action); 6811 service_->EnableExtension(page_action);
6811 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); 6812 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError());
6812 EXPECT_TRUE(service_->IsExtensionEnabled(page_action)); 6813 EXPECT_TRUE(service_->IsExtensionEnabled(page_action));
6813 } 6814 }
6814 6815
6815 // Test that installing multiple external extensions works. 6816 // Test that installing multiple external extensions works.
6816 // Flaky on windows; http://crbug.com/295757 . 6817 // Flaky on windows; http://crbug.com/295757 .
6817 #if defined(OS_WIN) 6818 #if defined(OS_WIN)
6818 #define MAYBE_ExternalInstallMultiple DISABLED_ExternalInstallMultiple 6819 #define MAYBE_ExternalInstallMultiple DISABLED_ExternalInstallMultiple
6819 #else 6820 #else
6820 #define MAYBE_ExternalInstallMultiple ExternalInstallMultiple 6821 #define MAYBE_ExternalInstallMultiple ExternalInstallMultiple
6821 #endif 6822 #endif
(...skipping 12 matching lines...) Expand all
6834 data_dir_.AppendASCII("good.crx")); 6835 data_dir_.AppendASCII("good.crx"));
6835 provider->UpdateOrAddExtension(theme_crx, "2.0", 6836 provider->UpdateOrAddExtension(theme_crx, "2.0",
6836 data_dir_.AppendASCII("theme.crx")); 6837 data_dir_.AppendASCII("theme.crx"));
6837 6838
6838 int count = 3; 6839 int count = 3;
6839 content::WindowedNotificationObserver observer( 6840 content::WindowedNotificationObserver observer(
6840 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6841 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6841 base::Bind(&WaitForCountNotificationsCallback, &count)); 6842 base::Bind(&WaitForCountNotificationsCallback, &count));
6842 service_->CheckForExternalUpdates(); 6843 service_->CheckForExternalUpdates();
6843 observer.Wait(); 6844 observer.Wait();
6844 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); 6845 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6845 EXPECT_FALSE(service_->IsExtensionEnabled(page_action)); 6846 EXPECT_FALSE(service_->IsExtensionEnabled(page_action));
6846 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx)); 6847 EXPECT_FALSE(service_->IsExtensionEnabled(good_crx));
6847 EXPECT_FALSE(service_->IsExtensionEnabled(theme_crx)); 6848 EXPECT_FALSE(service_->IsExtensionEnabled(theme_crx));
6848 6849
6849 service_->EnableExtension(page_action); 6850 service_->EnableExtension(page_action);
6850 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); 6851 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6851 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_)); 6852 EXPECT_FALSE(
6853 service_->external_install_manager()->HasExternalInstallBubble());
6854
6852 service_->EnableExtension(theme_crx); 6855 service_->EnableExtension(theme_crx);
6853 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); 6856 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6854 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_)); 6857 EXPECT_FALSE(
6858 service_->external_install_manager()->HasExternalInstallBubble());
6859
6855 service_->EnableExtension(good_crx); 6860 service_->EnableExtension(good_crx);
6856 EXPECT_FALSE(extensions::HasExternalInstallError(service_)); 6861 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError());
6857 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_)); 6862 EXPECT_FALSE(
6863 service_->external_install_manager()->HasExternalInstallBubble());
6858 } 6864 }
6859 6865
6860 // Test that there is a bubble for external extensions that update 6866 // Test that there is a bubble for external extensions that update
6861 // from the webstore if the profile is not new. 6867 // from the webstore if the profile is not new.
6862 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreOldProfile) { 6868 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreOldProfile) {
6863 FeatureSwitch::ScopedOverride prompt( 6869 FeatureSwitch::ScopedOverride prompt(
6864 FeatureSwitch::prompt_for_external_extensions(), true); 6870 FeatureSwitch::prompt_for_external_extensions(), true);
6865 6871
6866 // This sets up the ExtensionPrefs used by our ExtensionService to be 6872 // This sets up the ExtensionPrefs used by our ExtensionService to be
6867 // post-first run. 6873 // post-first run.
6868 ExtensionServiceInitParams params = CreateDefaultInitParams(); 6874 ExtensionServiceInitParams params = CreateDefaultInitParams();
6869 params.is_first_run = false; 6875 params.is_first_run = false;
6870 InitializeExtensionService(params); 6876 InitializeExtensionService(params);
6871 6877
6872 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx"); 6878 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx");
6873 PackCRX(data_dir_.AppendASCII("update_from_webstore"), 6879 PackCRX(data_dir_.AppendASCII("update_from_webstore"),
6874 data_dir_.AppendASCII("update_from_webstore.pem"), 6880 data_dir_.AppendASCII("update_from_webstore.pem"),
6875 crx_path); 6881 crx_path);
6876 6882
6877 MockExtensionProvider* provider = 6883 MockExtensionProvider* provider =
6878 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6884 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6879 AddMockExternalProvider(provider); 6885 AddMockExternalProvider(provider);
6880 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); 6886 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
6881 6887
6882 content::WindowedNotificationObserver observer( 6888 content::WindowedNotificationObserver observer(
6883 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6889 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6884 content::NotificationService::AllSources()); 6890 content::NotificationService::AllSources());
6885 service_->CheckForExternalUpdates(); 6891 service_->CheckForExternalUpdates();
6886 observer.Wait(); 6892 observer.Wait();
6887 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); 6893 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6888 EXPECT_TRUE(extensions::HasExternalInstallBubble(service_)); 6894 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallBubble());
6889 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore)); 6895 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore));
6890 } 6896 }
6891 6897
6892 // Test that there is no bubble for external extensions if the profile is new. 6898 // Test that there is no bubble for external extensions if the profile is new.
6893 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreNewProfile) { 6899 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreNewProfile) {
6894 FeatureSwitch::ScopedOverride prompt( 6900 FeatureSwitch::ScopedOverride prompt(
6895 FeatureSwitch::prompt_for_external_extensions(), true); 6901 FeatureSwitch::prompt_for_external_extensions(), true);
6896 6902
6897 InitializeEmptyExtensionService(); 6903 InitializeEmptyExtensionService();
6898 6904
6899 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx"); 6905 base::FilePath crx_path = temp_dir_.path().AppendASCII("webstore.crx");
6900 PackCRX(data_dir_.AppendASCII("update_from_webstore"), 6906 PackCRX(data_dir_.AppendASCII("update_from_webstore"),
6901 data_dir_.AppendASCII("update_from_webstore.pem"), 6907 data_dir_.AppendASCII("update_from_webstore.pem"),
6902 crx_path); 6908 crx_path);
6903 6909
6904 MockExtensionProvider* provider = 6910 MockExtensionProvider* provider =
6905 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF); 6911 new MockExtensionProvider(service_, Manifest::EXTERNAL_PREF);
6906 AddMockExternalProvider(provider); 6912 AddMockExternalProvider(provider);
6907 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); 6913 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
6908 6914
6909 content::WindowedNotificationObserver observer( 6915 content::WindowedNotificationObserver observer(
6910 chrome::NOTIFICATION_CRX_INSTALLER_DONE, 6916 chrome::NOTIFICATION_CRX_INSTALLER_DONE,
6911 content::NotificationService::AllSources()); 6917 content::NotificationService::AllSources());
6912 service_->CheckForExternalUpdates(); 6918 service_->CheckForExternalUpdates();
6913 observer.Wait(); 6919 observer.Wait();
6914 EXPECT_TRUE(extensions::HasExternalInstallError(service_)); 6920 EXPECT_TRUE(service_->external_install_manager()->HasExternalInstallError());
6915 EXPECT_FALSE(extensions::HasExternalInstallBubble(service_)); 6921 EXPECT_FALSE(
6922 service_->external_install_manager()->HasExternalInstallBubble());
6916 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore)); 6923 EXPECT_FALSE(service_->IsExtensionEnabled(updates_from_webstore));
6917 } 6924 }
6918 6925
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
6919 TEST_F(ExtensionServiceTest, InstallBlacklistedExtension) { 7011 TEST_F(ExtensionServiceTest, InstallBlacklistedExtension) {
6920 InitializeEmptyExtensionService(); 7012 InitializeEmptyExtensionService();
6921 7013
6922 scoped_refptr<Extension> extension = extensions::ExtensionBuilder() 7014 scoped_refptr<Extension> extension = extensions::ExtensionBuilder()
6923 .SetManifest(extensions::DictionaryBuilder() 7015 .SetManifest(extensions::DictionaryBuilder()
6924 .Set("name", "extension") 7016 .Set("name", "extension")
6925 .Set("version", "1.0") 7017 .Set("version", "1.0")
6926 .Set("manifest_version", 2).Build()) 7018 .Set("manifest_version", 2).Build())
6927 .Build(); 7019 .Build();
6928 ASSERT_TRUE(extension.get()); 7020 ASSERT_TRUE(extension.get());
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
7033 7125
7034 service_->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, 7126 service_->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED,
7035 content::Source<Profile>(profile_.get()), 7127 content::Source<Profile>(profile_.get()),
7036 content::NotificationService::NoDetails()); 7128 content::NotificationService::NoDetails());
7037 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); 7129 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_);
7038 EXPECT_EQ(0u, registry_->enabled_extensions().size()); 7130 EXPECT_EQ(0u, registry_->enabled_extensions().size());
7039 EXPECT_EQ(0u, registry_->disabled_extensions().size()); 7131 EXPECT_EQ(0u, registry_->disabled_extensions().size());
7040 EXPECT_EQ(0u, registry_->terminated_extensions().size()); 7132 EXPECT_EQ(0u, registry_->terminated_extensions().size());
7041 EXPECT_EQ(0u, registry_->blacklisted_extensions().size()); 7133 EXPECT_EQ(0u, registry_->blacklisted_extensions().size());
7042 } 7134 }
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