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