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

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

Issue 648113002: Removing extensions::FeatureSwitch which is no longer used (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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 <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/at_exit.h" 9 #include "base/at_exit.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 using extensions::AppSorting; 157 using extensions::AppSorting;
158 using extensions::Blacklist; 158 using extensions::Blacklist;
159 using extensions::CrxInstaller; 159 using extensions::CrxInstaller;
160 using extensions::Extension; 160 using extensions::Extension;
161 using extensions::ExtensionCreator; 161 using extensions::ExtensionCreator;
162 using extensions::ExtensionPrefs; 162 using extensions::ExtensionPrefs;
163 using extensions::ExtensionRegistry; 163 using extensions::ExtensionRegistry;
164 using extensions::ExtensionResource; 164 using extensions::ExtensionResource;
165 using extensions::ExtensionSystem; 165 using extensions::ExtensionSystem;
166 using extensions::FakeSafeBrowsingDatabaseManager; 166 using extensions::FakeSafeBrowsingDatabaseManager;
167 using extensions::FeatureSwitch;
168 using extensions::Manifest; 167 using extensions::Manifest;
169 using extensions::PermissionSet; 168 using extensions::PermissionSet;
170 using extensions::TestExtensionSystem; 169 using extensions::TestExtensionSystem;
171 using extensions::UnloadedExtensionInfo; 170 using extensions::UnloadedExtensionInfo;
172 using extensions::URLPatternSet; 171 using extensions::URLPatternSet;
173 172
174 namespace keys = extensions::manifest_keys; 173 namespace keys = extensions::manifest_keys;
175 174
176 namespace { 175 namespace {
177 176
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 DISALLOW_COPY_AND_ASSIGN(MockProviderVisitor); 464 DISALLOW_COPY_AND_ASSIGN(MockProviderVisitor);
466 }; 465 };
467 466
468 class ExtensionServiceTest : public extensions::ExtensionServiceTestBase, 467 class ExtensionServiceTest : public extensions::ExtensionServiceTestBase,
469 public content::NotificationObserver { 468 public content::NotificationObserver {
470 public: 469 public:
471 ExtensionServiceTest() 470 ExtensionServiceTest()
472 : unloaded_reason_(UnloadedExtensionInfo::REASON_UNDEFINED), 471 : unloaded_reason_(UnloadedExtensionInfo::REASON_UNDEFINED),
473 installed_(NULL), 472 installed_(NULL),
474 was_update_(false), 473 was_update_(false),
475 override_external_install_prompt_(
476 FeatureSwitch::prompt_for_external_extensions(),
477 false),
478 expected_extensions_count_(0) { 474 expected_extensions_count_(0) {
479 registrar_.Add(this, 475 registrar_.Add(this,
480 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, 476 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
481 content::NotificationService::AllSources()); 477 content::NotificationService::AllSources());
482 registrar_.Add(this, 478 registrar_.Add(this,
483 extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, 479 extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
484 content::NotificationService::AllSources()); 480 content::NotificationService::AllSources());
485 registrar_.Add( 481 registrar_.Add(
486 this, 482 this,
487 extensions::NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED, 483 extensions::NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED,
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 protected: 1105 protected:
1110 typedef extensions::ExtensionManagementPrefUpdater<TestingPrefServiceSyncable> 1106 typedef extensions::ExtensionManagementPrefUpdater<TestingPrefServiceSyncable>
1111 ManagementPrefUpdater; 1107 ManagementPrefUpdater;
1112 scoped_ptr<ExtensionSyncService> extension_sync_service_; 1108 scoped_ptr<ExtensionSyncService> extension_sync_service_;
1113 extensions::ExtensionList loaded_; 1109 extensions::ExtensionList loaded_;
1114 std::string unloaded_id_; 1110 std::string unloaded_id_;
1115 UnloadedExtensionInfo::Reason unloaded_reason_; 1111 UnloadedExtensionInfo::Reason unloaded_reason_;
1116 const Extension* installed_; 1112 const Extension* installed_;
1117 bool was_update_; 1113 bool was_update_;
1118 std::string old_name_; 1114 std::string old_name_;
1119 FeatureSwitch::ScopedOverride override_external_install_prompt_;
1120 1115
1121 private: 1116 private:
1122 // Create a CrxInstaller and install the CRX file. 1117 // Create a CrxInstaller and install the CRX file.
1123 // Instead of calling this method yourself, use InstallCRX(), which does extra 1118 // Instead of calling this method yourself, use InstallCRX(), which does extra
1124 // error checking. 1119 // error checking.
1125 void InstallCRXInternal(const base::FilePath& crx_path) { 1120 void InstallCRXInternal(const base::FilePath& crx_path) {
1126 InstallCRXInternal(crx_path, Extension::NO_FLAGS); 1121 InstallCRXInternal(crx_path, Extension::NO_FLAGS);
1127 } 1122 }
1128 1123
1129 void InstallCRXInternal(const base::FilePath& crx_path, int creation_flags) { 1124 void InstallCRXInternal(const base::FilePath& crx_path, int creation_flags) {
(...skipping 5662 matching lines...) Expand 10 before | Expand all | Expand 10 after
6792 VerifyCrxInstall(crx_path_, INSTALL_NEW); 6787 VerifyCrxInstall(crx_path_, INSTALL_NEW);
6793 ASSERT_TRUE(IsCrxInstalled()); 6788 ASSERT_TRUE(IsCrxInstalled());
6794 6789
6795 // Now that the extension is installed, sync request should fail 6790 // Now that the extension is installed, sync request should fail
6796 // because the extension is already installed. 6791 // because the extension is already installed.
6797 ASSERT_FALSE(AddPendingSyncInstall()); 6792 ASSERT_FALSE(AddPendingSyncInstall());
6798 } 6793 }
6799 6794
6800 // Test that installing an external extension displays a GlobalError. 6795 // Test that installing an external extension displays a GlobalError.
6801 TEST_F(ExtensionServiceTest, ExternalInstallGlobalError) { 6796 TEST_F(ExtensionServiceTest, ExternalInstallGlobalError) {
6802 FeatureSwitch::ScopedOverride prompt(
6803 FeatureSwitch::prompt_for_external_extensions(), true);
6804 6797
6805 InitializeEmptyExtensionService(); 6798 InitializeEmptyExtensionService();
6806 MockExtensionProvider* provider = 6799 MockExtensionProvider* provider =
6807 new MockExtensionProvider(service(), Manifest::EXTERNAL_PREF); 6800 new MockExtensionProvider(service(), Manifest::EXTERNAL_PREF);
6808 AddMockExternalProvider(provider); 6801 AddMockExternalProvider(provider);
6809 6802
6810 service()->external_install_manager()->UpdateExternalExtensionAlert(); 6803 service()->external_install_manager()->UpdateExternalExtensionAlert();
6811 // Should return false, meaning there aren't any extensions that the user 6804 // Should return false, meaning there aren't any extensions that the user
6812 // needs to know about. 6805 // needs to know about.
6813 EXPECT_FALSE( 6806 EXPECT_FALSE(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
6846 extensions::NOTIFICATION_CRX_INSTALLER_DONE, 6839 extensions::NOTIFICATION_CRX_INSTALLER_DONE,
6847 content::NotificationService::AllSources()); 6840 content::NotificationService::AllSources());
6848 service()->CheckForExternalUpdates(); 6841 service()->CheckForExternalUpdates();
6849 observer2.Wait(); 6842 observer2.Wait();
6850 EXPECT_TRUE(service()->external_install_manager()->HasExternalInstallError()); 6843 EXPECT_TRUE(service()->external_install_manager()->HasExternalInstallError());
6851 } 6844 }
6852 6845
6853 // Test that external extensions are initially disabled, and that enabling 6846 // Test that external extensions are initially disabled, and that enabling
6854 // them clears the prompt. 6847 // them clears the prompt.
6855 TEST_F(ExtensionServiceTest, ExternalInstallInitiallyDisabled) { 6848 TEST_F(ExtensionServiceTest, ExternalInstallInitiallyDisabled) {
6856 FeatureSwitch::ScopedOverride prompt(
6857 FeatureSwitch::prompt_for_external_extensions(), true);
6858 6849
6859 InitializeEmptyExtensionService(); 6850 InitializeEmptyExtensionService();
6860 MockExtensionProvider* provider = 6851 MockExtensionProvider* provider =
6861 new MockExtensionProvider(service(), Manifest::EXTERNAL_PREF); 6852 new MockExtensionProvider(service(), Manifest::EXTERNAL_PREF);
6862 AddMockExternalProvider(provider); 6853 AddMockExternalProvider(provider);
6863 6854
6864 provider->UpdateOrAddExtension( 6855 provider->UpdateOrAddExtension(
6865 page_action, "1.0.0.0", data_dir().AppendASCII("page_action.crx")); 6856 page_action, "1.0.0.0", data_dir().AppendASCII("page_action.crx"));
6866 6857
6867 content::WindowedNotificationObserver observer( 6858 content::WindowedNotificationObserver observer(
(...skipping 16 matching lines...) Expand all
6884 } 6875 }
6885 6876
6886 // Test that installing multiple external extensions works. 6877 // Test that installing multiple external extensions works.
6887 // Flaky on windows; http://crbug.com/295757 . 6878 // Flaky on windows; http://crbug.com/295757 .
6888 #if defined(OS_WIN) 6879 #if defined(OS_WIN)
6889 #define MAYBE_ExternalInstallMultiple DISABLED_ExternalInstallMultiple 6880 #define MAYBE_ExternalInstallMultiple DISABLED_ExternalInstallMultiple
6890 #else 6881 #else
6891 #define MAYBE_ExternalInstallMultiple ExternalInstallMultiple 6882 #define MAYBE_ExternalInstallMultiple ExternalInstallMultiple
6892 #endif 6883 #endif
6893 TEST_F(ExtensionServiceTest, MAYBE_ExternalInstallMultiple) { 6884 TEST_F(ExtensionServiceTest, MAYBE_ExternalInstallMultiple) {
6894 FeatureSwitch::ScopedOverride prompt(
6895 FeatureSwitch::prompt_for_external_extensions(), true);
6896 6885
6897 InitializeEmptyExtensionService(); 6886 InitializeEmptyExtensionService();
6898 MockExtensionProvider* provider = 6887 MockExtensionProvider* provider =
6899 new MockExtensionProvider(service(), Manifest::EXTERNAL_PREF); 6888 new MockExtensionProvider(service(), Manifest::EXTERNAL_PREF);
6900 AddMockExternalProvider(provider); 6889 AddMockExternalProvider(provider);
6901 6890
6902 provider->UpdateOrAddExtension( 6891 provider->UpdateOrAddExtension(
6903 page_action, "1.0.0.0", data_dir().AppendASCII("page_action.crx")); 6892 page_action, "1.0.0.0", data_dir().AppendASCII("page_action.crx"));
6904 provider->UpdateOrAddExtension( 6893 provider->UpdateOrAddExtension(
6905 good_crx, "1.0.0.0", data_dir().AppendASCII("good.crx")); 6894 good_crx, "1.0.0.0", data_dir().AppendASCII("good.crx"));
(...skipping 27 matching lines...) Expand all
6933 EXPECT_FALSE( 6922 EXPECT_FALSE(
6934 service()->external_install_manager()->HasExternalInstallError()); 6923 service()->external_install_manager()->HasExternalInstallError());
6935 EXPECT_FALSE(service() 6924 EXPECT_FALSE(service()
6936 ->external_install_manager() 6925 ->external_install_manager()
6937 ->HasExternalInstallBubbleForTesting()); 6926 ->HasExternalInstallBubbleForTesting());
6938 } 6927 }
6939 6928
6940 // Test that there is a bubble for external extensions that update 6929 // Test that there is a bubble for external extensions that update
6941 // from the webstore if the profile is not new. 6930 // from the webstore if the profile is not new.
6942 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreOldProfile) { 6931 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreOldProfile) {
6943 FeatureSwitch::ScopedOverride prompt(
6944 FeatureSwitch::prompt_for_external_extensions(), true);
6945 6932
6946 // This sets up the ExtensionPrefs used by our ExtensionService to be 6933 // This sets up the ExtensionPrefs used by our ExtensionService to be
6947 // post-first run. 6934 // post-first run.
6948 ExtensionServiceInitParams params = CreateDefaultInitParams(); 6935 ExtensionServiceInitParams params = CreateDefaultInitParams();
6949 params.is_first_run = false; 6936 params.is_first_run = false;
6950 InitializeExtensionService(params); 6937 InitializeExtensionService(params);
6951 6938
6952 base::FilePath crx_path = temp_dir().path().AppendASCII("webstore.crx"); 6939 base::FilePath crx_path = temp_dir().path().AppendASCII("webstore.crx");
6953 PackCRX(data_dir().AppendASCII("update_from_webstore"), 6940 PackCRX(data_dir().AppendASCII("update_from_webstore"),
6954 data_dir().AppendASCII("update_from_webstore.pem"), 6941 data_dir().AppendASCII("update_from_webstore.pem"),
(...skipping 11 matching lines...) Expand all
6966 observer.Wait(); 6953 observer.Wait();
6967 EXPECT_TRUE(service()->external_install_manager()->HasExternalInstallError()); 6954 EXPECT_TRUE(service()->external_install_manager()->HasExternalInstallError());
6968 EXPECT_TRUE(service() 6955 EXPECT_TRUE(service()
6969 ->external_install_manager() 6956 ->external_install_manager()
6970 ->HasExternalInstallBubbleForTesting()); 6957 ->HasExternalInstallBubbleForTesting());
6971 EXPECT_FALSE(service()->IsExtensionEnabled(updates_from_webstore)); 6958 EXPECT_FALSE(service()->IsExtensionEnabled(updates_from_webstore));
6972 } 6959 }
6973 6960
6974 // Test that there is no bubble for external extensions if the profile is new. 6961 // Test that there is no bubble for external extensions if the profile is new.
6975 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreNewProfile) { 6962 TEST_F(ExtensionServiceTest, ExternalInstallUpdatesFromWebstoreNewProfile) {
6976 FeatureSwitch::ScopedOverride prompt(
6977 FeatureSwitch::prompt_for_external_extensions(), true);
6978 6963
6979 InitializeEmptyExtensionService(); 6964 InitializeEmptyExtensionService();
6980 6965
6981 base::FilePath crx_path = temp_dir().path().AppendASCII("webstore.crx"); 6966 base::FilePath crx_path = temp_dir().path().AppendASCII("webstore.crx");
6982 PackCRX(data_dir().AppendASCII("update_from_webstore"), 6967 PackCRX(data_dir().AppendASCII("update_from_webstore"),
6983 data_dir().AppendASCII("update_from_webstore.pem"), 6968 data_dir().AppendASCII("update_from_webstore.pem"),
6984 crx_path); 6969 crx_path);
6985 6970
6986 MockExtensionProvider* provider = 6971 MockExtensionProvider* provider =
6987 new MockExtensionProvider(service(), Manifest::EXTERNAL_PREF); 6972 new MockExtensionProvider(service(), Manifest::EXTERNAL_PREF);
6988 AddMockExternalProvider(provider); 6973 AddMockExternalProvider(provider);
6989 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path); 6974 provider->UpdateOrAddExtension(updates_from_webstore, "1", crx_path);
6990 6975
6991 content::WindowedNotificationObserver observer( 6976 content::WindowedNotificationObserver observer(
6992 extensions::NOTIFICATION_CRX_INSTALLER_DONE, 6977 extensions::NOTIFICATION_CRX_INSTALLER_DONE,
6993 content::NotificationService::AllSources()); 6978 content::NotificationService::AllSources());
6994 service()->CheckForExternalUpdates(); 6979 service()->CheckForExternalUpdates();
6995 observer.Wait(); 6980 observer.Wait();
6996 EXPECT_TRUE(service()->external_install_manager()->HasExternalInstallError()); 6981 EXPECT_TRUE(service()->external_install_manager()->HasExternalInstallError());
6997 EXPECT_FALSE(service() 6982 EXPECT_FALSE(service()
6998 ->external_install_manager() 6983 ->external_install_manager()
6999 ->HasExternalInstallBubbleForTesting()); 6984 ->HasExternalInstallBubbleForTesting());
7000 EXPECT_FALSE(service()->IsExtensionEnabled(updates_from_webstore)); 6985 EXPECT_FALSE(service()->IsExtensionEnabled(updates_from_webstore));
7001 } 6986 }
7002 6987
7003 // Test that clicking to remove the extension on an external install warning 6988 // Test that clicking to remove the extension on an external install warning
7004 // uninstalls the extension. 6989 // uninstalls the extension.
7005 TEST_F(ExtensionServiceTest, ExternalInstallClickToRemove) { 6990 TEST_F(ExtensionServiceTest, ExternalInstallClickToRemove) {
7006 FeatureSwitch::ScopedOverride prompt(
7007 FeatureSwitch::prompt_for_external_extensions(), true);
7008 6991
7009 ExtensionServiceInitParams params = CreateDefaultInitParams(); 6992 ExtensionServiceInitParams params = CreateDefaultInitParams();
7010 params.is_first_run = false; 6993 params.is_first_run = false;
7011 InitializeExtensionService(params); 6994 InitializeExtensionService(params);
7012 6995
7013 base::FilePath crx_path = temp_dir().path().AppendASCII("webstore.crx"); 6996 base::FilePath crx_path = temp_dir().path().AppendASCII("webstore.crx");
7014 PackCRX(data_dir().AppendASCII("update_from_webstore"), 6997 PackCRX(data_dir().AppendASCII("update_from_webstore"),
7015 data_dir().AppendASCII("update_from_webstore.pem"), 6998 data_dir().AppendASCII("update_from_webstore.pem"),
7016 crx_path); 6999 crx_path);
7017 7000
(...skipping 20 matching lines...) Expand all
7038 // The Extension should be uninstalled. 7021 // The Extension should be uninstalled.
7039 EXPECT_FALSE(registry()->GetExtensionById(updates_from_webstore, 7022 EXPECT_FALSE(registry()->GetExtensionById(updates_from_webstore,
7040 ExtensionRegistry::EVERYTHING)); 7023 ExtensionRegistry::EVERYTHING));
7041 // The error should be removed. 7024 // The error should be removed.
7042 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError()); 7025 EXPECT_FALSE(service_->external_install_manager()->HasExternalInstallError());
7043 } 7026 }
7044 7027
7045 // Test that clicking to keep the extension on an external install warning 7028 // Test that clicking to keep the extension on an external install warning
7046 // re-enables the extension. 7029 // re-enables the extension.
7047 TEST_F(ExtensionServiceTest, ExternalInstallClickToKeep) { 7030 TEST_F(ExtensionServiceTest, ExternalInstallClickToKeep) {
7048 FeatureSwitch::ScopedOverride prompt(
7049 FeatureSwitch::prompt_for_external_extensions(), true);
7050 7031
7051 ExtensionServiceInitParams params = CreateDefaultInitParams(); 7032 ExtensionServiceInitParams params = CreateDefaultInitParams();
7052 params.is_first_run = false; 7033 params.is_first_run = false;
7053 InitializeExtensionService(params); 7034 InitializeExtensionService(params);
7054 7035
7055 base::FilePath crx_path = temp_dir().path().AppendASCII("webstore.crx"); 7036 base::FilePath crx_path = temp_dir().path().AppendASCII("webstore.crx");
7056 PackCRX(data_dir().AppendASCII("update_from_webstore"), 7037 PackCRX(data_dir().AppendASCII("update_from_webstore"),
7057 data_dir().AppendASCII("update_from_webstore.pem"), 7038 data_dir().AppendASCII("update_from_webstore.pem"),
7058 crx_path); 7039 crx_path);
7059 7040
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
7138 7119
7139 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, 7120 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED,
7140 content::Source<Profile>(profile()), 7121 content::Source<Profile>(profile()),
7141 content::NotificationService::NoDetails()); 7122 content::NotificationService::NoDetails());
7142 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); 7123 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_);
7143 EXPECT_EQ(0u, registry()->enabled_extensions().size()); 7124 EXPECT_EQ(0u, registry()->enabled_extensions().size());
7144 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 7125 EXPECT_EQ(0u, registry()->disabled_extensions().size());
7145 EXPECT_EQ(0u, registry()->terminated_extensions().size()); 7126 EXPECT_EQ(0u, registry()->terminated_extensions().size());
7146 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); 7127 EXPECT_EQ(0u, registry()->blacklisted_extensions().size());
7147 } 7128 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.cc ('k') | chrome/browser/extensions/extension_startup_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698