screen_lock_library.h revision 3345a6884c488ff3a535c2c9acdd33d74b37e311
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 "cros/chromeos_screen_lock.h"
11
12namespace chromeos {
13
14// This interface defines interaction with the ChromeOS screen lock
15// APIs.
16class 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