Index: athena/activity/activity_manager_impl.cc |
diff --git a/athena/activity/activity_manager_impl.cc b/athena/activity/activity_manager_impl.cc |
index 09dd4785af07f76ab8039601c9a1cf4a16f998fe..c1e1faa6afa87a49dbdedf2a1323a7ed2688ee2c 100644 |
--- a/athena/activity/activity_manager_impl.cc |
+++ b/athena/activity/activity_manager_impl.cc |
@@ -7,8 +7,10 @@ |
#include <algorithm> |
#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 { |
@@ -37,11 +39,17 @@ void ActivityManagerImpl::AddActivity(Activity* activity) { |
activities_.push_back(activity); |
ActivityViewManager* manager = ActivityViewManager::Get(); |
manager->AddActivity(activity); |
+ FOR_EACH_OBSERVER(ActivityManagerObserver, |
+ observers_, |
+ OnActivityStarted(activity)); |
} |
void ActivityManagerImpl::RemoveActivity(Activity* activity) { |
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); |
ActivityViewManager* manager = ActivityViewManager::Get(); |
@@ -54,6 +62,14 @@ void ActivityManagerImpl::UpdateActivity(Activity* activity) { |
manager->UpdateActivity(activity); |
} |
+void ActivityManagerImpl::AddObserver(ActivityManagerObserver* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
+void ActivityManagerImpl::RemoveObserver(ActivityManagerObserver* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
// static |
ActivityManager* ActivityManager::Create() { |
ActivityViewManager::Create(); |
@@ -73,4 +89,5 @@ void ActivityManager::Shutdown() { |
ActivityViewManager::Shutdown(); |
} |
+ |
} // namespace athena |