Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js |
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js |
index 8f20f28be389e6e3d2b07a8db823e0733e3c3955..4237af5815ff39b8b482defe7fae6f684e070cd6 100644 |
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js |
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js |
@@ -141,10 +141,17 @@ DesktopAutomationHandler.prototype = { |
node = node.find({state: {focused: true}}) || node; |
} |
- if (this.isEditable_(evt.target)) |
- this.createEditableTextHandlerIfNeeded_(evt.target); |
+ if (this.isEditable_(node)) |
+ this.createEditableTextHandlerIfNeeded_(node); |
- this.onEventDefault({target: node, type: 'focus'}); |
+ // Since we queue output mostly for live regions support and there isn't a |
+ // reliable way to know if this focus event resulted from a user's explicit |
+ // action, only flush when the focused node is not web content. |
+ if (node.root.role == RoleType.desktop) |
+ Output.flushNextSpeechUtterance(); |
+ |
+ this.onEventDefault( |
+ {target: node, type: chrome.automation.EventType.focus}); |
}, |
/** |