Commit 35d8c1ae authored by Kent Tamura's avatar Kent Tamura Committed by Commit Bot

Reduce LayoutMenuList usage in accessibility code

LayoutMenuList is going to be removed after enabling LayoutNG
for form controls. This CL is a preparation for the removal.

Bug: 1040828
Change-Id: Ia399a7fed5ac9b35e1f04fdb870a4ea139fbd66d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2000253Reviewed-by: default avatarAlice Boxhall <aboxhall@chromium.org>
Commit-Queue: Kent Tamura <tkent@chromium.org>
Cr-Commit-Position: refs/heads/master@{#734369}
parent f5bc2c50
......@@ -42,7 +42,6 @@ class HTMLCanvasElement;
class HTMLOptionElement;
class HTMLSelectElement;
class IntPoint;
class LayoutMenuList;
class LayoutRect;
class LineLayoutItem;
class LocalFrameView;
......@@ -102,10 +101,10 @@ class CORE_EXPORT AXObjectCache : public GarbageCollected<AXObjectCache>,
virtual void HandleTextMarkerDataAdded(Node* start, Node* end) = 0;
virtual void HandleTextFormControlChanged(Node*) = 0;
virtual void HandleValueChanged(Node*) = 0;
virtual void HandleUpdateActiveMenuOption(LayoutMenuList*,
virtual void HandleUpdateActiveMenuOption(LayoutObject*,
int option_index) = 0;
virtual void DidShowMenuListPopup(LayoutMenuList*) = 0;
virtual void DidHideMenuListPopup(LayoutMenuList*) = 0;
virtual void DidShowMenuListPopup(LayoutObject*) = 0;
virtual void DidHideMenuListPopup(LayoutObject*) = 0;
virtual void HandleLoadComplete(Document*) = 0;
virtual void HandleLayoutComplete(Document*) = 0;
virtual void HandleClicked(Node*) = 0;
......
......@@ -2017,7 +2017,7 @@ void HTMLSelectElement::PopupDidHide() {
UnobserveTreeMutation();
if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache()) {
if (GetLayoutObject() && GetLayoutObject()->IsMenuList())
cache->DidHideMenuListPopup(ToLayoutMenuList(GetLayoutObject()));
cache->DidHideMenuListPopup(GetLayoutObject());
}
}
......@@ -2090,10 +2090,9 @@ void HTMLSelectElement::ShowPopup() {
popup_is_visible_ = true;
ObserveTreeMutation();
LayoutMenuList* menu_list = ToLayoutMenuList(GetLayoutObject());
popup_->Show();
if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache())
cache->DidShowMenuListPopup(menu_list);
cache->DidShowMenuListPopup(GetLayoutObject());
}
void HTMLSelectElement::HidePopup() {
......
......@@ -26,15 +26,17 @@
#include "third_party/blink/renderer/modules/accessibility/ax_menu_list.h"
#include "third_party/blink/renderer/core/html/forms/html_select_element.h"
#include "third_party/blink/renderer/core/layout/layout_menu_list.h"
#include "third_party/blink/renderer/core/layout/layout_object.h"
#include "third_party/blink/renderer/modules/accessibility/ax_menu_list_popup.h"
#include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h"
namespace blink {
AXMenuList::AXMenuList(LayoutMenuList* layout_object,
AXMenuList::AXMenuList(LayoutObject* layout_object,
AXObjectCacheImpl& ax_object_cache)
: AXLayoutObject(layout_object, ax_object_cache) {}
: AXLayoutObject(layout_object, ax_object_cache) {
DCHECK(IsA<HTMLSelectElement>(layout_object->GetNode()));
}
ax::mojom::Role AXMenuList::DetermineAccessibilityRole() {
if ((aria_role_ = DetermineAriaRoleAttribute()) != ax::mojom::Role::kUnknown)
......@@ -47,7 +49,7 @@ bool AXMenuList::OnNativeClickAction() {
if (!layout_object_)
return false;
HTMLSelectElement* select = ToLayoutMenuList(layout_object_)->SelectElement();
HTMLSelectElement* select = To<HTMLSelectElement>(GetNode());
if (select->PopupIsVisible())
select->HidePopup();
else
......@@ -94,7 +96,7 @@ bool AXMenuList::IsCollapsed() const {
if (!layout_object_)
return true;
return !ToLayoutMenuList(layout_object_)->SelectElement()->PopupIsVisible();
return !To<HTMLSelectElement>(GetNode())->PopupIsVisible();
}
AccessibilityExpanded AXMenuList::IsExpanded() const {
......
......@@ -32,11 +32,10 @@
namespace blink {
class AXObjectCacheImpl;
class LayoutMenuList;
class AXMenuList final : public AXLayoutObject {
public:
AXMenuList(LayoutMenuList*, AXObjectCacheImpl&);
AXMenuList(LayoutObject*, AXObjectCacheImpl&);
AccessibilityExpanded IsExpanded() const final;
bool OnNativeClickAction() override;
......
......@@ -57,8 +57,6 @@
#include "third_party/blink/renderer/core/html_names.h"
#include "third_party/blink/renderer/core/input_type_names.h"
#include "third_party/blink/renderer/core/layout/api/line_layout_api_shim.h"
#include "third_party/blink/renderer/core/layout/layout_list_box.h"
#include "third_party/blink/renderer/core/layout/layout_menu_list.h"
#include "third_party/blink/renderer/core/layout/layout_progress.h"
#include "third_party/blink/renderer/core/layout/layout_slider.h"
#include "third_party/blink/renderer/core/layout/layout_table.h"
......@@ -424,10 +422,11 @@ AXObject* AXObjectCacheImpl::CreateFromRenderer(LayoutObject* layout_object) {
if (layout_object->IsBoxModelObject()) {
LayoutBoxModelObject* css_box = ToLayoutBoxModelObject(layout_object);
if (css_box->IsListBox())
return MakeGarbageCollected<AXListBox>(ToLayoutListBox(css_box), *this);
if (css_box->IsMenuList())
return MakeGarbageCollected<AXMenuList>(ToLayoutMenuList(css_box), *this);
if (auto* select_element = DynamicTo<HTMLSelectElement>(node)) {
if (select_element->UsesMenuList())
return MakeGarbageCollected<AXMenuList>(css_box, *this);
return MakeGarbageCollected<AXListBox>(css_box, *this);
}
// progress bar
if (css_box->IsProgress()) {
......@@ -1712,7 +1711,7 @@ void AXObjectCacheImpl::HandleValueChanged(Node* node) {
PostNotification(node, ax::mojom::Event::kValueChanged);
}
void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutMenuList* menu_list,
void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutObject* menu_list,
int option_index) {
AXObject* obj = Get(menu_list);
if (!obj || !obj->IsMenuList())
......@@ -1721,7 +1720,7 @@ void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutMenuList* menu_list,
ToAXMenuList(obj)->DidUpdateActiveOption(option_index);
}
void AXObjectCacheImpl::DidShowMenuListPopup(LayoutMenuList* menu_list) {
void AXObjectCacheImpl::DidShowMenuListPopup(LayoutObject* menu_list) {
AXObject* obj = Get(menu_list);
if (!obj || !obj->IsMenuList())
return;
......@@ -1729,7 +1728,7 @@ void AXObjectCacheImpl::DidShowMenuListPopup(LayoutMenuList* menu_list) {
ToAXMenuList(obj)->DidShowPopup();
}
void AXObjectCacheImpl::DidHideMenuListPopup(LayoutMenuList* menu_list) {
void AXObjectCacheImpl::DidHideMenuListPopup(LayoutObject* menu_list) {
AXObject* obj = Get(menu_list);
if (!obj || !obj->IsMenuList())
return;
......
......@@ -130,9 +130,9 @@ class MODULES_EXPORT AXObjectCacheImpl
void HandleScaleAndLocationChanged(Document*) override;
void HandleTextMarkerDataAdded(Node* start, Node* end) override;
void HandleValueChanged(Node*) override;
void HandleUpdateActiveMenuOption(LayoutMenuList*, int option_index) override;
void DidShowMenuListPopup(LayoutMenuList*) override;
void DidHideMenuListPopup(LayoutMenuList*) override;
void HandleUpdateActiveMenuOption(LayoutObject*, int option_index) override;
void DidShowMenuListPopup(LayoutObject*) override;
void DidHideMenuListPopup(LayoutObject*) override;
void HandleLoadComplete(Document*) override;
void HandleLayoutComplete(Document*) override;
void HandleClicked(Node*) override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment