Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1394)

Unified Diff: chrome/browser/chromeos/login/ui/login_display_host_impl.cc

Issue 292233002: Disable VK overscroll for login/out-of-box. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/ui/login_display_host_impl.cc
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
index be3a303249bbf552237ffa3fec6e0b674a9d7444..55829d081fe1252dd748f557a80b72507f3b9bf0 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
+++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
@@ -83,6 +83,7 @@
#include "ui/gfx/rect.h"
#include "ui/gfx/transform.h"
#include "ui/keyboard/keyboard_controller.h"
+#include "ui/keyboard/keyboard_util.h"
#include "ui/views/focus/focus_manager.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h"
@@ -282,6 +283,24 @@ class LoginWidgetDelegate : public views::WidgetDelegate {
DISALLOW_COPY_AND_ASSIGN(LoginWidgetDelegate);
};
+// Returns true if login should scroll user pods into view itself when virtual
+// keyboard is shown and disable vk overscroll.
+bool LoginScrollIntoViewEnabled() {
+ return !CommandLine::ForCurrentProcess()->HasSwitch(
+ chromeos::switches::kDisableLoginScrollIntoView);
+}
+
+// Disables virtual keyboard overscroll. Login UI will scroll user pods
+// into view on JS side when virtual keyboard is shown.
+void DisableKeyboardOverscroll() {
+ keyboard::SetKeyboardOverscrollEnabledOverrideValue(false);
+ keyboard::SetKeyboardOverscrollOverrideEnabled(true);
+}
+
+void ResetKeyboardOverscrollOverride() {
+ keyboard::SetKeyboardOverscrollOverrideEnabled(false);
+}
+
} // namespace
namespace chromeos {
@@ -435,6 +454,9 @@ LoginDisplayHostImpl::~LoginDisplayHostImpl() {
ash::Shell::GetInstance()->delegate()->
RemoveVirtualKeyboardStateObserver(this);
+ if (LoginScrollIntoViewEnabled())
+ ResetKeyboardOverscrollOverride();
+
views::FocusManager::set_arrow_key_traversal_enabled(false);
ResetLoginWindowAndView();
@@ -530,6 +552,9 @@ AutoEnrollmentController* LoginDisplayHostImpl::GetAutoEnrollmentController() {
void LoginDisplayHostImpl::StartWizard(
const std::string& first_screen_name,
scoped_ptr<base::DictionaryValue> screen_parameters) {
+ if (LoginScrollIntoViewEnabled())
+ DisableKeyboardOverscroll();
+
startup_sound_honors_spoken_feedback_ = true;
TryToPlayStartupSound();
@@ -574,6 +599,9 @@ AppLaunchController* LoginDisplayHostImpl::GetAppLaunchController() {
void LoginDisplayHostImpl::StartUserAdding(
const base::Closure& completion_callback) {
+ if (LoginScrollIntoViewEnabled())
+ DisableKeyboardOverscroll();
+
restore_path_ = RESTORE_ADD_USER_INTO_SESSION;
completion_callback_ = completion_callback;
finalize_animation_type_ = ANIMATION_NONE;
@@ -606,6 +634,9 @@ void LoginDisplayHostImpl::StartUserAdding(
void LoginDisplayHostImpl::StartSignInScreen(
const LoginScreenContext& context) {
+ if (LoginScrollIntoViewEnabled())
+ DisableKeyboardOverscroll();
+
startup_sound_honors_spoken_feedback_ = true;
TryToPlayStartupSound();
@@ -876,12 +907,18 @@ void LoginDisplayHostImpl::OnKeyboardBoundsChanging(
const gfx::Rect& new_bounds) {
if (new_bounds.IsEmpty() && !keyboard_bounds_.IsEmpty()) {
// Keyboard has been hidden.
- if (webui_login_display_)
+ if (webui_login_display_) {
dzhioev (left Google) 2014/05/21 17:30:32 Shouldn't we also set keyboard state once webui_lo
Nikita (slow) 2014/05/22 15:11:50 When CreateLoginDisplay() is called neither handle
webui_login_display_->ShowControlBar(true);
+ if (LoginScrollIntoViewEnabled())
+ webui_login_display_->SetKeyboardState(false);
+ }
} else if (!new_bounds.IsEmpty() && keyboard_bounds_.IsEmpty()) {
// Keyboard has been shown.
- if (webui_login_display_)
+ if (webui_login_display_) {
webui_login_display_->ShowControlBar(false);
+ if (LoginScrollIntoViewEnabled())
+ webui_login_display_->SetKeyboardState(true);
+ }
}
keyboard_bounds_ = new_bounds;

Powered by Google App Engine
This is Rietveld 408576698