Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: athena/activity/activity_manager_impl.cc

Issue 513523002: Adding Baseframework of the ResourceManager (all hooks and observers) are being put in place with a… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | athena/activity/public/activity_manager.h » ('j') | athena/athena.gyp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "athena/activity/public/activity_manager.h" 5 #include "athena/activity/public/activity_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "athena/activity/public/activity.h" 10 #include "athena/activity/public/activity.h"
11 #include "athena/activity/public/activity_manager_observer.h"
11 #include "athena/activity/public/activity_view_manager.h" 12 #include "athena/activity/public/activity_view_manager.h"
12 #include "base/logging.h" 13 #include "base/logging.h"
14 #include "base/observer_list.h"
13 15
14 namespace athena { 16 namespace athena {
15 17
18 class ActivityManagerObserver;
19
16 namespace { 20 namespace {
17 21
18 ActivityManager* instance = NULL; 22 ActivityManager* instance = NULL;
19 23
20 class ActivityManagerImpl : public ActivityManager { 24 class ActivityManagerImpl : public ActivityManager {
21 public: 25 public:
22 ActivityManagerImpl() { 26 ActivityManagerImpl() {
23 CHECK(!instance); 27 CHECK(!instance);
24 instance = this; 28 instance = this;
25 } 29 }
26 virtual ~ActivityManagerImpl() { 30 virtual ~ActivityManagerImpl() {
27 while (!activities_.empty()) 31 while (!activities_.empty())
28 delete activities_.front(); 32 delete activities_.front();
29 33
30 CHECK_EQ(this, instance); 34 CHECK_EQ(this, instance);
31 instance = NULL; 35 instance = NULL;
32 } 36 }
33 37
34 // ActivityManager: 38 // ActivityManager:
35 virtual void AddActivity(Activity* activity) OVERRIDE { 39 virtual void AddActivity(Activity* activity) OVERRIDE {
36 CHECK(activities_.end() == std::find(activities_.begin(), 40 CHECK(activities_.end() == std::find(activities_.begin(),
37 activities_.end(), 41 activities_.end(),
38 activity)); 42 activity));
39 activities_.push_back(activity); 43 activities_.push_back(activity);
40 ActivityViewManager* manager = ActivityViewManager::Get(); 44 ActivityViewManager* manager = ActivityViewManager::Get();
41 manager->AddActivity(activity); 45 manager->AddActivity(activity);
46 FOR_EACH_OBSERVER(ActivityManagerObserver,
47 observers_,
48 OnActivityStarted(activity));
42 } 49 }
43 50
44 virtual void RemoveActivity(Activity* activity) OVERRIDE { 51 virtual void RemoveActivity(Activity* activity) OVERRIDE {
45 std::vector<Activity*>::iterator find = std::find(activities_.begin(), 52 std::vector<Activity*>::iterator find = std::find(activities_.begin(),
46 activities_.end(), 53 activities_.end(),
47 activity); 54 activity);
55 FOR_EACH_OBSERVER(ActivityManagerObserver,
56 observers_,
57 OnActivityEnding(activity));
48 if (find != activities_.end()) { 58 if (find != activities_.end()) {
49 activities_.erase(find); 59 activities_.erase(find);
50 60
51 ActivityViewManager* manager = ActivityViewManager::Get(); 61 ActivityViewManager* manager = ActivityViewManager::Get();
52 manager->RemoveActivity(activity); 62 manager->RemoveActivity(activity);
53 } 63 }
54 } 64 }
55 65
56 virtual void UpdateActivity(Activity* activity) OVERRIDE { 66 virtual void UpdateActivity(Activity* activity) OVERRIDE {
57 ActivityViewManager* manager = ActivityViewManager::Get(); 67 ActivityViewManager* manager = ActivityViewManager::Get();
58 manager->UpdateActivity(activity); 68 manager->UpdateActivity(activity);
59 } 69 }
60 70
71 virtual void AddObserver(ActivityManagerObserver* observer) OVERRIDE {
72 observers_.AddObserver(observer);
73 }
74
75 virtual void RemoveObserver(ActivityManagerObserver* observer) OVERRIDE {
76 observers_.RemoveObserver(observer);
77 }
78
61 private: 79 private:
62 std::vector<Activity*> activities_; 80 std::vector<Activity*> activities_;
81 ObserverList<ActivityManagerObserver> observers_;
63 82
64 DISALLOW_COPY_AND_ASSIGN(ActivityManagerImpl); 83 DISALLOW_COPY_AND_ASSIGN(ActivityManagerImpl);
65 }; 84 };
66 85
67 } // namespace 86 } // namespace
68 87
69 // static 88 // static
70 ActivityManager* ActivityManager::Create() { 89 ActivityManager* ActivityManager::Create() {
71 ActivityViewManager::Create(); 90 ActivityViewManager::Create();
72 91
73 new ActivityManagerImpl(); 92 new ActivityManagerImpl();
74 CHECK(instance); 93 CHECK(instance);
75 return instance; 94 return instance;
76 } 95 }
77 96
78 ActivityManager* ActivityManager::Get() { 97 ActivityManager* ActivityManager::Get() {
79 return instance; 98 return instance;
80 } 99 }
81 100
82 void ActivityManager::Shutdown() { 101 void ActivityManager::Shutdown() {
83 CHECK(instance); 102 CHECK(instance);
84 delete instance; 103 delete instance;
85 ActivityViewManager::Shutdown(); 104 ActivityViewManager::Shutdown();
86 } 105 }
87 106
88 } // namespace athena 107 } // namespace athena
OLDNEW
« no previous file with comments | « no previous file | athena/activity/public/activity_manager.h » ('j') | athena/athena.gyp » ('J')

Powered by Google App Engine
This is Rietveld 408576698