diff options
author | Zeno Albisser <zeno.albisser@digia.com> | 2013-11-21 14:09:57 +0100 |
---|---|---|
committer | Andras Becsi <andras.becsi@digia.com> | 2013-11-29 15:14:36 +0100 |
commit | eb32ba6f51d0c21d58cd7d89785285ff8fa64624 (patch) | |
tree | 2c7c940e1dbee81b89d935626110816b494aa32c /chromium/content/renderer/accessibility/renderer_accessibility_complete.cc | |
parent | 9427c1a0222ebd67efef1a2c7990a0fa5c9aac84 (diff) | |
download | qtwebengine-chromium-eb32ba6f51d0c21d58cd7d89785285ff8fa64624.tar.gz |
Update chromium to branch 1599.
Change-Id: I04e775a946a208bb4500d3b722bcb05c82b9d7cb
Reviewed-by: Andras Becsi <andras.becsi@digia.com>
Diffstat (limited to 'chromium/content/renderer/accessibility/renderer_accessibility_complete.cc')
-rw-r--r-- | chromium/content/renderer/accessibility/renderer_accessibility_complete.cc | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/chromium/content/renderer/accessibility/renderer_accessibility_complete.cc b/chromium/content/renderer/accessibility/renderer_accessibility_complete.cc index abce9c8b069..7f602ff7887 100644 --- a/chromium/content/renderer/accessibility/renderer_accessibility_complete.cc +++ b/chromium/content/renderer/accessibility/renderer_accessibility_complete.cc @@ -348,7 +348,8 @@ void RendererAccessibilityComplete::SendPendingAccessibilityNotifications() { AccessibilityHostMsg_NotificationParams notification_msg; notification_msg.notification_type = notification.notification_type; notification_msg.id = notification.id; - SerializeChangedNodes(obj, ¬ification_msg.nodes); + std::set<int> ids_serialized; + SerializeChangedNodes(obj, ¬ification_msg.nodes, &ids_serialized); notification_msgs.push_back(notification_msg); #ifndef NDEBUG @@ -419,7 +420,12 @@ RendererAccessibilityComplete::CreateBrowserTreeNode() { void RendererAccessibilityComplete::SerializeChangedNodes( const WebKit::WebAccessibilityObject& obj, - std::vector<AccessibilityNodeData>* dst) { + std::vector<AccessibilityNodeData>* dst, + std::set<int>* ids_serialized) { + if (ids_serialized->find(obj.axID()) != ids_serialized->end()) + return; + ids_serialized->insert(obj.axID()); + // This method has three responsibilities: // 1. Serialize |obj| into an AccessibilityNodeData, and append it to // the end of the |dst| vector to be send to the browser process. @@ -474,6 +480,7 @@ void RendererAccessibilityComplete::SerializeChangedNodes( WebAccessibilityObject parent_obj; while (parent) { parent_obj = document.accessibilityObjectFromID(parent->id); + if (!parent_obj.isDetached()) break; parent = parent->parent; @@ -483,7 +490,7 @@ void RendererAccessibilityComplete::SerializeChangedNodes( // so that the update that clears |child| from its old parent // occurs stricly before the update that adds |child| to its // new parent. - SerializeChangedNodes(parent_obj, dst); + SerializeChangedNodes(parent_obj, dst, ids_serialized); } } } @@ -556,7 +563,7 @@ void RendererAccessibilityComplete::SerializeChangedNodes( // Serialize all of the new children, recursively. for (size_t i = 0; i < children_to_serialize.size(); ++i) - SerializeChangedNodes(children_to_serialize[i], dst); + SerializeChangedNodes(children_to_serialize[i], dst, ids_serialized); } void RendererAccessibilityComplete::ClearBrowserTreeNode( |