17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "athena/activity/public/activity_manager.h"
67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <vector>
868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/macros.h"
107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/observer_list.h"
11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/views/widget/widget_observer.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace athena {
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class ActivityManagerObserver;
167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class ActivityManagerImpl : public ActivityManager,
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                            public views::WidgetObserver {
1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public:
207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  ActivityManagerImpl();
217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual ~ActivityManagerImpl();
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  int num_activities() const { return activities_.size(); }
2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // ActivityManager:
2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void AddActivity(Activity* activity) OVERRIDE;
2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void RemoveActivity(Activity* activity) OVERRIDE;
2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void UpdateActivity(Activity* activity) OVERRIDE;
2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual Activity* GetActivityForWindow(aura::Window* window) OVERRIDE;
3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void AddObserver(ActivityManagerObserver* observer) OVERRIDE;
3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  virtual void RemoveObserver(ActivityManagerObserver* observer) OVERRIDE;
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  // views::WidgetObserver
347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private:
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  std::vector<Activity*> activities_;
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  ObserverList<ActivityManagerObserver> observers_;
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ActivityManagerImpl);
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)};
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace athena
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)