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

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

Issue 302683002: athena: Add the concept of Activity and related managers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 6 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
(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 static ActivityManager* instance;
oshima 2014/05/31 00:58:01 You can nuke static. It's deprecated in C++03, and
sadrul 2014/05/31 04:23:46 Done.
18
19 class ActivityManagerImpl : public ActivityManager {
20 public:
21 ActivityManagerImpl() {
22 CHECK(!instance);
23 instance = this;
24 }
25 virtual ~ActivityManagerImpl() {
26 CHECK_EQ(this, instance);
27 instance = NULL;
28 }
29
30 // ActivityManager:
31 virtual void AddActivity(Activity* activity) OVERRIDE {
32 CHECK(activities_.end() == std::find(activities_.begin(),
33 activities_.end(),
34 activity));
35 activities_.push_back(activity);
36 ActivityViewManager* manager = ActivityViewManager::Get();
37 manager->AddActivity(activity);
38 }
39
40 virtual void RemoveActivity(Activity* activity) OVERRIDE {
41 std::vector<Activity*>::iterator find = std::find(activities_.begin(),
42 activities_.end(),
43 activity);
44 if (find != activities_.end()) {
45 activities_.erase(find);
46
47 ActivityViewManager* manager = ActivityViewManager::Get();
48 manager->AddActivity(activity);
49 }
50 }
51
52 virtual void UpdateActivity(Activity* activity) OVERRIDE {
53 ActivityViewManager* manager = ActivityViewManager::Get();
54 manager->UpdateActivity(activity);
55 }
56
57 private:
58 std::vector<Activity*> activities_;
59
60 DISALLOW_COPY_AND_ASSIGN(ActivityManagerImpl);
61 };
62
63 } // namespace
64
65 // static
66 ActivityManager* ActivityManager::Create() {
67 new ActivityManagerImpl();
68 CHECK(instance);
69
70 ActivityViewManager::Create();
71
72 return instance;
73 }
74
75 ActivityManager* ActivityManager::Get() {
76 return instance;
77 }
78
79 void ActivityManager::Shutdown() {
80 ActivityViewManager::Shutdown();
81
82 CHECK(instance);
83 delete instance;
84 }
85
86 } // namespace athena
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698