Home | History | Annotate | Download | only in session
      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 
     14 namespace ash {
     15 
     16 class 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.
     33 class 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