| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_ |
| #define ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_ |
| |
| #include "athena/athena_export.h" |
| |
| namespace aura { |
| class Window; |
| } |
| |
| namespace athena { |
| |
| class Activity; |
| class ActivityManagerObserver; |
| |
| // Manages a set of activities. |
| class ATHENA_EXPORT ActivityManager { |
| public: |
| static ActivityManager* Create(); |
| static ActivityManager* Get(); |
| static void Shutdown(); |
| |
| virtual ~ActivityManager() {} |
| |
| // Adds/Removes an activity. ActivityManager owns the activities. |
| virtual void AddActivity(Activity* activity) = 0; |
| virtual void RemoveActivity(Activity* activity) = 0; |
| |
| // Returns the activity that has a |window| as toplevel window, or |
| // nullptr if such activity does not exist. |
| virtual Activity* GetActivityForWindow(aura::Window* window) = 0; |
| |
| // Updates the UI when the task color/title changes. |
| virtual void UpdateActivity(Activity* activity) = 0; |
| |
| virtual void AddObserver(ActivityManagerObserver* observer) = 0; |
| virtual void RemoveObserver(ActivityManagerObserver* observer) = 0; |
| }; |
| |
| } // namespace athena |
| |
| #endif // ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_ |