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