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 10namespace aura { 11class Window; 12} 13 14namespace athena { 15 16class Activity; 17class ActivityManagerObserver; 18 19// Manages a set of activities. 20class ATHENA_EXPORT ActivityManager { 21 public: 22 static ActivityManager* Create(); 23 static ActivityManager* Get(); 24 static void Shutdown(); 25 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