1// Copyright (c) 2013 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 ASH_SESSION_SESSION_STATE_OBSERVER_H_
6#define ASH_SESSION_SESSION_STATE_OBSERVER_H_
7
8#include <string>
9
10#include "ash/ash_export.h"
11#include "ash/session/session_state_delegate.h"
12#include "base/basictypes.h"
13
14namespace ash {
15
16class ASH_EXPORT SessionStateObserver {
17 public:
18  // Called when active user has changed.
19  virtual void ActiveUserChanged(const std::string& user_id) {}
20
21  // Called when another user gets added to the existing session.
22  virtual void UserAddedToSession(const std::string& user_id) {}
23
24  // Called when session state is changed.
25  virtual void SessionStateChanged(SessionStateDelegate::SessionState state) {}
26
27 protected:
28  virtual ~SessionStateObserver() {}
29};
30
31// A class to attach / detach an object as a session state observer with a
32// scoped pointer.
33class ASH_EXPORT ScopedSessionStateObserver {
34 public:
35  explicit ScopedSessionStateObserver(ash::SessionStateObserver* observer);
36  virtual ~ScopedSessionStateObserver();
37
38 private:
39  ash::SessionStateObserver* observer_;
40
41  DISALLOW_COPY_AND_ASSIGN(ScopedSessionStateObserver);
42};
43
44}  // namespace ash
45
46#endif  // ASH_SESSION_SESSION_STATE_OBSERVER_H_
47