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