Chromium Code Reviews| Index: chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc |
| diff --git a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc |
| index 977fa6c4cb0ae00f9f36308d4a9f70bedb749087..17bbb9405d193025937bc19ffe766591d97ab233 100644 |
| --- a/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc |
| +++ b/chrome/browser/ui/webui/chromeos/login/core_oobe_handler.cc |
| @@ -45,6 +45,9 @@ const char kJsApiSkipUpdateEnrollAfterEula[] = "skipUpdateEnrollAfterEula"; |
| const char kJsApiScreenAssetsLoaded[] = "screenAssetsLoaded"; |
| const char kJsApiHeaderBarVisible[] = "headerBarVisible"; |
| +// Lock UI type. |
| +const char kLockDisplay[] = "lock"; |
|
dzhioev (left Google)
2014/05/29 15:42:52
I prefer to expose display types constant from "oo
Nikita (slow)
2014/05/29 15:51:20
Done.
I was trying to minimize changes in this CL
|
| + |
| } // namespace |
| namespace chromeos { |
| @@ -218,8 +221,8 @@ void CoreOobeHandler::ShowControlBar(bool show) { |
| CallJS("showControlBar", show); |
| } |
| -void CoreOobeHandler::SetKeyboardState(bool shown) { |
| - CallJS("setKeyboardState", shown); |
| +void CoreOobeHandler::SetKeyboardState(bool shown, const gfx::Rect& bounds) { |
| + CallJS("setKeyboardState", shown, bounds.width(), bounds.height()); |
| } |
| void CoreOobeHandler::SetClientAreaSize(int width, int height) { |
| @@ -358,17 +361,26 @@ void CoreOobeHandler::UpdateDeviceRequisition() { |
| } |
| void CoreOobeHandler::UpdateKeyboardState() { |
| - if (login::LoginScrollIntoViewEnabled()) { |
| + const std::string& ui_type = oobe_ui_->display_type(); |
| + if ((ui_type != kLockDisplay && login::LoginScrollIntoViewEnabled()) || |
| + (ui_type == kLockDisplay && login::LockScrollIntoViewEnabled())) { |
| keyboard::KeyboardController* keyboard_controller = |
| keyboard::KeyboardController::GetInstance(); |
| if (keyboard_controller) { |
| gfx::Rect bounds = keyboard_controller->current_keyboard_bounds(); |
| - SetKeyboardState(!bounds.IsEmpty()); |
| + SetKeyboardState(!bounds.IsEmpty(), bounds); |
| } |
| } |
| } |
| void CoreOobeHandler::UpdateClientAreaSize() { |
| + // Special case for screen lock. http://crbug.com/377904 |
| + // No need to update client area size so that virtual keyboard works. |
| + if (oobe_ui_->display_type() == kLockDisplay && |
| + login::LockScrollIntoViewEnabled()) { |
| + return; |
| + } |
| + |
| const gfx::Size& size = ash::Shell::GetScreen()->GetPrimaryDisplay().size(); |
| SetClientAreaSize(size.width(), size.height()); |
| } |