#include <string>
#include <vector>
+#include "ash/shell_delegate.h"
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/web_contents_observer.h"
#include "ui/gfx/rect.h"
+#include "ui/keyboard/keyboard_controller_observer.h"
class PrefService;
public content::NotificationObserver,
public content::WebContentsObserver,
public chromeos::SessionManagerClient::Observer,
- public chromeos::CrasAudioHandler::AudioObserver {
+ public chromeos::CrasAudioHandler::AudioObserver,
+ public ash::VirtualKeyboardStateObserver,
+ public keyboard::KeyboardControllerObserver {
public:
explicit LoginDisplayHostImpl(const gfx::Rect& background_bounds);
virtual ~LoginDisplayHostImpl();
// Overridden from chromeos::CrasAudioHandler::AudioObserver:
virtual void OnActiveOutputNodeChanged() OVERRIDE;
+ // Overridden from ash::KeyboardStateObserver:
+ virtual void OnVirtualKeyboardStateChanged(bool activated) OVERRIDE;
+
+ // Overridden from keyboard::KeyboardControllerObserver:
+ virtual void OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) OVERRIDE;
+
private:
// Way to restore if renderer have crashed.
enum RestorePath {
// in any case.
bool startup_sound_honors_spoken_feedback_;
+ // True is subscribed as keyboard controller observer.
+ bool is_observing_keyboard_;
+
+ // The bounds of the virtual keyboard.
+ gfx::Rect keyboard_bounds_;
+
DISALLOW_COPY_AND_ASSIGN(LoginDisplayHostImpl);
};