| Index: chrome/browser/background_mode_manager_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/background_mode_manager_unittest.cc (revision 86624)
|
| +++ 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),
|
| 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,77 @@
|
| 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, 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());
|
| +}
|
|
|