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

Unified Diff: chrome/browser/resources/md_bookmarks/mouse_focus_behavior.js

Issue 2981503002: [MD Bookmarks] Refactor focus ring hiding. (Closed)
Patch Set: rebase, address_comments Created 3 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
Index: chrome/browser/resources/md_bookmarks/mouse_focus_behavior.js
diff --git a/chrome/browser/resources/md_bookmarks/mouse_focus_behavior.js b/chrome/browser/resources/md_bookmarks/mouse_focus_behavior.js
index ce62e2aea4a64d09d0d85f39a74661842a396632..85afefe14d9b3b1d81f5ed5aeb680ee74941cdd1 100644
--- a/chrome/browser/resources/md_bookmarks/mouse_focus_behavior.js
+++ b/chrome/browser/resources/md_bookmarks/mouse_focus_behavior.js
@@ -4,63 +4,37 @@
cr.define('bookmarks', function() {
/** @const */
- var MOUSE_FOCUS_CLASS = 'mouse-focus';
+ var HIDE_FOCUS_RING_ATTRIBUTE = 'hide-focus-ring';
/**
- * Behavior which adds the 'mouse-focus' class to a target element when it
- * gains focus from the mouse, allowing the outline to be hidden without
- * affecting keyboard users.
+ * Behavior which adds the 'hide-focus-ring' attribute to a target element
+ * when the user interacts with it using the mouse, allowing the focus outline
+ * to be hidden without affecting keyboard users.
* @polymerBehavior
*/
var MouseFocusBehavior = {
attached: function() {
this.boundOnMousedown_ = this.onMousedown_.bind(this);
- this.boundClearMouseFocus_ = this.clearMouseFocus.bind(this);
+ this.boundOnKeydown = this.onKeydown_.bind(this);
- var target = this.getFocusTarget();
- target.addEventListener('mousedown', this.boundOnMousedown_);
- target.addEventListener('contextmenu', this.boundOnMousedown_);
- target.addEventListener('blur', this.boundClearMouseFocus_);
- },
-
- detached: function() {
- var target = this.getFocusTarget();
- target.removeEventListener('mousedown', this.boundOnMousedown_);
- target.removeEventListener('contextmenu', this.boundOnMousedown_);
- target.removeEventListener('blur', this.boundClearMouseFocus_);
- },
+ this.addEventListener('mousedown', this.boundOnMousedown_);
+ this.addEventListener('keydown', this.boundOnKeydown, true);
- /**
- * Returns the element that should be watched for focus changes. Clients
- * can override, but it is assumed that the return value is constant over
- * the lifetime of the element.
- * @return {!HTMLElement}
- */
- getFocusTarget: function() {
- return this;
},
- /** Reset the focus state when focus leaves the target element. */
- clearMouseFocus: function() {
- this.getFocusTarget().classList.remove(MOUSE_FOCUS_CLASS);
+ detached: function() {
+ this.removeEventListener('mousedown', this.boundOnMousedown_);
+ this.removeEventListener('keydown', this.boundOnKeydown, true);
},
/** @private */
onMousedown_: function() {
- this.addMouseFocusClass(this.getFocusTarget());
- },
-
- /**
- * @param {HTMLElement} element
- * @return {boolean}
- */
- isMouseFocused: function(element) {
- return element.classList.contains(MOUSE_FOCUS_CLASS);
+ this.setAttribute(HIDE_FOCUS_RING_ATTRIBUTE, '');
},
- /** @param {HTMLElement} element */
- addMouseFocusClass: function(element) {
- element.classList.add(MOUSE_FOCUS_CLASS);
+ /** @private */
+ onKeydown_: function() {
+ this.removeAttribute(HIDE_FOCUS_RING_ATTRIBUTE);
},
};
« no previous file with comments | « chrome/browser/resources/md_bookmarks/item.js ('k') | chrome/browser/resources/md_bookmarks/shared_style.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698