| Index: athena/activity/activity_manager_impl.cc
|
| diff --git a/athena/activity/activity_manager_impl.cc b/athena/activity/activity_manager_impl.cc
|
| index 32db67203413b582d056457eff74274cddd5922b..825ca90edabb8906977c87a4d4f00cacb80e7e14 100644
|
| --- a/athena/activity/activity_manager_impl.cc
|
| +++ b/athena/activity/activity_manager_impl.cc
|
| @@ -8,11 +8,15 @@
|
| #include <vector>
|
|
|
| #include "athena/activity/public/activity.h"
|
| +#include "athena/activity/public/activity_manager_observer.h"
|
| #include "athena/activity/public/activity_view_manager.h"
|
| #include "base/logging.h"
|
| +#include "base/observer_list.h"
|
|
|
| namespace athena {
|
|
|
| +class ActivityManagerObserver;
|
| +
|
| namespace {
|
|
|
| ActivityManager* instance = NULL;
|
| @@ -39,12 +43,18 @@ class ActivityManagerImpl : public ActivityManager {
|
| activities_.push_back(activity);
|
| ActivityViewManager* manager = ActivityViewManager::Get();
|
| manager->AddActivity(activity);
|
| + FOR_EACH_OBSERVER(ActivityManagerObserver,
|
| + observers_,
|
| + OnActivityStarted(activity));
|
| }
|
|
|
| virtual void RemoveActivity(Activity* activity) OVERRIDE {
|
| std::vector<Activity*>::iterator find = std::find(activities_.begin(),
|
| activities_.end(),
|
| activity);
|
| + FOR_EACH_OBSERVER(ActivityManagerObserver,
|
| + observers_,
|
| + OnActivityEnding(activity));
|
| if (find != activities_.end()) {
|
| activities_.erase(find);
|
|
|
| @@ -58,8 +68,17 @@ class ActivityManagerImpl : public ActivityManager {
|
| manager->UpdateActivity(activity);
|
| }
|
|
|
| + virtual void AddObserver(ActivityManagerObserver* observer) OVERRIDE {
|
| + observers_.AddObserver(observer);
|
| + }
|
| +
|
| + virtual void RemoveObserver(ActivityManagerObserver* observer) OVERRIDE {
|
| + observers_.RemoveObserver(observer);
|
| + }
|
| +
|
| private:
|
| std::vector<Activity*> activities_;
|
| + ObserverList<ActivityManagerObserver> observers_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(ActivityManagerImpl);
|
| };
|
|
|