Chromium Code Reviews| Index: chrome/browser/background_mode_manager_unittest.cc |
| =================================================================== |
| --- chrome/browser/background_mode_manager_unittest.cc (revision 86295) |
| +++ chrome/browser/background_mode_manager_unittest.cc (working copy) |
| @@ -13,6 +13,7 @@ |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +using testing::_; |
| using testing::AtLeast; |
| using testing::InSequence; |
| using testing::Return; |
| @@ -29,12 +30,12 @@ |
| class TestBackgroundModeManager : public BackgroundModeManager { |
| public: |
| - TestBackgroundModeManager(Profile* profile, CommandLine* cl) |
| - : BackgroundModeManager(profile, cl), |
| + explicit TestBackgroundModeManager(CommandLine* command_line) |
| + : BackgroundModeManager(command_line, false), |
| enabled_(true) {} |
| MOCK_METHOD1(EnableLaunchOnStartup, void(bool)); |
| - MOCK_METHOD0(CreateStatusTrayIcon, void()); |
| - MOCK_METHOD0(RemoveStatusTrayIcon, void()); |
| + MOCK_METHOD1(CreateStatusTrayIcon, void(Profile*)); // NOLINT |
| + MOCK_METHOD1(RemoveStatusTrayIcon, void(Profile*)); // NOLINT |
| virtual bool IsBackgroundModePrefEnabled() { return enabled_; } |
| void SetEnabled(bool enabled) { enabled_ = enabled; } |
| private: |
| @@ -44,12 +45,14 @@ |
| TEST_F(BackgroundModeManagerTest, BackgroundAppLoadUnload) { |
| InSequence s; |
| TestingProfile profile; |
| - TestBackgroundModeManager manager(&profile, command_line_.get()); |
| - EXPECT_CALL(manager, CreateStatusTrayIcon()); |
| - EXPECT_CALL(manager, RemoveStatusTrayIcon()); |
| + TestBackgroundModeManager manager(command_line_.get()); |
| + manager.RegisterProfile(&profile); |
| + EXPECT_CALL(manager, RemoveStatusTrayIcon(_)); |
| EXPECT_FALSE(BrowserList::WillKeepAlive()); |
| - // Call to AppLoaded() will cause the status tray to be created, then call to |
| - // unloaded will result in call to remove the icon. |
| + // Call to AppLoaded() will not cause the status tray to be created, |
| + // because no apps have been installed. However the call to AppUnloaded() |
| + // will result in a call RemoveStatusTrayIcon since it will try to unload |
| + // all icons now that there are no apps. |
| manager.OnBackgroundAppLoaded(); |
| EXPECT_TRUE(BrowserList::WillKeepAlive()); |
| manager.OnBackgroundAppUnloaded(); |
| @@ -59,35 +62,37 @@ |
| TEST_F(BackgroundModeManagerTest, BackgroundAppInstallUninstall) { |
| InSequence s; |
| TestingProfile profile; |
| - TestBackgroundModeManager manager(&profile, command_line_.get()); |
| + TestBackgroundModeManager manager(command_line_.get()); |
| + manager.RegisterProfile(&profile); |
| // Call to AppInstalled() will cause chrome to be set to launch on startup, |
| // and call to AppUninstalled() set chrome to not launch on startup. |
| EXPECT_CALL(manager, EnableLaunchOnStartup(true)); |
| - EXPECT_CALL(manager, CreateStatusTrayIcon()); |
| - EXPECT_CALL(manager, RemoveStatusTrayIcon()); |
| + EXPECT_CALL(manager, CreateStatusTrayIcon(_)); |
| + EXPECT_CALL(manager, RemoveStatusTrayIcon(_)).Times(2); |
| EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| - manager.OnBackgroundAppInstalled(NULL); |
| + manager.OnBackgroundAppInstalled(NULL, &profile); |
| manager.OnBackgroundAppLoaded(); |
| manager.OnBackgroundAppUnloaded(); |
| - manager.OnBackgroundAppUninstalled(); |
| -} |
| + manager.OnBackgroundAppUninstalled(&profile);} |
| // App installs while disabled should do nothing. |
| TEST_F(BackgroundModeManagerTest, BackgroundAppInstallUninstallWhileDisabled) { |
| InSequence s; |
| TestingProfile profile; |
| - TestBackgroundModeManager manager(&profile, command_line_.get()); |
| + TestBackgroundModeManager manager(command_line_.get()); |
| + manager.RegisterProfile(&profile); |
| // Turn off background mode. |
| + EXPECT_CALL(manager, RemoveStatusTrayIcon(_)); |
| manager.SetEnabled(false); |
| manager.DisableBackgroundMode(); |
| // Status tray icons will not be created, launch on startup status will be set |
| // to "do not launch on startup". |
| EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| - manager.OnBackgroundAppInstalled(NULL); |
| + manager.OnBackgroundAppInstalled(NULL, &profile); |
| manager.OnBackgroundAppLoaded(); |
| manager.OnBackgroundAppUnloaded(); |
| - manager.OnBackgroundAppUninstalled(); |
| + manager.OnBackgroundAppUninstalled(&profile); |
| // Re-enable background mode. |
| manager.SetEnabled(true); |
| @@ -99,29 +104,78 @@ |
| TEST_F(BackgroundModeManagerTest, EnableAfterBackgroundAppInstall) { |
| InSequence s; |
| TestingProfile profile; |
| - TestBackgroundModeManager manager(&profile, command_line_.get()); |
| + TestBackgroundModeManager manager(command_line_.get()); |
| + manager.RegisterProfile(&profile); |
| EXPECT_CALL(manager, EnableLaunchOnStartup(true)); |
| - EXPECT_CALL(manager, CreateStatusTrayIcon()); |
| - EXPECT_CALL(manager, RemoveStatusTrayIcon()); |
| + EXPECT_CALL(manager, CreateStatusTrayIcon(_)); |
| + EXPECT_CALL(manager, RemoveStatusTrayIcon(_)); |
| EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| - EXPECT_CALL(manager, CreateStatusTrayIcon()); |
| + //EXPECT_CALL(manager, CreateStatusTrayIcon(_)); |
|
Andrew T Wilson (Slow)
2011/05/24 20:49:28
nit: why is this commented out?
rpetterson
2011/05/24 21:48:43
Leftover from testing. Removed.
|
| EXPECT_CALL(manager, EnableLaunchOnStartup(true)); |
| - EXPECT_CALL(manager, RemoveStatusTrayIcon()); |
| + EXPECT_CALL(manager, RemoveStatusTrayIcon(_)).Times(2); |
| EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| // Install app, should show status tray icon. |
| - manager.OnBackgroundAppInstalled(NULL); |
| + manager.OnBackgroundAppInstalled(NULL, &profile); |
| + // OnBackgroundAppInstalled does not actually add an app to the |
| + // BackgroundApplicationListModel which would result in another |
| + // call to CreateStatusTray. |
| manager.OnBackgroundAppLoaded(); |
| // Turn off background mode - should hide status tray icon. |
| manager.SetEnabled(false); |
| manager.DisableBackgroundMode(); |
| - // Turn back on background mode - should show status tray icon. |
| + // Turn back on background mode - again, no status tray icon |
| + // will show up since we didn't actually add anything to the list. |
| manager.SetEnabled(true); |
| manager.EnableBackgroundMode(); |
| // Uninstall app, should hide status tray icon again. |
| manager.OnBackgroundAppUnloaded(); |
| - manager.OnBackgroundAppUninstalled(); |
| + manager.OnBackgroundAppUninstalled(&profile); |
| } |
| + |
| +TEST_F(BackgroundModeManagerTest, MultiProfile) { |
| + InSequence s; |
| + TestingProfile profile1; |
| + TestingProfile profile2; |
| + TestBackgroundModeManager manager(command_line_.get()); |
| + manager.RegisterProfile(&profile1); |
| + manager.RegisterProfile(&profile2); |
| + EXPECT_CALL(manager, EnableLaunchOnStartup(true)); |
| + EXPECT_CALL(manager, CreateStatusTrayIcon(_)).Times(2); |
| + EXPECT_CALL(manager, RemoveStatusTrayIcon(_)).Times(2); |
| + EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| + EXPECT_CALL(manager, EnableLaunchOnStartup(true)); |
| + EXPECT_CALL(manager, RemoveStatusTrayIcon(_)).Times(4); |
| + EXPECT_CALL(manager, EnableLaunchOnStartup(false)); |
| + EXPECT_FALSE(BrowserList::WillKeepAlive()); |
| + |
| + // Install app, should show status tray icon. |
| + manager.OnBackgroundAppInstalled(NULL, &profile1); |
| + // OnBackgroundAppInstalled does not actually add an app to the |
| + // BackgroundApplicationListModel which would result in another |
| + // call to CreateStatusTray. |
| + manager.OnBackgroundAppLoaded(); |
| + |
| + // Install app for other profile, hsould show other status tray icon. |
| + manager.OnBackgroundAppInstalled(NULL, &profile2); |
| + manager.OnBackgroundAppLoaded(); |
| + |
| + // Should hide both status tray icons. |
| + manager.SetEnabled(false); |
| + manager.DisableBackgroundMode(); |
| + |
| + // Turn back on background mode - should show both status tray icons. |
| + manager.SetEnabled(true); |
| + manager.EnableBackgroundMode(); |
| + |
| + manager.OnBackgroundAppUnloaded(); |
| + manager.OnBackgroundAppUninstalled(&profile1); |
| + // There is still one background app alive |
| + EXPECT_TRUE(BrowserList::WillKeepAlive()); |
| + manager.OnBackgroundAppUnloaded(); |
| + manager.OnBackgroundAppUninstalled(&profile2); |
| + EXPECT_FALSE(BrowserList::WillKeepAlive()); |
| +} |