OLD | NEW |
---|---|
(Empty) | |
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 <algorithm> | |
8 #include <vector> | |
9 | |
10 #include "athena/activity/public/activity_view_manager.h" | |
11 #include "base/logging.h" | |
12 | |
13 namespace athena { | |
14 | |
15 namespace { | |
16 | |
17 class ActivityManagerImpl : public ActivityManager { | |
18 public: | |
19 ActivityManagerImpl() {} | |
20 virtual ~ActivityManagerImpl() {} | |
21 | |
22 // ActivityManager: | |
23 virtual void AddActivity(Activity* activity) OVERRIDE { | |
24 CHECK(activities_.end() == std::find(activities_.begin(), | |
25 activities_.end(), | |
26 activity)); | |
27 activities_.push_back(activity); | |
28 ActivityViewManager* manager = ActivityViewManager::Get(); | |
29 manager->AddActivity(activity); | |
30 } | |
31 | |
32 virtual void RemoveActivity(Activity* activity) OVERRIDE { | |
33 std::vector<Activity*>::iterator find = std::find(activities_.begin(), | |
34 activities_.end(), | |
35 activity); | |
36 if (find != activities_.end()) { | |
37 activities_.erase(find); | |
38 | |
39 ActivityViewManager* manager = ActivityViewManager::Get(); | |
40 manager->AddActivity(activity); | |
41 } | |
42 } | |
43 | |
44 virtual void UpdateActivity(Activity* activity) OVERRIDE { | |
45 ActivityViewManager* manager = ActivityViewManager::Get(); | |
46 manager->UpdateActivity(activity); | |
47 } | |
48 | |
49 private: | |
50 std::vector<Activity*> activities_; | |
51 | |
52 DISALLOW_COPY_AND_ASSIGN(ActivityManagerImpl); | |
53 }; | |
54 | |
55 static ActivityManagerImpl* g_instance; | |
oshima
2014/05/30 20:55:59
remove static and g_. (I'd like to use g_ only for
sadrul
2014/05/30 23:45:36
Done.
| |
56 | |
57 } // namespace | |
58 | |
59 // static | |
60 ActivityManager* ActivityManager::Create() { | |
61 CHECK(!g_instance); | |
62 g_instance = new ActivityManagerImpl(); | |
oshima
2014/05/30 20:55:59
can you assign/reset in ctor/dtor like other manag
sadrul
2014/05/30 23:45:36
Done.
| |
63 | |
64 ActivityViewManager::Create(); | |
65 | |
66 return g_instance; | |
67 } | |
68 | |
69 ActivityManager* ActivityManager::Get() { | |
70 return g_instance; | |
71 } | |
72 | |
73 void ActivityManager::Shutdown() { | |
74 ActivityViewManager::Shutdown(); | |
75 | |
76 CHECK(g_instance); | |
77 delete g_instance; | |
78 g_instance = NULL; | |
79 } | |
80 | |
81 } // namespace athena | |
OLD | NEW |