| Index: third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp | 
| diff --git a/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp | 
| index 2e73fd5e2def1bf0e32be330886ead1cd7fb8ae7..01d1c1ed6adb7f6e6668024e8711f66ba6efd1f6 100644 | 
| --- a/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp | 
| +++ b/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp | 
| @@ -327,7 +327,7 @@ void AXLayoutObject::Detach() { | 
| // Check object role or purpose. | 
| // | 
|  | 
| -static bool IsLinkable(const AXObject& object) { | 
| +static bool IsLinkable(const AXObjectImpl& object) { | 
| if (!object.GetLayoutObject()) | 
| return false; | 
|  | 
| @@ -350,7 +350,7 @@ bool AXLayoutObject::IsEditable() const { | 
| Document& document = GetLayoutObject()->GetDocument(); | 
| HTMLElement* body = document.body(); | 
| if (body && HasEditableStyle(*body)) { | 
| -      AXObject* ax_body = AxObjectCache().GetOrCreate(body); | 
| +      AXObjectImpl* ax_body = AxObjectCache().GetOrCreate(body); | 
| return ax_body && ax_body != ax_body->AriaHiddenRoot(); | 
| } | 
|  | 
| @@ -370,7 +370,7 @@ bool AXLayoutObject::IsRichlyEditable() const { | 
| Document& document = layout_object_->GetDocument(); | 
| HTMLElement* body = document.body(); | 
| if (body && HasRichlyEditableStyle(*body)) { | 
| -      AXObject* ax_body = AxObjectCache().GetOrCreate(body); | 
| +      AXObjectImpl* ax_body = AxObjectCache().GetOrCreate(body); | 
| return ax_body && ax_body != ax_body->AriaHiddenRoot(); | 
| } | 
|  | 
| @@ -412,7 +412,7 @@ bool AXLayoutObject::IsReadOnly() const { | 
| Document& document = layout_object_->GetDocument(); | 
| HTMLElement* body = document.body(); | 
| if (body && HasEditableStyle(*body)) { | 
| -      AXObject* ax_body = AxObjectCache().GetOrCreate(body); | 
| +      AXObjectImpl* ax_body = AxObjectCache().GetOrCreate(body); | 
| return !ax_body || ax_body == ax_body->AriaHiddenRoot(); | 
| } | 
|  | 
| @@ -441,7 +441,7 @@ bool AXLayoutObject::IsFocused() const { | 
| Element* focused_element = GetDocument()->FocusedElement(); | 
| if (!focused_element) | 
| return false; | 
| -  AXObject* focused_object = AxObjectCache().GetOrCreate(focused_element); | 
| +  AXObjectImpl* focused_object = AxObjectCache().GetOrCreate(focused_element); | 
| if (!focused_object || !focused_object->IsAXLayoutObject()) | 
| return false; | 
|  | 
| @@ -463,7 +463,7 @@ bool AXLayoutObject::IsSelected() const { | 
| if (EqualIgnoringASCIICase(aria_selected, "true")) | 
| return true; | 
|  | 
| -  AXObject* focused_object = AxObjectCache().FocusedObject(); | 
| +  AXObjectImpl* focused_object = AxObjectCache().FocusedObject(); | 
| if (AriaRoleAttribute() == kListBoxOptionRole && focused_object && | 
| focused_object->ActiveDescendant() == this) { | 
| return true; | 
| @@ -501,7 +501,7 @@ AXObjectInclusion AXLayoutObject::DefaultObjectInclusion( | 
| return kIgnoreObject; | 
| } | 
|  | 
| -  return AXObject::DefaultObjectInclusion(ignored_reasons); | 
| +  return AXObjectImpl::DefaultObjectInclusion(ignored_reasons); | 
| } | 
|  | 
| bool AXLayoutObject::ComputeAccessibilityIsIgnored( | 
| @@ -542,7 +542,7 @@ bool AXLayoutObject::ComputeAccessibilityIsIgnored( | 
|  | 
| if (HasInheritedPresentationalRole()) { | 
| if (ignored_reasons) { | 
| -      const AXObject* inherits_from = InheritsPresentationalRoleFrom(); | 
| +      const AXObjectImpl* inherits_from = InheritsPresentationalRoleFrom(); | 
| if (inherits_from == this) | 
| ignored_reasons->push_back(IgnoredReason(kAXPresentationalRole)); | 
| else | 
| @@ -553,7 +553,7 @@ bool AXLayoutObject::ComputeAccessibilityIsIgnored( | 
| } | 
|  | 
| // An ARIA tree can only have tree items and static text as children. | 
| -  if (AXObject* tree_ancestor = TreeAncestorDisallowingChild()) { | 
| +  if (AXObjectImpl* tree_ancestor = TreeAncestorDisallowingChild()) { | 
| if (ignored_reasons) | 
| ignored_reasons->push_back( | 
| IgnoredReason(kAXAncestorDisallowsChild, tree_ancestor)); | 
| @@ -572,13 +572,13 @@ bool AXLayoutObject::ComputeAccessibilityIsIgnored( | 
|  | 
| // Find out if this element is inside of a label element.  If so, it may be | 
| // ignored because it's the label for a checkbox or radio button. | 
| -  AXObject* control_object = CorrespondingControlForLabelElement(); | 
| +  AXObjectImpl* control_object = CorrespondingControlForLabelElement(); | 
| if (control_object && control_object->IsCheckboxOrRadio() && | 
| control_object->NameFromLabelElement()) { | 
| if (ignored_reasons) { | 
| HTMLLabelElement* label = LabelElementContainer(); | 
| if (label && label != GetNode()) { | 
| -        AXObject* label_ax_object = AxObjectCache().GetOrCreate(label); | 
| +        AXObjectImpl* label_ax_object = AxObjectCache().GetOrCreate(label); | 
| ignored_reasons->push_back( | 
| IgnoredReason(kAXLabelContainer, label_ax_object)); | 
| } | 
| @@ -600,7 +600,7 @@ bool AXLayoutObject::ComputeAccessibilityIsIgnored( | 
| if (layout_object_->IsText()) { | 
| // Static text beneath MenuItems and MenuButtons are just reported along | 
| // with the menu item, so it's ignored on an individual level. | 
| -    AXObject* parent = ParentObjectUnignored(); | 
| +    AXObjectImpl* parent = ParentObjectUnignored(); | 
| if (parent && (parent->AriaRoleAttribute() == kMenuItemRole || | 
| parent->AriaRoleAttribute() == kMenuButtonRole)) { | 
| if (ignored_reasons) | 
| @@ -616,7 +616,7 @@ bool AXLayoutObject::ComputeAccessibilityIsIgnored( | 
| } | 
|  | 
| // Don't ignore static text in editable text controls. | 
| -    for (AXObject* parent = ParentObject(); parent; | 
| +    for (AXObjectImpl* parent = ParentObject(); parent; | 
| parent = parent->ParentObject()) { | 
| if (parent->RoleValue() == kTextFieldRole) | 
| return false; | 
| @@ -809,7 +809,7 @@ RGBA32 AXLayoutObject::ComputeBackgroundColor() const { | 
| // Color::blend should be called like this: background.blend(foreground). | 
| for (LayoutObject* layout_object = GetLayoutObject(); layout_object; | 
| layout_object = layout_object->Parent()) { | 
| -    const AXObject* ax_parent = AxObjectCache().GetOrCreate(layout_object); | 
| +    const AXObjectImpl* ax_parent = AxObjectCache().GetOrCreate(layout_object); | 
| if (ax_parent && ax_parent != this) { | 
| Color parent_color = ax_parent->BackgroundColor(); | 
| blended_color = parent_color.Blend(blended_color); | 
| @@ -1080,13 +1080,13 @@ void AXLayoutObject::LoadInlineTextBoxes() { | 
| } | 
| } | 
|  | 
| -AXObject* AXLayoutObject::NextOnLine() const { | 
| +AXObjectImpl* AXLayoutObject::NextOnLine() const { | 
| if (!GetLayoutObject()) | 
| return nullptr; | 
|  | 
| -  AXObject* result = nullptr; | 
| +  AXObjectImpl* result = nullptr; | 
| if (GetLayoutObject()->IsListMarker()) { | 
| -    AXObject* next_sibling = RawNextSibling(); | 
| +    AXObjectImpl* next_sibling = RawNextSibling(); | 
| if (!next_sibling || !next_sibling->Children().size()) | 
| return nullptr; | 
| result = next_sibling->Children()[0].Get(); | 
| @@ -1119,7 +1119,7 @@ AXObject* AXLayoutObject::NextOnLine() const { | 
| return result; | 
| } | 
|  | 
| -AXObject* AXLayoutObject::PreviousOnLine() const { | 
| +AXObjectImpl* AXLayoutObject::PreviousOnLine() const { | 
| if (!GetLayoutObject()) | 
| return nullptr; | 
|  | 
| @@ -1132,7 +1132,7 @@ AXObject* AXLayoutObject::PreviousOnLine() const { | 
| if (!inline_box) | 
| return nullptr; | 
|  | 
| -  AXObject* result = nullptr; | 
| +  AXObjectImpl* result = nullptr; | 
| for (InlineBox* prev = inline_box->PrevOnLine(); prev; | 
| prev = prev->PrevOnLine()) { | 
| LayoutObject* layout_object = | 
| @@ -1291,9 +1291,10 @@ bool AXLayoutObject::AriaRoleHasPresentationalChildren() const { | 
| } | 
| } | 
|  | 
| -AXObject* AXLayoutObject::AncestorForWhichThisIsAPresentationalChild() const { | 
| +AXObjectImpl* AXLayoutObject::AncestorForWhichThisIsAPresentationalChild() | 
| +    const { | 
| // Walk the parent chain looking for a parent that has presentational children | 
| -  AXObject* parent = ParentObjectIfExists(); | 
| +  AXObjectImpl* parent = ParentObjectIfExists(); | 
| while (parent) { | 
| if (parent->AriaRoleHasPresentationalChildren()) | 
| break; | 
| @@ -1397,7 +1398,8 @@ bool AXLayoutObject::LiveRegionBusy() const { | 
| // Hit testing. | 
| // | 
|  | 
| -AXObject* AXLayoutObject::AccessibilityHitTest(const IntPoint& point) const { | 
| +AXObjectImpl* AXLayoutObject::AccessibilityHitTest( | 
| +    const IntPoint& point) const { | 
| if (!layout_object_ || !layout_object_->HasLayer()) | 
| return nullptr; | 
|  | 
| @@ -1424,7 +1426,7 @@ AXObject* AXLayoutObject::AccessibilityHitTest(const IntPoint& point) const { | 
| if (!obj) | 
| return nullptr; | 
|  | 
| -  AXObject* result = AxObjectCache().GetOrCreate(obj); | 
| +  AXObjectImpl* result = AxObjectCache().GetOrCreate(obj); | 
| result->UpdateChildrenIfNecessary(); | 
|  | 
| // Allow the element to perform any hit-testing it might need to do to reach | 
| @@ -1434,7 +1436,7 @@ AXObject* AXLayoutObject::AccessibilityHitTest(const IntPoint& point) const { | 
| // If this element is the label of a control, a hit test should return the | 
| // control. | 
| if (result->IsAXLayoutObject()) { | 
| -      AXObject* control_object = | 
| +      AXObjectImpl* control_object = | 
| ToAXLayoutObject(result)->CorrespondingControlForLabelElement(); | 
| if (control_object && control_object->NameFromLabelElement()) | 
| return control_object; | 
| @@ -1446,19 +1448,19 @@ AXObject* AXLayoutObject::AccessibilityHitTest(const IntPoint& point) const { | 
| return result; | 
| } | 
|  | 
| -AXObject* AXLayoutObject::ElementAccessibilityHitTest( | 
| +AXObjectImpl* AXLayoutObject::ElementAccessibilityHitTest( | 
| const IntPoint& point) const { | 
| if (IsSVGImage()) | 
| return RemoteSVGElementHitTest(point); | 
|  | 
| -  return AXObject::ElementAccessibilityHitTest(point); | 
| +  return AXObjectImpl::ElementAccessibilityHitTest(point); | 
| } | 
|  | 
| // | 
| // High-level accessibility tree access. | 
| // | 
|  | 
| -AXObject* AXLayoutObject::ComputeParent() const { | 
| +AXObjectImpl* AXLayoutObject::ComputeParent() const { | 
| DCHECK(!IsDetached()); | 
| if (!layout_object_) | 
| return 0; | 
| @@ -1469,7 +1471,7 @@ AXObject* AXLayoutObject::ComputeParent() const { | 
| // menuButton and its corresponding menu are DOM siblings, but Accessibility | 
| // needs them to be parent/child. | 
| if (AriaRoleAttribute() == kMenuRole) { | 
| -    AXObject* parent = MenuButtonForMenu(); | 
| +    AXObjectImpl* parent = MenuButtonForMenu(); | 
| if (parent) | 
| return parent; | 
| } | 
| @@ -1487,7 +1489,7 @@ AXObject* AXLayoutObject::ComputeParent() const { | 
| return 0; | 
| } | 
|  | 
| -AXObject* AXLayoutObject::ComputeParentIfExists() const { | 
| +AXObjectImpl* AXLayoutObject::ComputeParentIfExists() const { | 
| if (!layout_object_) | 
| return 0; | 
|  | 
| @@ -1497,7 +1499,7 @@ AXObject* AXLayoutObject::ComputeParentIfExists() const { | 
| // menuButton and its corresponding menu are DOM siblings, but Accessibility | 
| // needs them to be parent/child. | 
| if (AriaRoleAttribute() == kMenuRole) { | 
| -    AXObject* parent = MenuButtonForMenu(); | 
| +    AXObjectImpl* parent = MenuButtonForMenu(); | 
| if (parent) | 
| return parent; | 
| } | 
| @@ -1520,7 +1522,7 @@ AXObject* AXLayoutObject::ComputeParentIfExists() const { | 
| // accessibility module. | 
| // | 
|  | 
| -AXObject* AXLayoutObject::RawFirstChild() const { | 
| +AXObjectImpl* AXLayoutObject::RawFirstChild() const { | 
| if (!layout_object_) | 
| return 0; | 
|  | 
| @@ -1532,7 +1534,7 @@ AXObject* AXLayoutObject::RawFirstChild() const { | 
| return AxObjectCache().GetOrCreate(first_child); | 
| } | 
|  | 
| -AXObject* AXLayoutObject::RawNextSibling() const { | 
| +AXObjectImpl* AXLayoutObject::RawNextSibling() const { | 
| if (!layout_object_) | 
| return 0; | 
|  | 
| @@ -1600,10 +1602,10 @@ void AXLayoutObject::AddChildren() { | 
| if (!CanHaveChildren()) | 
| return; | 
|  | 
| -  HeapVector<Member<AXObject>> owned_children; | 
| +  HeapVector<Member<AXObjectImpl>> owned_children; | 
| ComputeAriaOwnsChildren(owned_children); | 
|  | 
| -  for (AXObject* obj = RawFirstChild(); obj; obj = obj->RawNextSibling()) { | 
| +  for (AXObjectImpl* obj = RawFirstChild(); obj; obj = obj->RawNextSibling()) { | 
| if (!AxObjectCache().IsAriaOwned(obj)) { | 
| obj->SetParent(this); | 
| AddChild(obj); | 
| @@ -1638,11 +1640,11 @@ void AXLayoutObject::UpdateChildrenIfNecessary() { | 
| if (NeedsToUpdateChildren()) | 
| ClearChildren(); | 
|  | 
| -  AXObject::UpdateChildrenIfNecessary(); | 
| +  AXObjectImpl::UpdateChildrenIfNecessary(); | 
| } | 
|  | 
| void AXLayoutObject::ClearChildren() { | 
| -  AXObject::ClearChildren(); | 
| +  AXObjectImpl::ClearChildren(); | 
| children_dirty_ = false; | 
| } | 
|  | 
| @@ -1729,7 +1731,7 @@ Element* AXLayoutObject::AnchorElement() const { | 
| // Functions that retrieve the current selection. | 
| // | 
|  | 
| -AXObject::AXRange AXLayoutObject::Selection() const { | 
| +AXObjectImpl::AXRange AXLayoutObject::Selection() const { | 
| AXRange text_selection = TextControlSelection(); | 
| if (text_selection.IsValid()) | 
| return text_selection; | 
| @@ -1756,7 +1758,7 @@ AXObject::AXRange AXLayoutObject::Selection() const { | 
| DCHECK(anchor_node); | 
|  | 
| AXLayoutObject* anchor_object = nullptr; | 
| -  // Find the closest node that has a corresponding AXObject. | 
| +  // Find the closest node that has a corresponding AXObjectImpl. | 
| // This is because some nodes may be aria hidden or might not even have | 
| // a layout object if they are part of the shadow DOM. | 
| while (anchor_node) { | 
| @@ -1799,7 +1801,7 @@ AXObject::AXRange AXLayoutObject::Selection() const { | 
| // Gets only the start and end offsets of the selection computed using the | 
| // current object as the starting point. Returns a null selection if there is | 
| // no selection in the subtree rooted at this object. | 
| -AXObject::AXRange AXLayoutObject::SelectionUnderObject() const { | 
| +AXObjectImpl::AXRange AXLayoutObject::SelectionUnderObject() const { | 
| AXRange text_selection = TextControlSelection(); | 
| if (text_selection.IsValid()) | 
| return text_selection; | 
| @@ -1833,7 +1835,7 @@ AXObject::AXRange AXLayoutObject::SelectionUnderObject() const { | 
| return AXRange(start, end); | 
| } | 
|  | 
| -AXObject::AXRange AXLayoutObject::TextControlSelection() const { | 
| +AXObjectImpl::AXRange AXLayoutObject::TextControlSelection() const { | 
| if (!GetLayoutObject()) | 
| return AXRange(); | 
|  | 
| @@ -1850,7 +1852,7 @@ AXObject::AXRange AXLayoutObject::TextControlSelection() const { | 
| if (!layout) | 
| return AXRange(); | 
|  | 
| -  AXObject* ax_object = AxObjectCache().GetOrCreate(layout); | 
| +  AXObjectImpl* ax_object = AxObjectCache().GetOrCreate(layout); | 
| if (!ax_object || !ax_object->IsAXLayoutObject()) | 
| return AXRange(); | 
|  | 
| @@ -1895,7 +1897,7 @@ AXLayoutObject* AXLayoutObject::GetUnignoredObjectFromNode(Node& node) const { | 
| if (IsDetached()) | 
| return nullptr; | 
|  | 
| -  AXObject* ax_object = AxObjectCache().GetOrCreate(&node); | 
| +  AXObjectImpl* ax_object = AxObjectCache().GetOrCreate(&node); | 
| if (!ax_object) | 
| return nullptr; | 
|  | 
| @@ -1910,7 +1912,7 @@ AXLayoutObject* AXLayoutObject::GetUnignoredObjectFromNode(Node& node) const { | 
| // | 
|  | 
| // Convert from an accessible object and offset to a VisiblePosition. | 
| -static VisiblePosition ToVisiblePosition(AXObject* obj, int offset) { | 
| +static VisiblePosition ToVisiblePosition(AXObjectImpl* obj, int offset) { | 
| if (!obj->GetNode()) | 
| return VisiblePosition(); | 
|  | 
| @@ -1936,7 +1938,7 @@ static VisiblePosition ToVisiblePosition(AXObject* obj, int offset) { | 
| static_cast<unsigned>(offset) > (obj->Children().size() - 1) | 
| ? offset - 1 | 
| : offset; | 
| -    AXObject* child_obj = obj->Children()[clamped_offset]; | 
| +    AXObjectImpl* child_obj = obj->Children()[clamped_offset]; | 
| Node* child_node = child_obj->GetNode(); | 
| if (!child_node || !child_node->parentNode()) | 
| return VisiblePosition(); | 
| @@ -1969,9 +1971,9 @@ void AXLayoutObject::SetSelection(const AXRange& selection) { | 
| if (!GetLayoutObject() || !selection.IsValid()) | 
| return; | 
|  | 
| -  AXObject* anchor_object = | 
| +  AXObjectImpl* anchor_object = | 
| selection.anchor_object ? selection.anchor_object.Get() : this; | 
| -  AXObject* focus_object = | 
| +  AXObjectImpl* focus_object = | 
| selection.focus_object ? selection.focus_object.Get() : this; | 
|  | 
| if (!IsValidSelectionBound(anchor_object) || | 
| @@ -2023,7 +2025,8 @@ void AXLayoutObject::SetSelection(const AXRange& selection) { | 
| .Build()); | 
| } | 
|  | 
| -bool AXLayoutObject::IsValidSelectionBound(const AXObject* bound_object) const { | 
| +bool AXLayoutObject::IsValidSelectionBound( | 
| +    const AXObjectImpl* bound_object) const { | 
| return GetLayoutObject() && bound_object && !bound_object->IsDetached() && | 
| bound_object->IsAXLayoutObject() && bound_object->GetLayoutObject() && | 
| bound_object->GetLayoutObject()->GetFrame() == | 
| @@ -2054,7 +2057,7 @@ void AXLayoutObject::HandleActiveDescendantChanged() { | 
| if (!GetLayoutObject()) | 
| return; | 
|  | 
| -  AXObject* focused_object = AxObjectCache().FocusedObject(); | 
| +  AXObjectImpl* focused_object = AxObjectCache().FocusedObject(); | 
| if (focused_object == this && SupportsActiveDescendant()) { | 
| AxObjectCache().PostNotification( | 
| GetLayoutObject(), AXObjectCacheImpl::kAXActiveDescendantChanged); | 
| @@ -2063,7 +2066,7 @@ void AXLayoutObject::HandleActiveDescendantChanged() { | 
|  | 
| void AXLayoutObject::HandleAriaExpandedChanged() { | 
| // Find if a parent of this object should handle aria-expanded changes. | 
| -  AXObject* container_parent = this->ParentObject(); | 
| +  AXObjectImpl* container_parent = this->ParentObject(); | 
| while (container_parent) { | 
| bool found_parent = false; | 
|  | 
| @@ -2183,7 +2186,7 @@ void AXLayoutObject::AddInlineTextBoxChildren(bool force) { | 
| for (RefPtr<AbstractInlineTextBox> box = | 
| layout_text->FirstAbstractInlineTextBox(); | 
| box.Get(); box = box->NextInlineTextBox()) { | 
| -    AXObject* ax_object = AxObjectCache().GetOrCreate(box.Get()); | 
| +    AXObjectImpl* ax_object = AxObjectCache().GetOrCreate(box.Get()); | 
| if (!ax_object->AccessibilityIsIgnored()) | 
| children_.push_back(ax_object); | 
| } | 
| @@ -2216,11 +2219,11 @@ void AXLayoutObject::LineBreaks(Vector<int>& line_breaks) const { | 
| // Private. | 
| // | 
|  | 
| -AXObject* AXLayoutObject::TreeAncestorDisallowingChild() const { | 
| +AXObjectImpl* AXLayoutObject::TreeAncestorDisallowingChild() const { | 
| // Determine if this is in a tree. If so, we apply special behavior to make it | 
| // work like an AXOutline. | 
| -  AXObject* ax_obj = ParentObject(); | 
| -  AXObject* tree_ancestor = 0; | 
| +  AXObjectImpl* ax_obj = ParentObject(); | 
| +  AXObjectImpl* tree_ancestor = 0; | 
| while (ax_obj) { | 
| if (ax_obj->IsTree()) { | 
| tree_ancestor = ax_obj; | 
| @@ -2250,7 +2253,7 @@ bool AXLayoutObject::IsTabItemSelected() const { | 
| // The ARIA spec says a tab item can also be selected if it is aria-labeled by | 
| // a tabpanel that has keyboard focus inside of it, or if a tabpanel in its | 
| // aria-controls list has KB focus inside of it. | 
| -  AXObject* focused_element = AxObjectCache().FocusedObject(); | 
| +  AXObjectImpl* focused_element = AxObjectCache().FocusedObject(); | 
| if (!focused_element) | 
| return false; | 
|  | 
| @@ -2258,13 +2261,13 @@ bool AXLayoutObject::IsTabItemSelected() const { | 
| ElementsFromAttribute(elements, aria_controlsAttr); | 
|  | 
| for (const auto& element : elements) { | 
| -    AXObject* tab_panel = AxObjectCache().GetOrCreate(element); | 
| +    AXObjectImpl* tab_panel = AxObjectCache().GetOrCreate(element); | 
|  | 
| // A tab item should only control tab panels. | 
| if (!tab_panel || tab_panel->RoleValue() != kTabPanelRole) | 
| continue; | 
|  | 
| -    AXObject* check_focus_element = focused_element; | 
| +    AXObjectImpl* check_focus_element = focused_element; | 
| // Check if the focused element is a descendant of the element controlled by | 
| // the tab item. | 
| while (check_focus_element) { | 
| @@ -2277,13 +2280,13 @@ bool AXLayoutObject::IsTabItemSelected() const { | 
| return false; | 
| } | 
|  | 
| -AXObject* AXLayoutObject::AccessibilityImageMapHitTest( | 
| +AXObjectImpl* AXLayoutObject::AccessibilityImageMapHitTest( | 
| HTMLAreaElement* area, | 
| const IntPoint& point) const { | 
| if (!area) | 
| return 0; | 
|  | 
| -  AXObject* parent = AxObjectCache().GetOrCreate(area->ImageElement()); | 
| +  AXObjectImpl* parent = AxObjectCache().GetOrCreate(area->ImageElement()); | 
| if (!parent) | 
| return 0; | 
|  | 
| @@ -2361,8 +2364,9 @@ AXSVGRoot* AXLayoutObject::RemoteSVGRootElement() const { | 
| return 0; | 
| } | 
|  | 
| -AXObject* AXLayoutObject::RemoteSVGElementHitTest(const IntPoint& point) const { | 
| -  AXObject* remote = RemoteSVGRootElement(); | 
| +AXObjectImpl* AXLayoutObject::RemoteSVGElementHitTest( | 
| +    const IntPoint& point) const { | 
| +  AXObjectImpl* remote = RemoteSVGRootElement(); | 
| if (!remote) | 
| return 0; | 
|  | 
| @@ -2376,7 +2380,7 @@ AXObject* AXLayoutObject::RemoteSVGElementHitTest(const IntPoint& point) const { | 
| // coordinates only. | 
| void AXLayoutObject::OffsetBoundingBoxForRemoteSVGElement( | 
| LayoutRect& rect) const { | 
| -  for (AXObject* parent = ParentObject(); parent; | 
| +  for (AXObjectImpl* parent = ParentObject(); parent; | 
| parent = parent->ParentObject()) { | 
| if (parent->IsAXSVGRoot()) { | 
| rect.MoveBy( | 
| @@ -2415,7 +2419,7 @@ void AXLayoutObject::AddHiddenChildren() { | 
| for (Node& child : NodeTraversal::ChildrenOf(*node)) { | 
| if (child.GetLayoutObject()) { | 
| // Find out where the last layout sibling is located within m_children. | 
| -      if (AXObject* child_object = | 
| +      if (AXObjectImpl* child_object = | 
| AxObjectCache().Get(child.GetLayoutObject())) { | 
| if (child_object->AccessibilityIsIgnored()) { | 
| const auto& children = child_object->Children(); | 
| @@ -2470,7 +2474,7 @@ void AXLayoutObject::AddImageMapChildren() { | 
| for (HTMLAreaElement& area : | 
| Traversal<HTMLAreaElement>::DescendantsOf(*map)) { | 
| // add an <area> element for this child if it has a link | 
| -    AXObject* obj = AxObjectCache().GetOrCreate(&area); | 
| +    AXObjectImpl* obj = AxObjectCache().GetOrCreate(&area); | 
| if (obj) { | 
| AXImageMapLink* area_object = ToAXImageMapLink(obj); | 
| area_object->SetParent(this); | 
| @@ -2498,7 +2502,8 @@ void AXLayoutObject::AddCanvasChildren() { | 
| void AXLayoutObject::AddPopupChildren() { | 
| if (!isHTMLInputElement(GetNode())) | 
| return; | 
| -  if (AXObject* ax_popup = toHTMLInputElement(GetNode())->PopupRootAXObject()) | 
| +  if (AXObjectImpl* ax_popup = | 
| +          ToAXObjectImpl(toHTMLInputElement(GetNode())->PopupRootAXObject())) | 
| children_.push_back(ax_popup); | 
| } | 
|  | 
|  |