• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
13 namespace athena {
14 
15 class ActivityManagerObserver;
16 
17 class ActivityManagerImpl : public ActivityManager,
18                             public views::WidgetObserver {
19  public:
20   ActivityManagerImpl();
21   virtual ~ActivityManagerImpl();
22 
num_activities()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