1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_ASH_LAUNCHER_MULTI_PROFILE_BROWSER_STATUS_MONITOR_H_
6#define CHROME_BROWSER_UI_ASH_LAUNCHER_MULTI_PROFILE_BROWSER_STATUS_MONITOR_H_
7
8#include "chrome/browser/ui/ash/launcher/browser_status_monitor.h"
9
10// MultiProfileBrowserStatusMonitor uses mainly the BrowserStatusMonitor
11// with the addition that it creates and destroys launcher items for windowed
12// V1 apps - upon creation as well as upon user switch.
13class MultiProfileBrowserStatusMonitor : public BrowserStatusMonitor {
14 public:
15  explicit MultiProfileBrowserStatusMonitor(
16      ChromeLauncherController* launcher_controller);
17  virtual ~MultiProfileBrowserStatusMonitor();
18
19  // BrowserStatusMonitor overrides.
20  virtual void ActiveUserChanged(const std::string& user_email) OVERRIDE;
21  virtual void AddV1AppToShelf(Browser* browser) OVERRIDE;
22  virtual void RemoveV1AppFromShelf(Browser* browser) OVERRIDE;
23
24 private:
25  typedef std::vector<Browser*> AppList;
26  AppList app_list_;
27
28  // Connect a V1 app to the launcher.
29  void ConnectV1AppToLauncher(Browser* browser);
30
31  // Disconnect a V1 app from the launcher.
32  void DisconnectV1AppFromLauncher(Browser* browser);
33
34  // The launcher controller which is associated with this object.
35  ChromeLauncherController* launcher_controller_;
36
37  DISALLOW_COPY_AND_ASSIGN(MultiProfileBrowserStatusMonitor);
38};
39
40#endif  // CHROME_BROWSER_UI_ASH_LAUNCHER_MULTI_PROFILE_BROWSER_STATUS_MONITOR_H_
41