| Index: third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp | 
| diff --git a/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp | 
| index 8ac8fb39133b09e1d3da45927c8cdb6768991d62..55b2fbcefa4cb0ad6a877212304485d89e12299d 100644 | 
| --- a/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp | 
| +++ b/third_party/WebKit/Source/modules/accessibility/AXNodeObject.cpp | 
| @@ -80,7 +80,7 @@ class SparseAttributeSetter { | 
| USING_FAST_MALLOC(SparseAttributeSetter); | 
|  | 
| public: | 
| -  virtual void Run(const AXObject&, | 
| +  virtual void Run(const AXObjectImpl&, | 
| AXSparseAttributeClient&, | 
| const AtomicString& value) = 0; | 
| }; | 
| @@ -92,7 +92,7 @@ class BoolAttributeSetter : public SparseAttributeSetter { | 
| private: | 
| AXBoolAttribute attribute_; | 
|  | 
| -  void Run(const AXObject& obj, | 
| +  void Run(const AXObjectImpl& obj, | 
| AXSparseAttributeClient& attribute_map, | 
| const AtomicString& value) override { | 
| attribute_map.AddBoolAttribute(attribute_, | 
| @@ -107,7 +107,7 @@ class StringAttributeSetter : public SparseAttributeSetter { | 
| private: | 
| AXStringAttribute attribute_; | 
|  | 
| -  void Run(const AXObject& obj, | 
| +  void Run(const AXObjectImpl& obj, | 
| AXSparseAttributeClient& attribute_map, | 
| const AtomicString& value) override { | 
| attribute_map.AddStringAttribute(attribute_, value); | 
| @@ -121,7 +121,7 @@ class ObjectAttributeSetter : public SparseAttributeSetter { | 
| private: | 
| AXObjectAttribute attribute_; | 
|  | 
| -  void Run(const AXObject& obj, | 
| +  void Run(const AXObjectImpl& obj, | 
| AXSparseAttributeClient& attribute_map, | 
| const AtomicString& value) override { | 
| if (value.IsNull() || value.IsEmpty()) | 
| @@ -133,7 +133,7 @@ class ObjectAttributeSetter : public SparseAttributeSetter { | 
| Element* target = ToElement(node)->GetTreeScope().getElementById(value); | 
| if (!target) | 
| return; | 
| -    AXObject* ax_target = obj.AxObjectCache().GetOrCreate(target); | 
| +    AXObjectImpl* ax_target = obj.AxObjectCache().GetOrCreate(target); | 
| if (ax_target) | 
| attribute_map.AddObjectAttribute(attribute_, *ax_target); | 
| } | 
| @@ -147,7 +147,7 @@ class ObjectVectorAttributeSetter : public SparseAttributeSetter { | 
| private: | 
| AXObjectVectorAttribute attribute_; | 
|  | 
| -  void Run(const AXObject& obj, | 
| +  void Run(const AXObjectImpl& obj, | 
| AXSparseAttributeClient& attribute_map, | 
| const AtomicString& value) override { | 
| Node* node = obj.GetNode(); | 
| @@ -164,11 +164,12 @@ class ObjectVectorAttributeSetter : public SparseAttributeSetter { | 
| if (ids.IsEmpty()) | 
| return; | 
|  | 
| -    HeapVector<Member<AXObject>> objects; | 
| +    HeapVector<Member<AXObjectImpl>> objects; | 
| TreeScope& scope = node->GetTreeScope(); | 
| for (const auto& id : ids) { | 
| if (Element* id_element = scope.getElementById(AtomicString(id))) { | 
| -        AXObject* ax_id_element = obj.AxObjectCache().GetOrCreate(id_element); | 
| +        AXObjectImpl* ax_id_element = | 
| +            obj.AxObjectCache().GetOrCreate(id_element); | 
| if (ax_id_element && !ax_id_element->AccessibilityIsIgnored()) | 
| objects.push_back(ax_id_element); | 
| } | 
| @@ -215,7 +216,7 @@ static AXSparseAttributeSetterMap& GetSparseAttributeSetterMap() { | 
| } | 
|  | 
| AXNodeObject::AXNodeObject(Node* node, AXObjectCacheImpl& ax_object_cache) | 
| -    : AXObject(ax_object_cache), | 
| +    : AXObjectImpl(ax_object_cache), | 
| aria_role_(kUnknownRole), | 
| children_dirty_(false), | 
| node_(node) {} | 
| @@ -243,7 +244,7 @@ void AXNodeObject::AlterSliderValue(bool increase) { | 
| AXObjectCacheImpl::kAXValueChanged); | 
| } | 
|  | 
| -AXObject* AXNodeObject::ActiveDescendant() { | 
| +AXObjectImpl* AXNodeObject::ActiveDescendant() { | 
| if (!node_ || !node_->IsElementNode()) | 
| return nullptr; | 
|  | 
| @@ -258,14 +259,14 @@ AXObject* AXNodeObject::ActiveDescendant() { | 
| if (!descendant) | 
| return nullptr; | 
|  | 
| -  AXObject* ax_descendant = AxObjectCache().GetOrCreate(descendant); | 
| +  AXObjectImpl* ax_descendant = AxObjectCache().GetOrCreate(descendant); | 
| return ax_descendant; | 
| } | 
|  | 
| bool AXNodeObject::ComputeAccessibilityIsIgnored( | 
| IgnoredReasons* ignored_reasons) const { | 
| #if DCHECK_IS_ON() | 
| -  // Double-check that an AXObject is never accessed before | 
| +  // Double-check that an AXObjectImpl is never accessed before | 
| // it's been initialized. | 
| DCHECK(initialized_); | 
| #endif | 
| @@ -280,13 +281,13 @@ bool AXNodeObject::ComputeAccessibilityIsIgnored( | 
| } | 
|  | 
| // Ignore labels that are already referenced by a control. | 
| -  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)); | 
| } | 
| @@ -318,7 +319,7 @@ static bool IsListElement(Node* node) { | 
| isHTMLDListElement(*node); | 
| } | 
|  | 
| -static bool IsPresentationalInTable(AXObject* parent, | 
| +static bool IsPresentationalInTable(AXObjectImpl* parent, | 
| HTMLElement* current_element) { | 
| if (!current_element) | 
| return false; | 
| @@ -345,7 +346,7 @@ static bool IsPresentationalInTable(AXObject* parent, | 
| IsHTMLTableSectionElement(ToHTMLElement(*parent_node))) { | 
| // Because TableSections have ignored role, presentation should be checked | 
| // with its parent node. | 
| -    AXObject* table_object = parent->ParentObject(); | 
| +    AXObjectImpl* table_object = parent->ParentObject(); | 
| Node* table_node = table_object ? table_object->GetNode() : 0; | 
| return isHTMLTableElement(table_node) && | 
| table_object->HasInheritedPresentationalRole(); | 
| @@ -353,7 +354,7 @@ static bool IsPresentationalInTable(AXObject* parent, | 
| return false; | 
| } | 
|  | 
| -static bool IsRequiredOwnedElement(AXObject* parent, | 
| +static bool IsRequiredOwnedElement(AXObjectImpl* parent, | 
| AccessibilityRole current_role, | 
| HTMLElement* current_element) { | 
| Node* parent_node = parent->GetNode(); | 
| @@ -383,7 +384,7 @@ static bool IsRequiredOwnedElement(AXObject* parent, | 
| return false; | 
| } | 
|  | 
| -const AXObject* AXNodeObject::InheritsPresentationalRoleFrom() const { | 
| +const AXObjectImpl* AXNodeObject::InheritsPresentationalRoleFrom() const { | 
| // ARIA states if an item can get focus, it should not be presentational. | 
| if (CanSetFocusAttribute()) | 
| return 0; | 
| @@ -398,7 +399,7 @@ const AXObject* AXNodeObject::InheritsPresentationalRoleFrom() const { | 
| if (AriaRoleAttribute() != kUnknownRole) | 
| return 0; | 
|  | 
| -  AXObject* parent = ParentObject(); | 
| +  AXObjectImpl* parent = ParentObject(); | 
| if (!parent) | 
| return 0; | 
|  | 
| @@ -723,13 +724,13 @@ AccessibilityRole AXNodeObject::DetermineAriaRoleAttribute() const { | 
|  | 
| void AXNodeObject::AccessibilityChildrenFromAttribute( | 
| QualifiedName attr, | 
| -    AXObject::AXObjectVector& children) const { | 
| +    AXObjectImpl::AXObjectVector& children) const { | 
| HeapVector<Member<Element>> elements; | 
| ElementsFromAttribute(elements, attr); | 
|  | 
| AXObjectCacheImpl& cache = AxObjectCache(); | 
| for (const auto& element : elements) { | 
| -    if (AXObject* child = cache.GetOrCreate(element)) { | 
| +    if (AXObjectImpl* child = cache.GetOrCreate(element)) { | 
| // Only aria-labelledby and aria-describedby can target hidden elements. | 
| if (child->AccessibilityIsIgnored() && attr != aria_labelledbyAttr && | 
| attr != aria_labeledbyAttr && attr != aria_describedbyAttr) { | 
| @@ -803,13 +804,13 @@ bool AXNodeObject::IsGenericFocusableElement() const { | 
| return true; | 
| } | 
|  | 
| -AXObject* AXNodeObject::MenuButtonForMenu() const { | 
| +AXObjectImpl* AXNodeObject::MenuButtonForMenu() const { | 
| Element* menu_item = MenuItemElementForMenu(); | 
|  | 
| if (menu_item) { | 
| // ARIA just has generic menu items. AppKit needs to know if this is a top | 
| // level items like MenuBarButton or MenuBarItem | 
| -    AXObject* menu_item_ax = AxObjectCache().GetOrCreate(menu_item); | 
| +    AXObjectImpl* menu_item_ax = AxObjectCache().GetOrCreate(menu_item); | 
| if (menu_item_ax && menu_item_ax->IsMenuButton()) | 
| return menu_item_ax; | 
| } | 
| @@ -879,7 +880,7 @@ AccessibilityRole AXNodeObject::RemapAriaRoleDueToParent( | 
| if (role != kListBoxOptionRole && role != kMenuItemRole) | 
| return role; | 
|  | 
| -  for (AXObject* parent = ParentObject(); | 
| +  for (AXObjectImpl* parent = ParentObject(); | 
| parent && !parent->AccessibilityIsIgnored(); | 
| parent = parent->ParentObject()) { | 
| AccessibilityRole parent_aria_role = parent->AriaRoleAttribute(); | 
| @@ -911,7 +912,7 @@ void AXNodeObject::Init() { | 
| } | 
|  | 
| void AXNodeObject::Detach() { | 
| -  AXObject::Detach(); | 
| +  AXObjectImpl::Detach(); | 
| node_ = nullptr; | 
| } | 
|  | 
| @@ -959,7 +960,7 @@ bool AXNodeObject::IsControl() const { | 
| return false; | 
|  | 
| return ((node->IsElementNode() && ToElement(node)->IsFormControlElement()) || | 
| -          AXObject::IsARIAControl(AriaRoleAttribute())); | 
| +          AXObjectImpl::IsARIAControl(AriaRoleAttribute())); | 
| } | 
|  | 
| bool AXNodeObject::IsControllingVideoElement() const { | 
| @@ -1160,7 +1161,7 @@ bool AXNodeObject::IsClickable() const { | 
| return true; | 
| } | 
|  | 
| -  return AXObject::IsClickable(); | 
| +  return AXObjectImpl::IsClickable(); | 
| } | 
|  | 
| bool AXNodeObject::IsEnabled() const { | 
| @@ -1303,7 +1304,7 @@ bool AXNodeObject::CanSetSelectedAttribute() const { | 
| if (AriaRoleAttribute() == kListBoxOptionRole && | 
| AncestorExposesActiveDescendant()) | 
| return true; | 
| -  return AXObject::CanSetSelectedAttribute(); | 
| +  return AXObjectImpl::CanSetSelectedAttribute(); | 
| } | 
|  | 
| bool AXNodeObject::CanvasHasFallbackContent() const { | 
| @@ -1379,7 +1380,7 @@ unsigned AXNodeObject::HierarchicalLevel() const { | 
| // Hierarchy leveling starts at 1, to match the aria-level spec. | 
| // We measure tree hierarchy by the number of groups that the item is within. | 
| unsigned level = 1; | 
| -  for (AXObject* parent = ParentObject(); parent; | 
| +  for (AXObjectImpl* parent = ParentObject(); parent; | 
| parent = parent->ParentObject()) { | 
| AccessibilityRole parent_role = parent->RoleValue(); | 
| if (parent_role == kGroupRole) | 
| @@ -1430,29 +1431,29 @@ void AXNodeObject::Markers(Vector<DocumentMarker::MarkerType>& marker_types, | 
| } | 
| } | 
|  | 
| -AXObject* AXNodeObject::InPageLinkTarget() const { | 
| +AXObjectImpl* AXNodeObject::InPageLinkTarget() const { | 
| if (!node_ || !isHTMLAnchorElement(node_) || !GetDocument()) | 
| -    return AXObject::InPageLinkTarget(); | 
| +    return AXObjectImpl::InPageLinkTarget(); | 
|  | 
| HTMLAnchorElement* anchor = toHTMLAnchorElement(node_); | 
| DCHECK(anchor); | 
| KURL link_url = anchor->Href(); | 
| if (!link_url.IsValid()) | 
| -    return AXObject::InPageLinkTarget(); | 
| +    return AXObjectImpl::InPageLinkTarget(); | 
| String fragment = link_url.FragmentIdentifier(); | 
| if (fragment.IsEmpty()) | 
| -    return AXObject::InPageLinkTarget(); | 
| +    return AXObjectImpl::InPageLinkTarget(); | 
|  | 
| KURL document_url = GetDocument()->Url(); | 
| if (!document_url.IsValid() || | 
| !EqualIgnoringFragmentIdentifier(document_url, link_url)) { | 
| -    return AXObject::InPageLinkTarget(); | 
| +    return AXObjectImpl::InPageLinkTarget(); | 
| } | 
|  | 
| TreeScope& tree_scope = anchor->GetTreeScope(); | 
| Element* target = tree_scope.FindAnchor(fragment); | 
| if (!target) | 
| -    return AXObject::InPageLinkTarget(); | 
| +    return AXObjectImpl::InPageLinkTarget(); | 
| // If the target is not in the accessibility tree, get the first unignored | 
| // sibling. | 
| return AxObjectCache().FirstAccessibleObjectFromNode(target); | 
| @@ -1490,11 +1491,11 @@ AccessibilityOrientation AXNodeObject::Orientation() const { | 
| case kTreeGridRole: | 
| return orientation; | 
| default: | 
| -      return AXObject::Orientation(); | 
| +      return AXObjectImpl::Orientation(); | 
| } | 
| } | 
|  | 
| -AXObject::AXObjectVector AXNodeObject::RadioButtonsInGroup() const { | 
| +AXObjectImpl::AXObjectVector AXNodeObject::RadioButtonsInGroup() const { | 
| AXObjectVector radio_buttons; | 
| if (!node_ || RoleValue() != kRadioButtonRole) | 
| return radio_buttons; | 
| @@ -1504,7 +1505,7 @@ AXObject::AXObjectVector AXNodeObject::RadioButtonsInGroup() const { | 
| HeapVector<Member<HTMLInputElement>> html_radio_buttons = | 
| FindAllRadioButtonsWithSameName(radio_button); | 
| for (size_t i = 0; i < html_radio_buttons.size(); ++i) { | 
| -      AXObject* ax_radio_button = | 
| +      AXObjectImpl* ax_radio_button = | 
| AxObjectCache().GetOrCreate(html_radio_buttons[i]); | 
| if (ax_radio_button) | 
| radio_buttons.push_back(ax_radio_button); | 
| @@ -1514,10 +1515,10 @@ AXObject::AXObjectVector AXNodeObject::RadioButtonsInGroup() const { | 
|  | 
| // If the immediate parent is a radio group, return all its children that are | 
| // radio buttons. | 
| -  AXObject* parent = ParentObject(); | 
| +  AXObjectImpl* parent = ParentObject(); | 
| if (parent && parent->RoleValue() == kRadioGroupRole) { | 
| for (size_t i = 0; i < parent->Children().size(); ++i) { | 
| -      AXObject* child = parent->Children()[i]; | 
| +      AXObjectImpl* child = parent->Children()[i]; | 
| DCHECK(child); | 
| if (child->RoleValue() == kRadioButtonRole && | 
| !child->AccessibilityIsIgnored()) { | 
| @@ -1579,12 +1580,12 @@ String AXNodeObject::GetText() const { | 
|  | 
| RGBA32 AXNodeObject::ColorValue() const { | 
| if (!isHTMLInputElement(GetNode()) || !IsColorWell()) | 
| -    return AXObject::ColorValue(); | 
| +    return AXObjectImpl::ColorValue(); | 
|  | 
| HTMLInputElement* input = toHTMLInputElement(GetNode()); | 
| const AtomicString& type = input->getAttribute(typeAttr); | 
| if (!EqualIgnoringASCIICase(type, "color")) | 
| -    return AXObject::ColorValue(); | 
| +    return AXObjectImpl::ColorValue(); | 
|  | 
| // HTMLInputElement::value always returns a string parseable by Color. | 
| Color color; | 
| @@ -1617,7 +1618,7 @@ AriaCurrentState AXNodeObject::GetAriaCurrentState() const { | 
| if (!attribute_value.IsEmpty()) | 
| return kAriaCurrentStateTrue; | 
|  | 
| -  return AXObject::GetAriaCurrentState(); | 
| +  return AXObjectImpl::GetAriaCurrentState(); | 
| } | 
|  | 
| InvalidState AXNodeObject::GetInvalidState() const { | 
| @@ -1644,7 +1645,7 @@ InvalidState AXNodeObject::GetInvalidState() const { | 
| return is_invalid ? kInvalidStateTrue : kInvalidStateFalse; | 
| } | 
|  | 
| -  return AXObject::GetInvalidState(); | 
| +  return AXObjectImpl::GetInvalidState(); | 
| } | 
|  | 
| int AXNodeObject::PosInSet() const { | 
| @@ -1657,7 +1658,7 @@ int AXNodeObject::PosInSet() const { | 
| return 1; | 
| } | 
|  | 
| -    return AXObject::IndexInParent() + 1; | 
| +    return AXObjectImpl::IndexInParent() + 1; | 
| } | 
|  | 
| return 0; | 
| @@ -1936,20 +1937,20 @@ String AXNodeObject::TextFromDescendants(AXObjectSet& visited, | 
| return String(); | 
|  | 
| StringBuilder accumulated_text; | 
| -  AXObject* previous = nullptr; | 
| +  AXObjectImpl* previous = nullptr; | 
|  | 
| AXObjectVector children; | 
|  | 
| -  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)) | 
| children.push_back(obj); | 
| } | 
| for (const auto& owned_child : owned_children) | 
| children.push_back(owned_child); | 
|  | 
| -  for (AXObject* child : children) { | 
| +  for (AXObjectImpl* child : children) { | 
| // Don't recurse into children that are explicitly marked as aria-hidden. | 
| // Note that we don't call isInertOrAriaHidden because that would return | 
| // true if any ancestor is hidden, but we need to be able to compute the | 
| @@ -2026,23 +2027,23 @@ bool AXNodeObject::NameFromLabelElement() const { | 
| bool AXNodeObject::NameFromContents() const { | 
| Node* node = GetNode(); | 
| if (!node || !node->IsElementNode()) | 
| -    return AXObject::NameFromContents(); | 
| -  // AXObject::nameFromContents determines whether an element should take its | 
| -  // name from its descendant contents based on role. However, <select> is a | 
| +    return AXObjectImpl::NameFromContents(); | 
| +  // AXObjectImpl::nameFromContents determines whether an element should take | 
| +  // its name from its descendant contents based on role. However, <select> is a | 
| // special case, as unlike a typical pop-up button it contains its own pop-up | 
| // menu's contents, which should not be used as the name. | 
| if (isHTMLSelectElement(node)) | 
| return false; | 
| -  return AXObject::NameFromContents(); | 
| +  return AXObjectImpl::NameFromContents(); | 
| } | 
|  | 
| void AXNodeObject::GetRelativeBounds( | 
| -    AXObject** out_container, | 
| +    AXObjectImpl** out_container, | 
| FloatRect& out_bounds_in_container, | 
| SkMatrix44& out_container_transform) const { | 
| if (LayoutObjectForRelativeBounds()) { | 
| -    AXObject::GetRelativeBounds(out_container, out_bounds_in_container, | 
| -                                out_container_transform); | 
| +    AXObjectImpl::GetRelativeBounds(out_container, out_bounds_in_container, | 
| +                                    out_container_transform); | 
| return; | 
| } | 
|  | 
| @@ -2068,8 +2069,8 @@ void AXNodeObject::GetRelativeBounds( | 
| Vector<FloatRect> rects; | 
| for (Node& child : NodeTraversal::ChildrenOf(*GetNode())) { | 
| if (child.IsHTMLElement()) { | 
| -        if (AXObject* obj = AxObjectCache().Get(&child)) { | 
| -          AXObject* container; | 
| +        if (AXObjectImpl* obj = AxObjectCache().Get(&child)) { | 
| +          AXObjectImpl* container; | 
| FloatRect bounds; | 
| obj->GetRelativeBounds(&container, bounds, out_container_transform); | 
| if (container) { | 
| @@ -2090,7 +2091,7 @@ void AXNodeObject::GetRelativeBounds( | 
| // children, for now, let's return the position of the ancestor that does have | 
| // a position, and make it the width of that parent, and about the height of a | 
| // line of text, so that it's clear the object is a child of the parent. | 
| -  for (AXObject* position_provider = ParentObject(); position_provider; | 
| +  for (AXObjectImpl* position_provider = ParentObject(); position_provider; | 
| position_provider = position_provider->ParentObject()) { | 
| if (position_provider->IsAXLayoutObject()) { | 
| position_provider->GetRelativeBounds( | 
| @@ -2121,7 +2122,7 @@ static Node* GetParentNodeForComputeParent(Node* node) { | 
| return parent_node; | 
| } | 
|  | 
| -AXObject* AXNodeObject::ComputeParent() const { | 
| +AXObjectImpl* AXNodeObject::ComputeParent() const { | 
| DCHECK(!IsDetached()); | 
| if (Node* parent_node = GetParentNodeForComputeParent(GetNode())) | 
| return AxObjectCache().GetOrCreate(parent_node); | 
| @@ -2129,14 +2130,14 @@ AXObject* AXNodeObject::ComputeParent() const { | 
| return nullptr; | 
| } | 
|  | 
| -AXObject* AXNodeObject::ComputeParentIfExists() const { | 
| +AXObjectImpl* AXNodeObject::ComputeParentIfExists() const { | 
| if (Node* parent_node = GetParentNodeForComputeParent(GetNode())) | 
| return AxObjectCache().Get(parent_node); | 
|  | 
| return nullptr; | 
| } | 
|  | 
| -AXObject* AXNodeObject::RawFirstChild() const { | 
| +AXObjectImpl* AXNodeObject::RawFirstChild() const { | 
| if (!GetNode()) | 
| return 0; | 
|  | 
| @@ -2148,7 +2149,7 @@ AXObject* AXNodeObject::RawFirstChild() const { | 
| return AxObjectCache().GetOrCreate(first_child); | 
| } | 
|  | 
| -AXObject* AXNodeObject::RawNextSibling() const { | 
| +AXObjectImpl* AXNodeObject::RawNextSibling() const { | 
| if (!GetNode()) | 
| return 0; | 
|  | 
| @@ -2176,11 +2177,11 @@ void AXNodeObject::AddChildren() { | 
| if (GetLayoutObject() && !isHTMLCanvasElement(*node_)) | 
| return; | 
|  | 
| -  HeapVector<Member<AXObject>> owned_children; | 
| +  HeapVector<Member<AXObjectImpl>> owned_children; | 
| ComputeAriaOwnsChildren(owned_children); | 
|  | 
| for (Node& child : NodeTraversal::ChildrenOf(*node_)) { | 
| -    AXObject* child_obj = AxObjectCache().GetOrCreate(&child); | 
| +    AXObjectImpl* child_obj = AxObjectCache().GetOrCreate(&child); | 
| if (child_obj && !AxObjectCache().IsAriaOwned(child_obj)) | 
| AddChild(child_obj); | 
| } | 
| @@ -2192,11 +2193,11 @@ void AXNodeObject::AddChildren() { | 
| child->SetParent(this); | 
| } | 
|  | 
| -void AXNodeObject::AddChild(AXObject* child) { | 
| +void AXNodeObject::AddChild(AXObjectImpl* child) { | 
| InsertChild(child, children_.size()); | 
| } | 
|  | 
| -void AXNodeObject::InsertChild(AXObject* child, unsigned index) { | 
| +void AXNodeObject::InsertChild(AXObjectImpl* child, unsigned index) { | 
| if (!child) | 
| return; | 
|  | 
| @@ -2272,7 +2273,7 @@ Element* AXNodeObject::ActionElement() const { | 
| return ToElement(node); | 
| } | 
|  | 
| -  if (AXObject::IsARIAInput(AriaRoleAttribute())) | 
| +  if (AXObjectImpl::IsARIAInput(AriaRoleAttribute())) | 
| return ToElement(node); | 
|  | 
| if (IsImageButton()) | 
| @@ -2331,7 +2332,7 @@ void AXNodeObject::SetNode(Node* node) { | 
| node_ = node; | 
| } | 
|  | 
| -AXObject* AXNodeObject::CorrespondingControlForLabelElement() const { | 
| +AXObjectImpl* AXNodeObject::CorrespondingControlForLabelElement() const { | 
| HTMLLabelElement* label_element = LabelElementContainer(); | 
| if (!label_element) | 
| return 0; | 
| @@ -2430,7 +2431,7 @@ void AXNodeObject::ChildrenChanged() { | 
| // If AX elements are created now, they could interrogate the layout tree | 
| // while it's in a funky state.  At the same time, process ARIA live region | 
| // changes. | 
| -  for (AXObject* parent = this; parent; | 
| +  for (AXObjectImpl* parent = this; parent; | 
| parent = parent->ParentObjectIfExists()) { | 
| parent->SetNeedsToUpdateChildren(); | 
|  | 
| @@ -2462,12 +2463,13 @@ void AXNodeObject::SelectionChanged() { | 
| AxObjectCache().PostNotification(this, | 
| AXObjectCacheImpl::kAXSelectedTextChanged); | 
| if (GetDocument()) { | 
| -      AXObject* document_object = AxObjectCache().GetOrCreate(GetDocument()); | 
| +      AXObjectImpl* document_object = | 
| +          AxObjectCache().GetOrCreate(GetDocument()); | 
| AxObjectCache().PostNotification( | 
| document_object, AXObjectCacheImpl::kAXDocumentSelectionChanged); | 
| } | 
| } else { | 
| -    AXObject::SelectionChanged();  // Calls selectionChanged on parent. | 
| +    AXObjectImpl::SelectionChanged();  // Calls selectionChanged on parent. | 
| } | 
| } | 
|  | 
| @@ -2477,7 +2479,7 @@ void AXNodeObject::TextChanged() { | 
| AXObjectCacheImpl& cache = AxObjectCache(); | 
| for (Node* parent_node = GetNode(); parent_node; | 
| parent_node = parent_node->parentNode()) { | 
| -    AXObject* parent = cache.Get(parent_node); | 
| +    AXObjectImpl* parent = cache.Get(parent_node); | 
| if (!parent) | 
| continue; | 
|  | 
| @@ -2504,7 +2506,7 @@ void AXNodeObject::UpdateAccessibilityRole() { | 
| } | 
|  | 
| void AXNodeObject::ComputeAriaOwnsChildren( | 
| -    HeapVector<Member<AXObject>>& owned_children) const { | 
| +    HeapVector<Member<AXObjectImpl>>& owned_children) const { | 
| if (!HasAttribute(aria_ownsAttr)) | 
| return; | 
|  | 
| @@ -2756,7 +2758,8 @@ String AXNodeObject::NativeTextAlternative( | 
| } | 
| } | 
| if (figcaption) { | 
| -      AXObject* figcaption_ax_object = AxObjectCache().GetOrCreate(figcaption); | 
| +      AXObjectImpl* figcaption_ax_object = | 
| +          AxObjectCache().GetOrCreate(figcaption); | 
| if (figcaption_ax_object) { | 
| text_alternative = | 
| RecursiveTextAlternative(*figcaption_ax_object, false, visited); | 
| @@ -2820,7 +2823,7 @@ String AXNodeObject::NativeTextAlternative( | 
| } | 
| HTMLTableCaptionElement* caption = table_element->caption(); | 
| if (caption) { | 
| -      AXObject* caption_ax_object = AxObjectCache().GetOrCreate(caption); | 
| +      AXObjectImpl* caption_ax_object = AxObjectCache().GetOrCreate(caption); | 
| if (caption_ax_object) { | 
| text_alternative = | 
| RecursiveTextAlternative(*caption_ax_object, false, visited); | 
| @@ -2877,7 +2880,7 @@ String AXNodeObject::NativeTextAlternative( | 
| ToContainerNode(*(GetNode())), HasTagName(SVGNames::titleTag)); | 
|  | 
| if (title) { | 
| -      AXObject* title_ax_object = AxObjectCache().GetOrCreate(title); | 
| +      AXObjectImpl* title_ax_object = AxObjectCache().GetOrCreate(title); | 
| if (title_ax_object && !visited.Contains(title_ax_object)) { | 
| text_alternative = | 
| RecursiveTextAlternative(*title_ax_object, false, visited); | 
| @@ -2909,7 +2912,7 @@ String AXNodeObject::NativeTextAlternative( | 
| } | 
| HTMLElement* legend = toHTMLFieldSetElement(GetNode())->Legend(); | 
| if (legend) { | 
| -      AXObject* legend_ax_object = AxObjectCache().GetOrCreate(legend); | 
| +      AXObjectImpl* legend_ax_object = AxObjectCache().GetOrCreate(legend); | 
| // Avoid an infinite loop | 
| if (legend_ax_object && !visited.Contains(legend_ax_object)) { | 
| text_alternative = | 
| @@ -2971,7 +2974,8 @@ String AXNodeObject::NativeTextAlternative( | 
| text_alternative = document->title(); | 
|  | 
| Element* title_element = document->TitleElement(); | 
| -      AXObject* title_ax_object = AxObjectCache().GetOrCreate(title_element); | 
| +      AXObjectImpl* title_ax_object = | 
| +          AxObjectCache().GetOrCreate(title_element); | 
| if (title_ax_object) { | 
| if (related_objects) { | 
| local_related_objects.push_back( | 
| @@ -3098,7 +3102,7 @@ String AXNodeObject::Description(AXNameFrom name_from, | 
| } | 
| HTMLTableCaptionElement* caption = table_element->caption(); | 
| if (caption) { | 
| -      AXObject* caption_ax_object = AxObjectCache().GetOrCreate(caption); | 
| +      AXObjectImpl* caption_ax_object = AxObjectCache().GetOrCreate(caption); | 
| if (caption_ax_object) { | 
| AXObjectSet visited; | 
| description = | 
| @@ -3229,7 +3233,7 @@ String AXNodeObject::PlaceholderFromNativeAttribute() const { | 
|  | 
| DEFINE_TRACE(AXNodeObject) { | 
| visitor->Trace(node_); | 
| -  AXObject::Trace(visitor); | 
| +  AXObjectImpl::Trace(visitor); | 
| } | 
|  | 
| }  // namespace blink | 
|  |