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; ...@@ -42,7 +42,6 @@ class HTMLCanvasElement;
class HTMLOptionElement; class HTMLOptionElement;
class HTMLSelectElement; class HTMLSelectElement;
class IntPoint; class IntPoint;
class LayoutMenuList;
class LayoutRect; class LayoutRect;
class LineLayoutItem; class LineLayoutItem;
class LocalFrameView; class LocalFrameView;
...@@ -102,10 +101,10 @@ class CORE_EXPORT AXObjectCache : public GarbageCollected<AXObjectCache>, ...@@ -102,10 +101,10 @@ class CORE_EXPORT AXObjectCache : public GarbageCollected<AXObjectCache>,
virtual void HandleTextMarkerDataAdded(Node* start, Node* end) = 0; virtual void HandleTextMarkerDataAdded(Node* start, Node* end) = 0;
virtual void HandleTextFormControlChanged(Node*) = 0; virtual void HandleTextFormControlChanged(Node*) = 0;
virtual void HandleValueChanged(Node*) = 0; virtual void HandleValueChanged(Node*) = 0;
virtual void HandleUpdateActiveMenuOption(LayoutMenuList*, virtual void HandleUpdateActiveMenuOption(LayoutObject*,
int option_index) = 0; int option_index) = 0;
virtual void DidShowMenuListPopup(LayoutMenuList*) = 0; virtual void DidShowMenuListPopup(LayoutObject*) = 0;
virtual void DidHideMenuListPopup(LayoutMenuList*) = 0; virtual void DidHideMenuListPopup(LayoutObject*) = 0;
virtual void HandleLoadComplete(Document*) = 0; virtual void HandleLoadComplete(Document*) = 0;
virtual void HandleLayoutComplete(Document*) = 0; virtual void HandleLayoutComplete(Document*) = 0;
virtual void HandleClicked(Node*) = 0; virtual void HandleClicked(Node*) = 0;
......
...@@ -2017,7 +2017,7 @@ void HTMLSelectElement::PopupDidHide() { ...@@ -2017,7 +2017,7 @@ void HTMLSelectElement::PopupDidHide() {
UnobserveTreeMutation(); UnobserveTreeMutation();
if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache()) { if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache()) {
if (GetLayoutObject() && GetLayoutObject()->IsMenuList()) if (GetLayoutObject() && GetLayoutObject()->IsMenuList())
cache->DidHideMenuListPopup(ToLayoutMenuList(GetLayoutObject())); cache->DidHideMenuListPopup(GetLayoutObject());
} }
} }
...@@ -2090,10 +2090,9 @@ void HTMLSelectElement::ShowPopup() { ...@@ -2090,10 +2090,9 @@ void HTMLSelectElement::ShowPopup() {
popup_is_visible_ = true; popup_is_visible_ = true;
ObserveTreeMutation(); ObserveTreeMutation();
LayoutMenuList* menu_list = ToLayoutMenuList(GetLayoutObject());
popup_->Show(); popup_->Show();
if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache()) if (AXObjectCache* cache = GetDocument().ExistingAXObjectCache())
cache->DidShowMenuListPopup(menu_list); cache->DidShowMenuListPopup(GetLayoutObject());
} }
void HTMLSelectElement::HidePopup() { void HTMLSelectElement::HidePopup() {
......
...@@ -26,15 +26,17 @@ ...@@ -26,15 +26,17 @@
#include "third_party/blink/renderer/modules/accessibility/ax_menu_list.h" #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/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_menu_list_popup.h"
#include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h" #include "third_party/blink/renderer/modules/accessibility/ax_object_cache_impl.h"
namespace blink { namespace blink {
AXMenuList::AXMenuList(LayoutMenuList* layout_object, AXMenuList::AXMenuList(LayoutObject* layout_object,
AXObjectCacheImpl& ax_object_cache) 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() { ax::mojom::Role AXMenuList::DetermineAccessibilityRole() {
if ((aria_role_ = DetermineAriaRoleAttribute()) != ax::mojom::Role::kUnknown) if ((aria_role_ = DetermineAriaRoleAttribute()) != ax::mojom::Role::kUnknown)
...@@ -47,7 +49,7 @@ bool AXMenuList::OnNativeClickAction() { ...@@ -47,7 +49,7 @@ bool AXMenuList::OnNativeClickAction() {
if (!layout_object_) if (!layout_object_)
return false; return false;
HTMLSelectElement* select = ToLayoutMenuList(layout_object_)->SelectElement(); HTMLSelectElement* select = To<HTMLSelectElement>(GetNode());
if (select->PopupIsVisible()) if (select->PopupIsVisible())
select->HidePopup(); select->HidePopup();
else else
...@@ -94,7 +96,7 @@ bool AXMenuList::IsCollapsed() const { ...@@ -94,7 +96,7 @@ bool AXMenuList::IsCollapsed() const {
if (!layout_object_) if (!layout_object_)
return true; return true;
return !ToLayoutMenuList(layout_object_)->SelectElement()->PopupIsVisible(); return !To<HTMLSelectElement>(GetNode())->PopupIsVisible();
} }
AccessibilityExpanded AXMenuList::IsExpanded() const { AccessibilityExpanded AXMenuList::IsExpanded() const {
......
...@@ -32,11 +32,10 @@ ...@@ -32,11 +32,10 @@
namespace blink { namespace blink {
class AXObjectCacheImpl; class AXObjectCacheImpl;
class LayoutMenuList;
class AXMenuList final : public AXLayoutObject { class AXMenuList final : public AXLayoutObject {
public: public:
AXMenuList(LayoutMenuList*, AXObjectCacheImpl&); AXMenuList(LayoutObject*, AXObjectCacheImpl&);
AccessibilityExpanded IsExpanded() const final; AccessibilityExpanded IsExpanded() const final;
bool OnNativeClickAction() override; bool OnNativeClickAction() override;
......
...@@ -57,8 +57,6 @@ ...@@ -57,8 +57,6 @@
#include "third_party/blink/renderer/core/html_names.h" #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/input_type_names.h"
#include "third_party/blink/renderer/core/layout/api/line_layout_api_shim.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_progress.h"
#include "third_party/blink/renderer/core/layout/layout_slider.h" #include "third_party/blink/renderer/core/layout/layout_slider.h"
#include "third_party/blink/renderer/core/layout/layout_table.h" #include "third_party/blink/renderer/core/layout/layout_table.h"
...@@ -424,10 +422,11 @@ AXObject* AXObjectCacheImpl::CreateFromRenderer(LayoutObject* layout_object) { ...@@ -424,10 +422,11 @@ AXObject* AXObjectCacheImpl::CreateFromRenderer(LayoutObject* layout_object) {
if (layout_object->IsBoxModelObject()) { if (layout_object->IsBoxModelObject()) {
LayoutBoxModelObject* css_box = ToLayoutBoxModelObject(layout_object); LayoutBoxModelObject* css_box = ToLayoutBoxModelObject(layout_object);
if (css_box->IsListBox()) if (auto* select_element = DynamicTo<HTMLSelectElement>(node)) {
return MakeGarbageCollected<AXListBox>(ToLayoutListBox(css_box), *this); if (select_element->UsesMenuList())
if (css_box->IsMenuList()) return MakeGarbageCollected<AXMenuList>(css_box, *this);
return MakeGarbageCollected<AXMenuList>(ToLayoutMenuList(css_box), *this); return MakeGarbageCollected<AXListBox>(css_box, *this);
}
// progress bar // progress bar
if (css_box->IsProgress()) { if (css_box->IsProgress()) {
...@@ -1712,7 +1711,7 @@ void AXObjectCacheImpl::HandleValueChanged(Node* node) { ...@@ -1712,7 +1711,7 @@ void AXObjectCacheImpl::HandleValueChanged(Node* node) {
PostNotification(node, ax::mojom::Event::kValueChanged); PostNotification(node, ax::mojom::Event::kValueChanged);
} }
void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutMenuList* menu_list, void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutObject* menu_list,
int option_index) { int option_index) {
AXObject* obj = Get(menu_list); AXObject* obj = Get(menu_list);
if (!obj || !obj->IsMenuList()) if (!obj || !obj->IsMenuList())
...@@ -1721,7 +1720,7 @@ void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutMenuList* menu_list, ...@@ -1721,7 +1720,7 @@ void AXObjectCacheImpl::HandleUpdateActiveMenuOption(LayoutMenuList* menu_list,
ToAXMenuList(obj)->DidUpdateActiveOption(option_index); ToAXMenuList(obj)->DidUpdateActiveOption(option_index);
} }
void AXObjectCacheImpl::DidShowMenuListPopup(LayoutMenuList* menu_list) { void AXObjectCacheImpl::DidShowMenuListPopup(LayoutObject* menu_list) {
AXObject* obj = Get(menu_list); AXObject* obj = Get(menu_list);
if (!obj || !obj->IsMenuList()) if (!obj || !obj->IsMenuList())
return; return;
...@@ -1729,7 +1728,7 @@ void AXObjectCacheImpl::DidShowMenuListPopup(LayoutMenuList* menu_list) { ...@@ -1729,7 +1728,7 @@ void AXObjectCacheImpl::DidShowMenuListPopup(LayoutMenuList* menu_list) {
ToAXMenuList(obj)->DidShowPopup(); ToAXMenuList(obj)->DidShowPopup();
} }
void AXObjectCacheImpl::DidHideMenuListPopup(LayoutMenuList* menu_list) { void AXObjectCacheImpl::DidHideMenuListPopup(LayoutObject* menu_list) {
AXObject* obj = Get(menu_list); AXObject* obj = Get(menu_list);
if (!obj || !obj->IsMenuList()) if (!obj || !obj->IsMenuList())
return; return;
......
...@@ -130,9 +130,9 @@ class MODULES_EXPORT AXObjectCacheImpl ...@@ -130,9 +130,9 @@ class MODULES_EXPORT AXObjectCacheImpl
void HandleScaleAndLocationChanged(Document*) override; void HandleScaleAndLocationChanged(Document*) override;
void HandleTextMarkerDataAdded(Node* start, Node* end) override; void HandleTextMarkerDataAdded(Node* start, Node* end) override;
void HandleValueChanged(Node*) override; void HandleValueChanged(Node*) override;
void HandleUpdateActiveMenuOption(LayoutMenuList*, int option_index) override; void HandleUpdateActiveMenuOption(LayoutObject*, int option_index) override;
void DidShowMenuListPopup(LayoutMenuList*) override; void DidShowMenuListPopup(LayoutObject*) override;
void DidHideMenuListPopup(LayoutMenuList*) override; void DidHideMenuListPopup(LayoutObject*) override;
void HandleLoadComplete(Document*) override; void HandleLoadComplete(Document*) override;
void HandleLayoutComplete(Document*) override; void HandleLayoutComplete(Document*) override;
void HandleClicked(Node*) 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