| Index: chrome/browser/chromeos/login/lock/screen_locker.h | 
| diff --git a/chrome/browser/chromeos/login/lock/screen_locker.h b/chrome/browser/chromeos/login/lock/screen_locker.h | 
| index 5a4aff96e6d748e675ff615c90cda13e149a67ba..dba07eb44bdd26fa11b408c417e09a9f89f03d63 100644 | 
| --- a/chrome/browser/chromeos/login/lock/screen_locker.h | 
| +++ b/chrome/browser/chromeos/login/lock/screen_locker.h | 
| @@ -24,6 +24,10 @@ | 
| #include "ui/base/accelerators/accelerator.h" | 
| #include "ui/base/ime/chromeos/input_method_manager.h" | 
|  | 
| +namespace content { | 
| +class WebContents; | 
| +} | 
| + | 
| namespace chromeos { | 
|  | 
| class Authenticator; | 
| @@ -44,6 +48,59 @@ class WebUIScreenLockerTester; | 
| class ScreenLocker : public AuthStatusConsumer, | 
| public device::mojom::FingerprintObserver { | 
| public: | 
| +  enum class FingerprintState { | 
| +    kHidden, | 
| +    kDefault, | 
| +    kSignin, | 
| +    kFailed, | 
| +    kRemoved, | 
| +  }; | 
| + | 
| +  // Delegate used to send internal state changes back to the UI. | 
| +  class Delegate { | 
| +   public: | 
| +    Delegate(); | 
| +    virtual ~Delegate(); | 
| + | 
| +    // Enable/disable password input. | 
| +    virtual void SetPasswordInputEnabled(bool enabled) = 0; | 
| + | 
| +    // Show the given error message. | 
| +    virtual void ShowErrorMessage(int error_msg_id, | 
| +                                  HelpAppLauncher::HelpTopic help_topic_id) = 0; | 
| + | 
| +    // Close any displayed error messages. | 
| +    virtual void ClearErrors() = 0; | 
| + | 
| +    // Run any visual effects after authentication is successful. This must call | 
| +    // ScreenLocker::UnlockOnLoginSuccess() after all effects are done. | 
| +    virtual void AnimateAuthenticationSuccess() = 0; | 
| + | 
| +    // Called when the webui lock screen is ready. This gets invoked by a | 
| +    // chrome.send from the embedded webui. | 
| +    virtual void OnLockWebUIReady() = 0; | 
| + | 
| +    // Called when webui lock screen wallpaper is loaded and displayed. | 
| +    virtual void OnLockBackgroundDisplayed() = 0; | 
| + | 
| +    // Called when the webui header bar becomes visible. | 
| +    virtual void OnHeaderBarVisible() = 0; | 
| + | 
| +    // Called by ScreenLocker to notify that ash lock animation finishes. | 
| +    virtual void OnAshLockAnimationFinished() = 0; | 
| + | 
| +    // Called when fingerprint state has changed. | 
| +    virtual void SetFingerprintState(const AccountId& account_id, | 
| +                                     FingerprintState state) = 0; | 
| + | 
| +    // Returns the web contents used to back the lock screen. | 
| +    // TODO(jdufault): Remove this function when we remove WebUIScreenLocker. | 
| +    virtual content::WebContents* GetWebContents() = 0; | 
| + | 
| +   private: | 
| +    DISALLOW_COPY_AND_ASSIGN(Delegate); | 
| +  }; | 
| + | 
| explicit ScreenLocker(const user_manager::UserList& users); | 
|  | 
| // Returns the default instance if it has been created. | 
| @@ -87,8 +144,13 @@ class ScreenLocker : public AuthStatusConsumer, | 
| HelpAppLauncher::HelpTopic help_topic_id, | 
| bool sign_out_only); | 
|  | 
| -  // Returns the WebUIScreenLocker used to lock the screen. | 
| -  WebUIScreenLocker* web_ui() { return web_ui_.get(); } | 
| +  // Returns the WebUIScreenLocker instance. This should only be used in tests. | 
| +  // When using views-based lock this will be a nullptr. | 
| +  // TODO(jdufault): Remove this function, make tests agnostic to ui impl. | 
| +  WebUIScreenLocker* web_ui_for_testing() { return web_ui_.get(); } | 
| + | 
| +  // Returns delegate that can be used to talk to the view-layer. | 
| +  Delegate* delegate() { return delegate_; } | 
|  | 
| // Returns the users to authenticate. | 
| const user_manager::UserList& users() const { return users_; } | 
| @@ -169,6 +231,10 @@ class ScreenLocker : public AuthStatusConsumer, | 
| // WebUIScreenLocker instance in use. | 
| std::unique_ptr<WebUIScreenLocker> web_ui_; | 
|  | 
| +  // Delegate used to talk to the view. | 
| +  Delegate* delegate_ = nullptr; | 
| +  bool owns_delegate_ = false; | 
| + | 
| // Users that can unlock the device. | 
| user_manager::UserList users_; | 
|  | 
|  |