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 "chrome/browser/background_mode_manager.h" | 7 #include "chrome/browser/background_mode_manager.h" |
8 #include "chrome/browser/ui/browser_list.h" | 8 #include "chrome/browser/ui/browser_list.h" |
9 #include "chrome/common/chrome_switches.h" | 9 #include "chrome/common/chrome_switches.h" |
10 #include "chrome/test/testing_browser_process.h" | 10 #include "chrome/test/testing_browser_process.h" |
11 #include "chrome/test/testing_browser_process_test.h" | 11 #include "chrome/test/testing_browser_process_test.h" |
12 #include "chrome/test/testing_profile.h" | 12 #include "chrome/test/testing_profile.h" |
13 #include "testing/gmock/include/gmock/gmock.h" | 13 #include "testing/gmock/include/gmock/gmock.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 | 15 |
| 16 using testing::AtLeast; |
16 using testing::InSequence; | 17 using testing::InSequence; |
| 18 using testing::Return; |
17 | 19 |
18 class BackgroundModeManagerTest : public TestingBrowserProcessTest { | 20 class BackgroundModeManagerTest : public TestingBrowserProcessTest { |
19 public: | 21 public: |
20 BackgroundModeManagerTest() {} | 22 BackgroundModeManagerTest() {} |
21 ~BackgroundModeManagerTest() {} | 23 ~BackgroundModeManagerTest() {} |
22 void SetUp() { | 24 void SetUp() { |
23 command_line_.reset(new CommandLine(CommandLine::NO_PROGRAM)); | 25 command_line_.reset(new CommandLine(CommandLine::NO_PROGRAM)); |
24 } | 26 } |
25 scoped_ptr<CommandLine> command_line_; | 27 scoped_ptr<CommandLine> command_line_; |
26 }; | 28 }; |
27 | 29 |
28 class TestBackgroundModeManager : public BackgroundModeManager { | 30 class TestBackgroundModeManager : public BackgroundModeManager { |
29 public: | 31 public: |
30 TestBackgroundModeManager(Profile* profile, CommandLine* cl) | 32 TestBackgroundModeManager(Profile* profile, CommandLine* cl) |
31 : BackgroundModeManager(profile, cl) { | 33 : BackgroundModeManager(profile, cl), |
32 } | 34 enabled_(true) {} |
33 MOCK_METHOD1(EnableLaunchOnStartup, void(bool)); | 35 MOCK_METHOD1(EnableLaunchOnStartup, void(bool)); |
34 MOCK_METHOD0(CreateStatusTrayIcon, void()); | 36 MOCK_METHOD0(CreateStatusTrayIcon, void()); |
35 MOCK_METHOD0(RemoveStatusTrayIcon, void()); | 37 MOCK_METHOD0(RemoveStatusTrayIcon, void()); |
| 38 virtual bool IsBackgroundModePrefEnabled() { return enabled_; } |
| 39 void SetEnabled(bool enabled) { enabled_ = enabled; } |
| 40 private: |
| 41 bool enabled_; |
36 }; | 42 }; |
37 | 43 |
38 TEST_F(BackgroundModeManagerTest, BackgroundAppLoadUnload) { | 44 TEST_F(BackgroundModeManagerTest, BackgroundAppLoadUnload) { |
39 InSequence s; | 45 InSequence s; |
40 TestingProfile profile; | 46 TestingProfile profile; |
41 TestBackgroundModeManager manager(&profile, command_line_.get()); | 47 TestBackgroundModeManager manager(&profile, command_line_.get()); |
42 EXPECT_CALL(manager, CreateStatusTrayIcon()); | 48 EXPECT_CALL(manager, CreateStatusTrayIcon()); |
43 EXPECT_CALL(manager, RemoveStatusTrayIcon()); | 49 EXPECT_CALL(manager, RemoveStatusTrayIcon()); |
44 EXPECT_FALSE(BrowserList::WillKeepAlive()); | 50 EXPECT_FALSE(BrowserList::WillKeepAlive()); |
45 // Call to AppLoaded() will cause the status tray to be created, then call to | 51 // Call to AppLoaded() will cause the status tray to be created, then call to |
(...skipping 12 matching lines...) Expand all Loading... |
58 // and call to AppUninstalled() set chrome to not launch on startup. | 64 // and call to AppUninstalled() set chrome to not launch on startup. |
59 EXPECT_CALL(manager, EnableLaunchOnStartup(true)); | 65 EXPECT_CALL(manager, EnableLaunchOnStartup(true)); |
60 EXPECT_CALL(manager, CreateStatusTrayIcon()); | 66 EXPECT_CALL(manager, CreateStatusTrayIcon()); |
61 EXPECT_CALL(manager, RemoveStatusTrayIcon()); | 67 EXPECT_CALL(manager, RemoveStatusTrayIcon()); |
62 EXPECT_CALL(manager, EnableLaunchOnStartup(false)); | 68 EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
63 manager.OnBackgroundAppInstalled(NULL); | 69 manager.OnBackgroundAppInstalled(NULL); |
64 manager.OnBackgroundAppLoaded(); | 70 manager.OnBackgroundAppLoaded(); |
65 manager.OnBackgroundAppUnloaded(); | 71 manager.OnBackgroundAppUnloaded(); |
66 manager.OnBackgroundAppUninstalled(); | 72 manager.OnBackgroundAppUninstalled(); |
67 } | 73 } |
| 74 |
| 75 // App installs while disabled should do nothing. |
| 76 TEST_F(BackgroundModeManagerTest, BackgroundAppInstallUninstallWhileDisabled) { |
| 77 InSequence s; |
| 78 TestingProfile profile; |
| 79 TestBackgroundModeManager manager(&profile, command_line_.get()); |
| 80 // Turn off background mode. |
| 81 manager.SetEnabled(false); |
| 82 manager.DisableBackgroundMode(); |
| 83 |
| 84 // Status tray icons will not be created, launch on startup status will be set |
| 85 // to "do not launch on startup". |
| 86 EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| 87 manager.OnBackgroundAppInstalled(NULL); |
| 88 manager.OnBackgroundAppLoaded(); |
| 89 manager.OnBackgroundAppUnloaded(); |
| 90 manager.OnBackgroundAppUninstalled(); |
| 91 |
| 92 // Re-enable background mode. |
| 93 manager.SetEnabled(true); |
| 94 manager.EnableBackgroundMode(); |
| 95 } |
| 96 |
| 97 |
| 98 // App installs while disabled should do nothing. |
| 99 TEST_F(BackgroundModeManagerTest, EnableAfterBackgroundAppInstall) { |
| 100 InSequence s; |
| 101 TestingProfile profile; |
| 102 TestBackgroundModeManager manager(&profile, command_line_.get()); |
| 103 EXPECT_CALL(manager, EnableLaunchOnStartup(true)); |
| 104 EXPECT_CALL(manager, CreateStatusTrayIcon()); |
| 105 EXPECT_CALL(manager, RemoveStatusTrayIcon()); |
| 106 EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| 107 EXPECT_CALL(manager, CreateStatusTrayIcon()); |
| 108 EXPECT_CALL(manager, EnableLaunchOnStartup(true)); |
| 109 EXPECT_CALL(manager, RemoveStatusTrayIcon()); |
| 110 EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| 111 |
| 112 // Install app, should show status tray icon. |
| 113 manager.OnBackgroundAppInstalled(NULL); |
| 114 manager.OnBackgroundAppLoaded(); |
| 115 |
| 116 // Turn off background mode - should hide status tray icon. |
| 117 manager.SetEnabled(false); |
| 118 manager.DisableBackgroundMode(); |
| 119 |
| 120 // Turn back on background mode - should show status tray icon. |
| 121 manager.SetEnabled(true); |
| 122 manager.EnableBackgroundMode(); |
| 123 |
| 124 // Uninstall app, should hide status tray icon again. |
| 125 manager.OnBackgroundAppUnloaded(); |
| 126 manager.OnBackgroundAppUninstalled(); |
| 127 } |
OLD | NEW |