Home | History | Annotate | Download | only in cros
      1 // Copyright (c) 2010 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 CHROME_BROWSER_CHROMEOS_CROS_SCREEN_LOCK_LIBRARY_H_
      6 #define CHROME_BROWSER_CHROMEOS_CROS_SCREEN_LOCK_LIBRARY_H_
      7 #pragma once
      8 
      9 #include "base/observer_list.h"
     10 #include "third_party/cros/chromeos_screen_lock.h"
     11 
     12 namespace chromeos {
     13 
     14 // This interface defines interaction with the ChromeOS screen lock
     15 // APIs.
     16 class ScreenLockLibrary {
     17  public:
     18   class Observer {
     19    public:
     20     virtual ~Observer() {}
     21     virtual void LockScreen(ScreenLockLibrary* obj) = 0;
     22     virtual void UnlockScreen(ScreenLockLibrary* obj) = 0;
     23     virtual void UnlockScreenFailed(ScreenLockLibrary* obj) = 0;
     24   };
     25   ScreenLockLibrary() {}
     26   virtual ~ScreenLockLibrary() {}
     27   virtual void AddObserver(Observer* observer) = 0;
     28   virtual void RemoveObserver(Observer* observer) = 0;
     29 
     30   // Notifies PowerManager that screen lock has been completed.
     31   virtual void NotifyScreenLockCompleted() = 0;
     32   // Notifies PowerManager that a user requested to lock the screen.
     33   virtual void NotifyScreenLockRequested() = 0;
     34   // Notifies PowerManager that a user unlocked the screen.
     35   virtual void NotifyScreenUnlockRequested() = 0;
     36   // Notifies PowerManager that screen is unlocked.
     37   virtual void NotifyScreenUnlockCompleted() = 0;
     38 
     39   // Factory function, creates a new instance and returns ownership.
     40   // For normal usage, access the singleton via CrosLibrary::Get().
     41   static ScreenLockLibrary* GetImpl(bool stub);
     42 };
     43 
     44 }  // namespace chromeos
     45 
     46 #endif  // CHROME_BROWSER_CHROMEOS_CROS_SCREEN_LOCK_LIBRARY_H_
     47