OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "chrome/browser/background/background_mode_manager.h" | 9 #include "chrome/browser/background/background_mode_manager.h" |
10 #include "chrome/browser/browser_shutdown.h" | 10 #include "chrome/browser/browser_shutdown.h" |
11 #include "chrome/browser/extensions/extension_function_test_utils.h" | 11 #include "chrome/browser/extensions/extension_function_test_utils.h" |
12 #include "chrome/browser/extensions/extension_service.h" | 12 #include "chrome/browser/extensions/extension_service.h" |
13 #include "chrome/browser/extensions/test_extension_system.h" | 13 #include "chrome/browser/extensions/test_extension_system.h" |
14 #include "chrome/browser/lifetime/application_lifetime.h" | 14 #include "chrome/browser/lifetime/application_lifetime.h" |
15 #include "chrome/browser/profiles/profile_info_cache.h" | 15 #include "chrome/browser/profiles/profile_info_cache.h" |
16 #include "chrome/browser/status_icons/status_icon_menu_model.h" | 16 #include "chrome/browser/status_icons/status_icon_menu_model.h" |
17 #include "chrome/common/chrome_switches.h" | 17 #include "chrome/common/chrome_switches.h" |
18 #include "chrome/test/base/testing_browser_process.h" | 18 #include "chrome/test/base/testing_browser_process.h" |
19 #include "chrome/test/base/testing_profile.h" | 19 #include "chrome/test/base/testing_profile.h" |
20 #include "chrome/test/base/testing_profile_manager.h" | 20 #include "chrome/test/base/testing_profile_manager.h" |
21 #include "content/public/test/test_browser_thread_bundle.h" | 21 #include "content/public/test/test_browser_thread_bundle.h" |
| 22 #include "extensions/browser/extension_prefs.h" |
22 #include "extensions/browser/extension_system.h" | 23 #include "extensions/browser/extension_system.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
24 #include "ui/gfx/image/image.h" | 25 #include "ui/gfx/image/image.h" |
25 #include "ui/gfx/image/image_unittest_util.h" | 26 #include "ui/gfx/image/image_unittest_util.h" |
26 #include "ui/message_center/message_center.h" | 27 #include "ui/message_center/message_center.h" |
27 | 28 |
28 #if defined(OS_CHROMEOS) | 29 #if defined(OS_CHROMEOS) |
29 #include "chrome/browser/chromeos/login/users/user_manager.h" | 30 #include "chrome/browser/chromeos/login/users/user_manager.h" |
30 #include "chrome/browser/chromeos/settings/cros_settings.h" | 31 #include "chrome/browser/chromeos/settings/cros_settings.h" |
31 #include "chrome/browser/chromeos/settings/device_settings_service.h" | 32 #include "chrome/browser/chromeos/settings/device_settings_service.h" |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 // center during cleanup. | 262 // center during cleanup. |
262 message_center::MessageCenter::Shutdown(); | 263 message_center::MessageCenter::Shutdown(); |
263 | 264 |
264 // Clear the shutdown flag to isolate the remaining effect of this test. | 265 // Clear the shutdown flag to isolate the remaining effect of this test. |
265 browser_shutdown::SetTryingToQuit(false); | 266 browser_shutdown::SetTryingToQuit(false); |
266 } | 267 } |
267 | 268 |
268 protected: | 269 protected: |
269 scoped_ptr<SimpleTestBackgroundModeManager> manager_; | 270 scoped_ptr<SimpleTestBackgroundModeManager> manager_; |
270 | 271 |
| 272 void AddEphemeralApp(const extensions::Extension* extension, |
| 273 ExtensionService* service) { |
| 274 extensions::ExtensionPrefs* prefs = |
| 275 extensions::ExtensionPrefs::Get(service->profile()); |
| 276 ASSERT_TRUE(prefs); |
| 277 prefs->OnExtensionInstalled(extension, |
| 278 extensions::Extension::ENABLED, |
| 279 syncer::StringOrdinal(), |
| 280 extensions::kInstallFlagIsEphemeral, |
| 281 std::string()); |
| 282 |
| 283 service->AddExtension(extension); |
| 284 } |
| 285 |
271 private: | 286 private: |
272 // Required for extension service. | 287 // Required for extension service. |
273 content::TestBrowserThreadBundle thread_bundle_; | 288 content::TestBrowserThreadBundle thread_bundle_; |
274 | 289 |
275 #if defined(OS_CHROMEOS) | 290 #if defined(OS_CHROMEOS) |
276 // ChromeOS needs extra services to run in the following order. | 291 // ChromeOS needs extra services to run in the following order. |
277 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; | 292 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; |
278 chromeos::ScopedTestCrosSettings test_cros_settings_; | 293 chromeos::ScopedTestCrosSettings test_cros_settings_; |
279 chromeos::ScopedTestUserManager test_user_manager_; | 294 chromeos::ScopedTestUserManager test_user_manager_; |
280 #endif | 295 #endif |
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 | 826 |
812 scoped_refptr<extensions::Extension> upgraded_no_bg_ext_has_bg( | 827 scoped_refptr<extensions::Extension> upgraded_no_bg_ext_has_bg( |
813 CreateExtension( | 828 CreateExtension( |
814 extensions::Manifest::COMMAND_LINE, | 829 extensions::Manifest::COMMAND_LINE, |
815 "{\"name\": \"Regular Extension\", " | 830 "{\"name\": \"Regular Extension\", " |
816 "\"version\": \"2.0\"," | 831 "\"version\": \"2.0\"," |
817 "\"manifest_version\": 2," | 832 "\"manifest_version\": 2," |
818 "\"permissions\": [\"background\"]}", | 833 "\"permissions\": [\"background\"]}", |
819 "ID-2")); | 834 "ID-2")); |
820 | 835 |
| 836 scoped_refptr<extensions::Extension> ephemeral_app( |
| 837 CreateExtension( |
| 838 extensions::Manifest::COMMAND_LINE, |
| 839 "{\"name\": \"Ephemeral App\", " |
| 840 "\"version\": \"1.0\"," |
| 841 "\"manifest_version\": 2," |
| 842 "\"permissions\": [\"pushMessaging\"]}", |
| 843 "ID-3")); |
| 844 |
821 static_cast<extensions::TestExtensionSystem*>( | 845 static_cast<extensions::TestExtensionSystem*>( |
822 extensions::ExtensionSystem::Get(profile_))->CreateExtensionService( | 846 extensions::ExtensionSystem::Get(profile_))->CreateExtensionService( |
823 CommandLine::ForCurrentProcess(), | 847 CommandLine::ForCurrentProcess(), |
824 base::FilePath(), | 848 base::FilePath(), |
825 false); | 849 false); |
826 | 850 |
827 ExtensionService* service = | 851 ExtensionService* service = |
828 extensions::ExtensionSystem::Get(profile_)->extension_service(); | 852 extensions::ExtensionSystem::Get(profile_)->extension_service(); |
829 DCHECK(!service->is_ready()); | 853 DCHECK(!service->is_ready()); |
830 service->Init(); | 854 service->Init(); |
(...skipping 12 matching lines...) Expand all Loading... |
843 EXPECT_FALSE(manager_->HasShownBalloon()); | 867 EXPECT_FALSE(manager_->HasShownBalloon()); |
844 | 868 |
845 // Upgrading an extension that has background should not reshow the balloon. | 869 // Upgrading an extension that has background should not reshow the balloon. |
846 service->AddExtension(upgraded_bg_ext); | 870 service->AddExtension(upgraded_bg_ext); |
847 EXPECT_FALSE(manager_->HasShownBalloon()); | 871 EXPECT_FALSE(manager_->HasShownBalloon()); |
848 | 872 |
849 // Upgrading an extension that didn't have background to one that does should | 873 // Upgrading an extension that didn't have background to one that does should |
850 // show the balloon. | 874 // show the balloon. |
851 service->AddExtension(upgraded_no_bg_ext_has_bg); | 875 service->AddExtension(upgraded_no_bg_ext_has_bg); |
852 EXPECT_TRUE(manager_->HasShownBalloon()); | 876 EXPECT_TRUE(manager_->HasShownBalloon()); |
| 877 |
| 878 // Installing an ephemeral app should not show the balloon. |
| 879 manager_->SetHasShownBalloon(false); |
| 880 AddEphemeralApp(ephemeral_app.get(), service); |
| 881 EXPECT_FALSE(manager_->HasShownBalloon()); |
| 882 |
| 883 // Promoting the ephemeral app to a regular installed app should now show |
| 884 // the balloon. |
| 885 service->PromoteEphemeralApp(ephemeral_app.get(), false /*from sync*/); |
| 886 EXPECT_TRUE(manager_->HasShownBalloon()); |
853 } | 887 } |
OLD | NEW |