// 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 // NULL 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_