1// Copyright 2014 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 ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_
6#define ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_
7
8#include "athena/athena_export.h"
9
10namespace aura {
11class Window;
12}
13
14namespace athena {
15
16class Activity;
17class ActivityManagerObserver;
18
19// Manages a set of activities.
20class ATHENA_EXPORT ActivityManager {
21 public:
22  static ActivityManager* Create();
23  static ActivityManager* Get();
24  static void Shutdown();
25
26  virtual ~ActivityManager() {}
27
28  // Adds/Removes an activity. ActivityManager owns the activities.
29  virtual void AddActivity(Activity* activity) = 0;
30  virtual void RemoveActivity(Activity* activity) = 0;
31
32  // Returns the activity that has a |window| as toplevel window, or
33  // NULL if such activity does not exist.
34  virtual Activity* GetActivityForWindow(aura::Window* window) = 0;
35
36  // Updates the UI when the task color/title changes.
37  virtual void UpdateActivity(Activity* activity) = 0;
38
39  virtual void AddObserver(ActivityManagerObserver* observer) = 0;
40  virtual void RemoveObserver(ActivityManagerObserver* observer) = 0;
41};
42
43}  // namespace athena
44
45#endif  // ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_
46