| Index: content/renderer/accessibility/render_accessibility_impl.cc
|
| diff --git a/content/renderer/accessibility/render_accessibility_impl.cc b/content/renderer/accessibility/render_accessibility_impl.cc
|
| index 4538ca414641193148ef0f2e344fe200a103f018..8720aa145470ef41f3053efcb3f46769130c3003 100644
|
| --- a/content/renderer/accessibility/render_accessibility_impl.cc
|
| +++ b/content/renderer/accessibility/render_accessibility_impl.cc
|
| @@ -58,6 +58,7 @@ void RenderAccessibilityImpl::SnapshotAccessibilityTree(
|
| WebScopedAXContext context(document);
|
| BlinkAXTreeSource tree_source(render_frame);
|
| tree_source.SetRoot(context.root());
|
| + ScopedFreezeBlinkAXTreeSource freeze(&tree_source);
|
| BlinkAXTreeSerializer serializer(&tree_source);
|
| serializer.set_max_node_count(kMaxSnapshotNodeCount);
|
| serializer.SerializeChanges(context.root(), response);
|
| @@ -244,6 +245,7 @@ void RenderAccessibilityImpl::SetPdfTreeSource(
|
| pdf_tree_source_ = pdf_tree_source;
|
| pdf_serializer_.reset(new PdfAXTreeSerializer(pdf_tree_source_));
|
|
|
| + ScopedFreezeBlinkAXTreeSource freeze(&tree_source_);
|
| WebAXObject root = tree_source_.GetRoot();
|
| if (!root.updateLayoutAndCheckValidity())
|
| return;
|
| @@ -315,6 +317,8 @@ void RenderAccessibilityImpl::SendPendingAccessibilityEvents() {
|
| while (!obj.isDetached() && obj.accessibilityIsIgnored())
|
| obj = obj.parentObject();
|
|
|
| + ScopedFreezeBlinkAXTreeSource freeze(&tree_source_);
|
| +
|
| // Make sure it's a descendant of our root node - exceptions include the
|
| // scroll area that's the parent of the main document (we ignore it), and
|
| // possibly nodes attached to a different document.
|
| @@ -357,6 +361,7 @@ void RenderAccessibilityImpl::SendLocationChanges() {
|
| std::vector<AccessibilityHostMsg_LocationChangeParams> messages;
|
|
|
| // Update layout on the root of the tree.
|
| + ScopedFreezeBlinkAXTreeSource freeze(&tree_source_);
|
| WebAXObject root = tree_source_.GetRoot();
|
| if (!root.updateLayoutAndCheckValidity())
|
| return;
|
| @@ -441,6 +446,7 @@ void RenderAccessibilityImpl::OnHitTest(gfx::Point point) {
|
| // message back to the browser to do the hit test in the child frame,
|
| // recursively.
|
| AXContentNodeData data;
|
| + ScopedFreezeBlinkAXTreeSource freeze(&tree_source_);
|
| tree_source_.SerializeNode(obj, &data);
|
| if (data.HasContentIntAttribute(AX_CONTENT_ATTR_CHILD_ROUTING_ID) ||
|
| data.HasContentIntAttribute(
|
| @@ -455,6 +461,7 @@ void RenderAccessibilityImpl::OnHitTest(gfx::Point point) {
|
| }
|
|
|
| void RenderAccessibilityImpl::OnSetAccessibilityFocus(int acc_obj_id) {
|
| + ScopedFreezeBlinkAXTreeSource freeze(&tree_source_);
|
| if (tree_source_.accessibility_focus_id() == acc_obj_id)
|
| return;
|
|
|
|
|