Chromium Code Reviews| 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. | |
|
Rick Campbell
2011/05/12 05:42:42
Reverse the sense of this comment to match the cod
Andrew T Wilson (Slow)
2011/05/12 23:34:31
Actually, I needed to reverse the sense of the cod
| |
| 93 manager.SetEnabled(false); | |
| 94 manager.DisableBackgroundMode(); | |
| 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 |