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#include "athena/activity/public/activity_manager.h"
6
7#include <vector>
8
9#include "base/macros.h"
10#include "base/observer_list.h"
11#include "ui/views/widget/widget_observer.h"
12
13namespace athena {
14
15class ActivityManagerObserver;
16
17class ActivityManagerImpl : public ActivityManager,
18                            public views::WidgetObserver {
19 public:
20  ActivityManagerImpl();
21  virtual ~ActivityManagerImpl();
22
23  int num_activities() const { return activities_.size(); }
24
25  // ActivityManager:
26  virtual void AddActivity(Activity* activity) OVERRIDE;
27  virtual void RemoveActivity(Activity* activity) OVERRIDE;
28  virtual void UpdateActivity(Activity* activity) OVERRIDE;
29  virtual Activity* GetActivityForWindow(aura::Window* window) OVERRIDE;
30  virtual void AddObserver(ActivityManagerObserver* observer) OVERRIDE;
31  virtual void RemoveObserver(ActivityManagerObserver* observer) OVERRIDE;
32
33  // views::WidgetObserver
34  virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
35
36 private:
37  std::vector<Activity*> activities_;
38
39  ObserverList<ActivityManagerObserver> observers_;
40
41  DISALLOW_COPY_AND_ASSIGN(ActivityManagerImpl);
42};
43
44}  // namespace athena
45