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

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: Aaaand another rebase 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
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/activity_manager_impl.h" 5 #include "athena/activity/activity_manager_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "athena/activity/public/activity.h" 9 #include "athena/activity/public/activity.h"
10 #include "athena/activity/public/activity_manager_observer.h"
10 #include "athena/activity/public/activity_view_manager.h" 11 #include "athena/activity/public/activity_view_manager.h"
11 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/observer_list.h"
12 14
13 namespace athena { 15 namespace athena {
14 16
15 namespace { 17 namespace {
16 18
17 ActivityManager* instance = NULL; 19 ActivityManager* instance = NULL;
18 20
19 } // namespace 21 } // namespace
20 22
21 ActivityManagerImpl::ActivityManagerImpl() { 23 ActivityManagerImpl::ActivityManagerImpl() {
22 CHECK(!instance); 24 CHECK(!instance);
23 instance = this; 25 instance = this;
24 } 26 }
25 27
26 ActivityManagerImpl::~ActivityManagerImpl() { 28 ActivityManagerImpl::~ActivityManagerImpl() {
27 while (!activities_.empty()) 29 while (!activities_.empty())
28 delete activities_.front(); 30 delete activities_.front();
29 31
30 CHECK_EQ(this, instance); 32 CHECK_EQ(this, instance);
31 instance = NULL; 33 instance = NULL;
32 } 34 }
33 35
34 void ActivityManagerImpl::AddActivity(Activity* activity) { 36 void ActivityManagerImpl::AddActivity(Activity* activity) {
35 CHECK(activities_.end() == 37 CHECK(activities_.end() ==
36 std::find(activities_.begin(), activities_.end(), activity)); 38 std::find(activities_.begin(), activities_.end(), activity));
37 activities_.push_back(activity); 39 activities_.push_back(activity);
38 ActivityViewManager* manager = ActivityViewManager::Get(); 40 ActivityViewManager* manager = ActivityViewManager::Get();
39 manager->AddActivity(activity); 41 manager->AddActivity(activity);
42 FOR_EACH_OBSERVER(ActivityManagerObserver,
43 observers_,
44 OnActivityStarted(activity));
40 } 45 }
41 46
42 void ActivityManagerImpl::RemoveActivity(Activity* activity) { 47 void ActivityManagerImpl::RemoveActivity(Activity* activity) {
43 std::vector<Activity*>::iterator find = 48 std::vector<Activity*>::iterator find =
44 std::find(activities_.begin(), activities_.end(), activity); 49 std::find(activities_.begin(), activities_.end(), activity);
50 FOR_EACH_OBSERVER(ActivityManagerObserver,
51 observers_,
52 OnActivityEnding(activity));
45 if (find != activities_.end()) { 53 if (find != activities_.end()) {
46 activities_.erase(find); 54 activities_.erase(find);
47 ActivityViewManager* manager = ActivityViewManager::Get(); 55 ActivityViewManager* manager = ActivityViewManager::Get();
48 manager->RemoveActivity(activity); 56 manager->RemoveActivity(activity);
49 } 57 }
50 } 58 }
51 59
52 void ActivityManagerImpl::UpdateActivity(Activity* activity) { 60 void ActivityManagerImpl::UpdateActivity(Activity* activity) {
53 ActivityViewManager* manager = ActivityViewManager::Get(); 61 ActivityViewManager* manager = ActivityViewManager::Get();
54 manager->UpdateActivity(activity); 62 manager->UpdateActivity(activity);
55 } 63 }
56 64
65 void ActivityManagerImpl::AddObserver(ActivityManagerObserver* observer) {
66 observers_.AddObserver(observer);
67 }
68
69 void ActivityManagerImpl::RemoveObserver(ActivityManagerObserver* observer) {
70 observers_.RemoveObserver(observer);
71 }
72
57 // static 73 // static
58 ActivityManager* ActivityManager::Create() { 74 ActivityManager* ActivityManager::Create() {
59 ActivityViewManager::Create(); 75 ActivityViewManager::Create();
60 76
61 new ActivityManagerImpl(); 77 new ActivityManagerImpl();
62 CHECK(instance); 78 CHECK(instance);
63 return instance; 79 return instance;
64 } 80 }
65 81
66 ActivityManager* ActivityManager::Get() { 82 ActivityManager* ActivityManager::Get() {
67 return instance; 83 return instance;
68 } 84 }
69 85
70 void ActivityManager::Shutdown() { 86 void ActivityManager::Shutdown() {
71 CHECK(instance); 87 CHECK(instance);
72 delete instance; 88 delete instance;
73 ActivityViewManager::Shutdown(); 89 ActivityViewManager::Shutdown();
74 } 90 }
75 91
92
76 } // namespace athena 93 } // namespace athena
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698