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 #ifndef ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_ 6 #define ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_ 7 8 #include "athena/athena_export.h" 9 10 namespace aura { 11 class Window; 12 } 13 14 namespace athena { 15 16 class Activity; 17 class ActivityManagerObserver; 18 19 // Manages a set of activities. 20 class ATHENA_EXPORT ActivityManager { 21 public: 22 static ActivityManager* Create(); 23 static ActivityManager* Get(); 24 static void Shutdown(); 25 ~ActivityManager()26 virtual ~ActivityManager() {} 27 28 // Adds/Removes an activity. ActivityManager owns the activities. 29 virtual void AddActivity(Activity* activity) = 0; 30 virtual void RemoveActivity(Activity* activity) = 0; 31 32 // Returns the activity that has a |window| as toplevel window, or 33 // NULL if such activity does not exist. 34 virtual Activity* GetActivityForWindow(aura::Window* window) = 0; 35 36 // Updates the UI when the task color/title changes. 37 virtual void UpdateActivity(Activity* activity) = 0; 38 39 virtual void AddObserver(ActivityManagerObserver* observer) = 0; 40 virtual void RemoveObserver(ActivityManagerObserver* observer) = 0; 41 }; 42 43 } // namespace athena 44 45 #endif // ATHENA_ACTIVITY_PUBLIC_ACTIVITY_MANAGER_H_ 46