GoogleURLTrackerInfoBarDelegate: Initialize uninitialized member in constructor.
[chromium-blink-merge.git] / athena / activity / activity_manager_impl.cc
blobe20930e6dbf0723bcdbeff538ee796bb8dc1905b
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.
5 #include "athena/activity/public/activity_manager.h"
7 #include <algorithm>
8 #include <vector>
10 #include "athena/activity/public/activity_view_manager.h"
11 #include "base/logging.h"
13 namespace athena {
15 namespace {
17 ActivityManager* instance = NULL;
19 class ActivityManagerImpl : public ActivityManager {
20 public:
21 ActivityManagerImpl() {
22 CHECK(!instance);
23 instance = this;
25 virtual ~ActivityManagerImpl() {
26 CHECK_EQ(this, instance);
27 instance = NULL;
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);
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);
47 ActivityViewManager* manager = ActivityViewManager::Get();
48 manager->AddActivity(activity);
52 virtual void UpdateActivity(Activity* activity) OVERRIDE {
53 ActivityViewManager* manager = ActivityViewManager::Get();
54 manager->UpdateActivity(activity);
57 private:
58 std::vector<Activity*> activities_;
60 DISALLOW_COPY_AND_ASSIGN(ActivityManagerImpl);
63 } // namespace
65 // static
66 ActivityManager* ActivityManager::Create() {
67 new ActivityManagerImpl();
68 CHECK(instance);
70 ActivityViewManager::Create();
72 return instance;
75 ActivityManager* ActivityManager::Get() {
76 return instance;
79 void ActivityManager::Shutdown() {
80 ActivityViewManager::Shutdown();
82 CHECK(instance);
83 delete instance;
86 } // namespace athena