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

Unified Diff: ui/login/account_picker/user_pod_row.js

Issue 1219763002: Fix VK flashing after clicking action area on user pod (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review Created 5 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/login/account_picker/user_pod_row.js
diff --git a/ui/login/account_picker/user_pod_row.js b/ui/login/account_picker/user_pod_row.js
index 60954dec36d2124f019aa044c1a9a290ce8e1091..e022270b1041709e68e7e9b08c9e67483c9cb41c 100644
--- a/ui/login/account_picker/user_pod_row.js
+++ b/ui/login/account_picker/user_pod_row.js
@@ -2258,14 +2258,14 @@ cr.define('login', function() {
/**
* Runs app with a given id from the list of loaded apps.
* @param {!string} app_id of an app to run.
- * @param {boolean=} opt_diagnostic_mode Whether to run the app in
+ * @param {boolean=} opt_diagnosticMode Whether to run the app in
* diagnostic mode. Default is false.
*/
- findAndRunAppForTesting: function(app_id, opt_diagnostic_mode) {
+ findAndRunAppForTesting: function(app_id, opt_diagnosticMode) {
var app = this.getPodWithAppId_(app_id);
if (app) {
var activationEvent = cr.doc.createEvent('MouseEvents');
- var ctrlKey = opt_diagnostic_mode;
+ var ctrlKey = opt_diagnosticMode;
activationEvent.initMouseEvent('click', true, true, null,
0, 0, 0, 0, 0, ctrlKey, false, false, false, 0, null);
app.dispatchEvent(activationEvent);
@@ -2730,19 +2730,19 @@ cr.define('login', function() {
* @param {UserPod=} podToFocus User pod to focus (undefined clears focus).
* @param {boolean=} opt_force If true, forces focus update even when
* podToFocus is already focused.
+ * @param {boolean=} opt_skipInputFocus If true, don't focus on the input
+ * box of user pod.
*/
- focusPod: function(podToFocus, opt_force) {
+ focusPod: function(podToFocus, opt_force, opt_skipInputFocus) {
if (this.isFocused(podToFocus) && !opt_force) {
// Calling focusPod w/o podToFocus means reset.
if (!podToFocus)
Oobe.clearErrors();
- this.keyboardActivated_ = false;
return;
}
// Make sure there's only one focusPod operation happening at a time.
if (this.insideFocusPod_) {
- this.keyboardActivated_ = false;
return;
}
this.insideFocusPod_ = true;
@@ -2775,9 +2775,13 @@ cr.define('login', function() {
podToFocus.classList.add('focused');
if (!podToFocus.multiProfilesPolicyApplied) {
podToFocus.classList.toggle('signing-in', false);
- podToFocus.focusInput();
+ if (!opt_skipInputFocus)
+ podToFocus.focusInput();
} else {
podToFocus.userTypeBubbleElement.classList.add('bubble-shown');
+ // Note it is not necessary to skip this focus request when
+ // |opt_skipInputFocus| is true. When |multiProfilesPolicyApplied|
+ // is false, it doesn't focus on the password input box by default.
podToFocus.focus();
}
@@ -2789,7 +2793,6 @@ cr.define('login', function() {
this.scrollFocusedPodIntoView();
}
this.insideFocusPod_ = false;
- this.keyboardActivated_ = false;
},
/**
@@ -2998,9 +3001,19 @@ cr.define('login', function() {
var pod = findAncestorByClass(e.target, 'pod');
if (pod && pod.parentNode == this) {
// Focus on a control of a pod but not on the action area button.
- if (!pod.classList.contains('focused') &&
- !e.target.classList.contains('action-box-button')) {
- this.focusPod(pod);
+ if (!pod.classList.contains('focused')) {
+ if (e.target.classList.contains('action-box-area') ||
+ e.target.classList.contains('remove-warning-button')) {
+ // focusPod usually moves focus on the password input box which
+ // triggers virtual keyboard to show up. But the focus may move to a
+ // non text input element shortly by e.target.focus. Hence, a
+ // virtual keyboard flicking might be observed. We need to manually
+ // prevent focus on password input box to avoid virtual keyboard
+ // flicking in this case. See crbug.com/396016 for details.
+ this.focusPod(pod, false, true /* opt_skipInputFocus */);
+ } else {
+ this.focusPod(pod);
+ }
pod.userTypeBubbleElement.classList.remove('bubble-shown');
e.target.focus();
}
@@ -3032,7 +3045,6 @@ cr.define('login', function() {
switch (e.keyIdentifier) {
case 'Left':
if (!editing) {
- this.keyboardActivated_ = true;
if (this.focusedPod_ && this.focusedPod_.previousElementSibling)
this.focusPod(this.focusedPod_.previousElementSibling);
else
@@ -3043,7 +3055,6 @@ cr.define('login', function() {
break;
case 'Right':
if (!editing) {
- this.keyboardActivated_ = true;
if (this.focusedPod_ && this.focusedPod_.nextElementSibling)
this.focusPod(this.focusedPod_.nextElementSibling);
else
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698