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

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

Issue 1148323007: [Extensions] Introduce a ScopedExtensionDialogAutoConfirm (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Latest master Created 5 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
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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 #include "content/public/browser/gpu_data_manager.h" 79 #include "content/public/browser/gpu_data_manager.h"
80 #include "content/public/browser/indexed_db_context.h" 80 #include "content/public/browser/indexed_db_context.h"
81 #include "content/public/browser/notification_registrar.h" 81 #include "content/public/browser/notification_registrar.h"
82 #include "content/public/browser/notification_service.h" 82 #include "content/public/browser/notification_service.h"
83 #include "content/public/browser/plugin_service.h" 83 #include "content/public/browser/plugin_service.h"
84 #include "content/public/browser/render_process_host.h" 84 #include "content/public/browser/render_process_host.h"
85 #include "content/public/browser/storage_partition.h" 85 #include "content/public/browser/storage_partition.h"
86 #include "content/public/common/content_constants.h" 86 #include "content/public/common/content_constants.h"
87 #include "content/public/test/test_browser_thread_bundle.h" 87 #include "content/public/test/test_browser_thread_bundle.h"
88 #include "content/public/test/test_utils.h" 88 #include "content/public/test/test_utils.h"
89 #include "extensions/browser/extension_dialog_auto_confirm.h"
89 #include "extensions/browser/extension_prefs.h" 90 #include "extensions/browser/extension_prefs.h"
90 #include "extensions/browser/extension_registry.h" 91 #include "extensions/browser/extension_registry.h"
91 #include "extensions/browser/extension_system.h" 92 #include "extensions/browser/extension_system.h"
92 #include "extensions/browser/external_provider_interface.h" 93 #include "extensions/browser/external_provider_interface.h"
93 #include "extensions/browser/install_flag.h" 94 #include "extensions/browser/install_flag.h"
94 #include "extensions/browser/management_policy.h" 95 #include "extensions/browser/management_policy.h"
95 #include "extensions/browser/test_management_policy.h" 96 #include "extensions/browser/test_management_policy.h"
96 #include "extensions/browser/uninstall_reason.h" 97 #include "extensions/browser/uninstall_reason.h"
97 #include "extensions/common/constants.h" 98 #include "extensions/common/constants.h"
98 #include "extensions/common/extension.h" 99 #include "extensions/common/extension.h"
(...skipping 2743 matching lines...) Expand 10 before | Expand all | Expand 10 after
2842 // Only run this on platforms that support NPAPI plugins. 2843 // Only run this on platforms that support NPAPI plugins.
2843 TEST_F(ExtensionServiceTest, LoadExtensionsWithPlugins) { 2844 TEST_F(ExtensionServiceTest, LoadExtensionsWithPlugins) {
2844 base::FilePath extension_with_plugin_path = good1_path(); 2845 base::FilePath extension_with_plugin_path = good1_path();
2845 base::FilePath extension_no_plugin_path = good2_path(); 2846 base::FilePath extension_no_plugin_path = good2_path();
2846 2847
2847 InitPluginService(); 2848 InitPluginService();
2848 InitializeEmptyExtensionService(); 2849 InitializeEmptyExtensionService();
2849 service()->set_show_extensions_prompts(true); 2850 service()->set_show_extensions_prompts(true);
2850 2851
2851 // Start by canceling any install prompts. 2852 // Start by canceling any install prompts.
2852 ExtensionInstallPrompt::g_auto_confirm_for_tests = 2853 scoped_ptr<extensions::ScopedTestDialogAutoConfirm> auto_confirm(
2853 ExtensionInstallPrompt::CANCEL; 2854 new extensions::ScopedTestDialogAutoConfirm(
2855 extensions::ScopedTestDialogAutoConfirm::CANCEL));
2854 2856
2855 // The extension that has a plugin should not install. 2857 // The extension that has a plugin should not install.
2856 extensions::UnpackedInstaller::Create(service()) 2858 extensions::UnpackedInstaller::Create(service())
2857 ->Load(extension_with_plugin_path); 2859 ->Load(extension_with_plugin_path);
2858 base::RunLoop().RunUntilIdle(); 2860 base::RunLoop().RunUntilIdle();
2859 EXPECT_EQ(0u, GetErrors().size()); 2861 EXPECT_EQ(0u, GetErrors().size());
2860 EXPECT_EQ(0u, loaded_.size()); 2862 EXPECT_EQ(0u, loaded_.size());
2861 EXPECT_EQ(0u, registry()->enabled_extensions().size()); 2863 EXPECT_EQ(0u, registry()->enabled_extensions().size());
2862 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 2864 EXPECT_EQ(0u, registry()->disabled_extensions().size());
2863 2865
2864 // But the extension with no plugin should since there's no prompt. 2866 // But the extension with no plugin should since there's no prompt.
2865 ExtensionErrorReporter::GetInstance()->ClearErrors(); 2867 ExtensionErrorReporter::GetInstance()->ClearErrors();
2866 extensions::UnpackedInstaller::Create(service()) 2868 extensions::UnpackedInstaller::Create(service())
2867 ->Load(extension_no_plugin_path); 2869 ->Load(extension_no_plugin_path);
2868 base::RunLoop().RunUntilIdle(); 2870 base::RunLoop().RunUntilIdle();
2869 EXPECT_EQ(0u, GetErrors().size()); 2871 EXPECT_EQ(0u, GetErrors().size());
2870 EXPECT_EQ(1u, loaded_.size()); 2872 EXPECT_EQ(1u, loaded_.size());
2871 EXPECT_EQ(1u, registry()->enabled_extensions().size()); 2873 EXPECT_EQ(1u, registry()->enabled_extensions().size());
2872 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 2874 EXPECT_EQ(0u, registry()->disabled_extensions().size());
2873 EXPECT_TRUE(registry()->enabled_extensions().Contains(good2)); 2875 EXPECT_TRUE(registry()->enabled_extensions().Contains(good2));
2874 2876
2875 // The plugin extension should install if we accept the dialog. 2877 // The plugin extension should install if we accept the dialog.
2876 ExtensionInstallPrompt::g_auto_confirm_for_tests = 2878 auto_confirm.reset();
2877 ExtensionInstallPrompt::ACCEPT; 2879 auto_confirm.reset(new extensions::ScopedTestDialogAutoConfirm(
2880 extensions::ScopedTestDialogAutoConfirm::ACCEPT));
2878 2881
2879 ExtensionErrorReporter::GetInstance()->ClearErrors(); 2882 ExtensionErrorReporter::GetInstance()->ClearErrors();
2880 extensions::UnpackedInstaller::Create(service()) 2883 extensions::UnpackedInstaller::Create(service())
2881 ->Load(extension_with_plugin_path); 2884 ->Load(extension_with_plugin_path);
2882 base::RunLoop().RunUntilIdle(); 2885 base::RunLoop().RunUntilIdle();
2883 EXPECT_EQ(0u, GetErrors().size()); 2886 EXPECT_EQ(0u, GetErrors().size());
2884 EXPECT_EQ(2u, loaded_.size()); 2887 EXPECT_EQ(2u, loaded_.size());
2885 EXPECT_EQ(2u, registry()->enabled_extensions().size()); 2888 EXPECT_EQ(2u, registry()->enabled_extensions().size());
2886 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 2889 EXPECT_EQ(0u, registry()->disabled_extensions().size());
2887 EXPECT_TRUE(registry()->enabled_extensions().Contains(good1)); 2890 EXPECT_TRUE(registry()->enabled_extensions().Contains(good1));
2888 EXPECT_TRUE(registry()->enabled_extensions().Contains(good2)); 2891 EXPECT_TRUE(registry()->enabled_extensions().Contains(good2));
2889 2892
2890 // Make sure the granted permissions have been setup. 2893 // Make sure the granted permissions have been setup.
2891 scoped_refptr<PermissionSet> permissions( 2894 scoped_refptr<PermissionSet> permissions(
2892 ExtensionPrefs::Get(profile())->GetGrantedPermissions(good1)); 2895 ExtensionPrefs::Get(profile())->GetGrantedPermissions(good1));
2893 EXPECT_FALSE(permissions->IsEmpty()); 2896 EXPECT_FALSE(permissions->IsEmpty());
2894 EXPECT_TRUE(permissions->HasEffectiveFullAccess()); 2897 EXPECT_TRUE(permissions->HasEffectiveFullAccess());
2895 EXPECT_FALSE(permissions->apis().empty()); 2898 EXPECT_FALSE(permissions->apis().empty());
2896 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kPlugin)); 2899 EXPECT_TRUE(permissions->HasAPIPermission(APIPermission::kPlugin));
2897 2900
2898 // We should be able to reload the extension without getting another prompt. 2901 // We should be able to reload the extension without getting another prompt.
2899 loaded_.clear(); 2902 loaded_.clear();
2900 ExtensionInstallPrompt::g_auto_confirm_for_tests = 2903 auto_confirm.reset();
2901 ExtensionInstallPrompt::CANCEL; 2904 auto_confirm.reset(new extensions::ScopedTestDialogAutoConfirm(
2905 extensions::ScopedTestDialogAutoConfirm::CANCEL));
2902 2906
2903 service()->ReloadExtension(good1); 2907 service()->ReloadExtension(good1);
2904 base::RunLoop().RunUntilIdle(); 2908 base::RunLoop().RunUntilIdle();
2905 EXPECT_EQ(1u, loaded_.size()); 2909 EXPECT_EQ(1u, loaded_.size());
2906 EXPECT_EQ(2u, registry()->enabled_extensions().size()); 2910 EXPECT_EQ(2u, registry()->enabled_extensions().size());
2907 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 2911 EXPECT_EQ(0u, registry()->disabled_extensions().size());
2908 } 2912 }
2909 #endif // !defined(OS_POSIX) || defined(OS_MACOSX) 2913 #endif // !defined(OS_POSIX) || defined(OS_MACOSX)
2910 2914
2911 namespace { 2915 namespace {
(...skipping 5152 matching lines...) Expand 10 before | Expand all | Expand 10 after
8064 8068
8065 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, 8069 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED,
8066 content::Source<Profile>(profile()), 8070 content::Source<Profile>(profile()),
8067 content::NotificationService::NoDetails()); 8071 content::NotificationService::NoDetails());
8068 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); 8072 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_);
8069 EXPECT_EQ(0u, registry()->enabled_extensions().size()); 8073 EXPECT_EQ(0u, registry()->enabled_extensions().size());
8070 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 8074 EXPECT_EQ(0u, registry()->disabled_extensions().size());
8071 EXPECT_EQ(0u, registry()->terminated_extensions().size()); 8075 EXPECT_EQ(0u, registry()->terminated_extensions().size());
8072 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); 8076 EXPECT_EQ(0u, registry()->blacklisted_extensions().size());
8073 } 8077 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698