From c3aa79a0bc0d2923136e3bfdb3c24bc26c83b2f4 Mon Sep 17 00:00:00 2001 From: tvtreeck Date: Thu, 27 Mar 2025 13:13:29 +0100 Subject: [PATCH 1/9] added aria role presentation for layout tables --- user/src/com/google/gwt/user/client/ui/CellPanel.java | 2 ++ user/src/com/google/gwt/user/client/ui/DecoratorPanel.java | 3 +++ .../src/com/google/gwt/user/client/ui/DisclosurePanel.java | 3 +++ user/src/com/google/gwt/user/client/ui/HTMLTable.java | 2 ++ user/src/com/google/gwt/user/client/ui/MenuBar.java | 3 +++ user/src/com/google/gwt/user/client/ui/StackPanel.java | 2 ++ user/src/com/google/gwt/user/client/ui/TreeItem.java | 2 ++ .../com/google/gwt/user/client/ui/DecoratorPanelTest.java | 6 ++++++ .../com/google/gwt/user/client/ui/DisclosurePanelTest.java | 6 ++++++ user/test/com/google/gwt/user/client/ui/DockPanelTest.java | 7 ++++++- user/test/com/google/gwt/user/client/ui/FlexTableTest.java | 6 ++++++ user/test/com/google/gwt/user/client/ui/GridTest.java | 6 ++++++ .../com/google/gwt/user/client/ui/HorizontalPanelTest.java | 6 ++++++ user/test/com/google/gwt/user/client/ui/MenuBarTest.java | 7 ++++++- .../test/com/google/gwt/user/client/ui/StackPanelTest.java | 6 ++++++ user/test/com/google/gwt/user/client/ui/TreeItemTest.java | 6 ++++++ .../com/google/gwt/user/client/ui/VerticalPanelTest.java | 6 ++++++ 17 files changed, 77 insertions(+), 2 deletions(-) diff --git a/user/src/com/google/gwt/user/client/ui/CellPanel.java b/user/src/com/google/gwt/user/client/ui/CellPanel.java index 7ed5758f487..2430ba5b529 100644 --- a/user/src/com/google/gwt/user/client/ui/CellPanel.java +++ b/user/src/com/google/gwt/user/client/ui/CellPanel.java @@ -72,6 +72,8 @@ public abstract class CellPanel extends ComplexPanel { public CellPanel() { table = DOM.createTable(); + //aria role to indicate it is a plain layout table + table.setAttribute("role", "presentation"); body = DOM.createTBody(); DOM.appendChild(table, body); setElement(table); diff --git a/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java b/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java index bc3df4e0376..8b01ebbbe3b 100644 --- a/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java +++ b/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java @@ -164,6 +164,9 @@ public DecoratorPanel() { // Add a tbody Element table = getElement(); + //aria role to indicate it is a plain layout table + table.setAttribute("role", "presentation"); + tbody = DOM.createTBody(); DOM.appendChild(table, tbody); table.setPropertyInt("cellSpacing", 0); diff --git a/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java b/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java index e1dc0cae822..816b5f8ac13 100644 --- a/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java +++ b/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java @@ -230,6 +230,9 @@ private DefaultHeader(Imager imager, String text) { // I do not need any Widgets here, just a DOM structure. Element root = DOM.createTable(); + //aria role to indicate it is a plain layout table + root.setAttribute("role", "presentation"); + Element tbody = DOM.createTBody(); Element tr = DOM.createTR(); final Element imageTD = DOM.createTD(); diff --git a/user/src/com/google/gwt/user/client/ui/HTMLTable.java b/user/src/com/google/gwt/user/client/ui/HTMLTable.java index 924d4721708..925225bb48c 100644 --- a/user/src/com/google/gwt/user/client/ui/HTMLTable.java +++ b/user/src/com/google/gwt/user/client/ui/HTMLTable.java @@ -788,6 +788,8 @@ protected void setAttr(int row, String attrName, String value) { */ public HTMLTable() { tableElem = DOM.createTable(); + //aria role to indicate it is a plain layout table + tableElem.setAttribute("role", "presentation"); bodyElem = DOM.createTBody(); DOM.appendChild(tableElem, bodyElem); setElement(tableElem); diff --git a/user/src/com/google/gwt/user/client/ui/MenuBar.java b/user/src/com/google/gwt/user/client/ui/MenuBar.java index 7d827e89ecd..8f401fd7d48 100644 --- a/user/src/com/google/gwt/user/client/ui/MenuBar.java +++ b/user/src/com/google/gwt/user/client/ui/MenuBar.java @@ -1180,6 +1180,9 @@ private void init(boolean vertical, AbstractImagePrototype subMenuIcon) { this.subMenuIcon = subMenuIcon; Element table = DOM.createTable(); + //aria role to indicate it is a plain layout table + table.setAttribute("role", "presentation"); + body = DOM.createTBody(); DOM.appendChild(table, body); diff --git a/user/src/com/google/gwt/user/client/ui/StackPanel.java b/user/src/com/google/gwt/user/client/ui/StackPanel.java index 8015dd74588..6321bbff2af 100644 --- a/user/src/com/google/gwt/user/client/ui/StackPanel.java +++ b/user/src/com/google/gwt/user/client/ui/StackPanel.java @@ -63,6 +63,8 @@ public class StackPanel extends ComplexPanel implements InsertPanel.ForIsWidget */ public StackPanel() { Element table = DOM.createTable(); + //aria role to indicate it is a plain layout table + table.setAttribute("role", "presentation"); setElement(table); body = DOM.createTBody(); diff --git a/user/src/com/google/gwt/user/client/ui/TreeItem.java b/user/src/com/google/gwt/user/client/ui/TreeItem.java index bb1513ea8b5..0fca82c45e0 100644 --- a/user/src/com/google/gwt/user/client/ui/TreeItem.java +++ b/user/src/com/google/gwt/user/client/ui/TreeItem.java @@ -88,6 +88,8 @@ void initializeClonableElements() { if (GWT.isClient()) { // Create the base table element that will be cloned. BASE_INTERNAL_ELEM = DOM.createTable(); + //aria role to indicate it is a plain layout table + BASE_INTERNAL_ELEM.setAttribute("role", "presentation"); Element contentElem = DOM.createDiv(); Element tbody = DOM.createTBody(), tr = DOM.createTR(); Element tdImg = DOM.createTD(), tdContent = DOM.createTD(); diff --git a/user/test/com/google/gwt/user/client/ui/DecoratorPanelTest.java b/user/test/com/google/gwt/user/client/ui/DecoratorPanelTest.java index 4097d935f1a..0a4556a0d74 100644 --- a/user/test/com/google/gwt/user/client/ui/DecoratorPanelTest.java +++ b/user/test/com/google/gwt/user/client/ui/DecoratorPanelTest.java @@ -91,6 +91,12 @@ public void testDefaultStyles() { // Check the container element assertTrue(panel.getCellElement(1, 1) == panel.getContainerElement()); } + + public void testPresentationRole() { + DecoratorPanel panel = createPanel(); + assertNotNull(panel.getElement()); + assertEquals("presentation", panel.getElement().getAttribute("role")); + } @Override protected DecoratorPanel createPanel() { diff --git a/user/test/com/google/gwt/user/client/ui/DisclosurePanelTest.java b/user/test/com/google/gwt/user/client/ui/DisclosurePanelTest.java index 320a9b0f1cb..dd210b44557 100644 --- a/user/test/com/google/gwt/user/client/ui/DisclosurePanelTest.java +++ b/user/test/com/google/gwt/user/client/ui/DisclosurePanelTest.java @@ -232,6 +232,12 @@ public void testRemoveNullAsIsWidget() { panel.remove(widget); // ta da... } + + public void testPresentationRole() { + DisclosurePanel panel = createEmptyDisclourePanel(); + assertNotNull(panel.getElement()); + assertEquals("presentation", panel.getElement().getAttribute("role")); + } private DisclosurePanel createEmptyDisclourePanel() { return new DisclosurePanel(); diff --git a/user/test/com/google/gwt/user/client/ui/DockPanelTest.java b/user/test/com/google/gwt/user/client/ui/DockPanelTest.java index 5a0b0f020bb..291bac2df5e 100644 --- a/user/test/com/google/gwt/user/client/ui/DockPanelTest.java +++ b/user/test/com/google/gwt/user/client/ui/DockPanelTest.java @@ -22,7 +22,6 @@ /** * Tests the DockPanel widget. */ -@SuppressWarnings("deprecation") public class DockPanelTest extends GWTTestCase { static class Adder implements HasWidgetsTester.WidgetAdder { @@ -125,6 +124,12 @@ public void testAddAsIsWidget() { assertPhysicalPaternity(panel,widget); } + public void testPresentationRole() { + DockPanel panel = createDockPanel(); + assertNotNull(panel.getElement()); + assertEquals("presentation", panel.getElement().getAttribute("role")); + } + public void testAttachDetachOrder() { HasWidgetsTester.testAll(new DockPanel(), new Adder(), true); } diff --git a/user/test/com/google/gwt/user/client/ui/FlexTableTest.java b/user/test/com/google/gwt/user/client/ui/FlexTableTest.java index c362df9594b..661e01e9590 100644 --- a/user/test/com/google/gwt/user/client/ui/FlexTableTest.java +++ b/user/test/com/google/gwt/user/client/ui/FlexTableTest.java @@ -150,5 +150,11 @@ public void secondarySetHeightTest() { cellFormatter.setHeight(3, 1, "300px"); cellFormatter.setColSpan(3, 1, 2); } + + public void testPresentationRole() { + FlexTable t = new FlexTable(); + assertNotNull(t.getElement()); + assertEquals("presentation", t.getElement().getAttribute("role")); + } } diff --git a/user/test/com/google/gwt/user/client/ui/GridTest.java b/user/test/com/google/gwt/user/client/ui/GridTest.java index 3bdda3eada4..742af35ded0 100644 --- a/user/test/com/google/gwt/user/client/ui/GridTest.java +++ b/user/test/com/google/gwt/user/client/ui/GridTest.java @@ -181,4 +181,10 @@ public void testResizeColumnGroup() { assertEquals(1, grid.getColumnCount()); assertEquals(1, colGroup.getChildCount()); } + + public void testPresentationRole() { + Grid grid = new Grid(2, 2); + assertNotNull(grid.getElement()); + assertEquals("presentation", grid.getElement().getAttribute("role")); + } } diff --git a/user/test/com/google/gwt/user/client/ui/HorizontalPanelTest.java b/user/test/com/google/gwt/user/client/ui/HorizontalPanelTest.java index 47bcf798966..ce58ac0f7e8 100644 --- a/user/test/com/google/gwt/user/client/ui/HorizontalPanelTest.java +++ b/user/test/com/google/gwt/user/client/ui/HorizontalPanelTest.java @@ -78,6 +78,12 @@ public void testInsertMultipleTimes() { assertEquals(0, p.getWidgetIndex(tb)); assertEquals(1, p.getWidgetIndex(l)); } + + public void testPresentationRole() { + CellPanel panel = createCellPanel(); + assertNotNull(panel.getElement()); + assertEquals("presentation", panel.getElement().getAttribute("role")); + } @Override protected CellPanel createCellPanel() { diff --git a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java index 862b6c98831..a7ba4923cff 100644 --- a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java +++ b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java @@ -550,7 +550,6 @@ public void testClearSelectionAfterCommand() { MenuItem item1 = bar.addItem("item1", BLANK_COMMAND); RootPanel.get().add(bar); - bar.itemOver(item1, true); assertNotNull(bar.getSelectedItem()); @@ -605,4 +604,10 @@ public void testTabKey() { assertNull(l0.getSelectedItem()); assertNull(l1.getPopup()); } + + public void testPresentationRole() { + MenuBar menu = new MenuBar(); + assertNotNull(menu.getElement()); + assertEquals("presentation", menu.getElement().getAttribute("role")); + } } diff --git a/user/test/com/google/gwt/user/client/ui/StackPanelTest.java b/user/test/com/google/gwt/user/client/ui/StackPanelTest.java index 5d813913059..05bd7debfff 100644 --- a/user/test/com/google/gwt/user/client/ui/StackPanelTest.java +++ b/user/test/com/google/gwt/user/client/ui/StackPanelTest.java @@ -208,6 +208,12 @@ private static void assertDoesNotContainStyleName(Element element, String styleN assertFalse("Style name '" + styleName + "' was found in '" + element.getClassName() + "'", element.hasClassName(styleName)); } + + public void testPresentationRole() { + StackPanel stackpanel = createStackPanel(); + assertNotNull(stackpanel.getElement()); + assertEquals("presentation", stackpanel.getElement().getAttribute("role")); + } /** * Create a new stack panel. diff --git a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java index 69163510b1a..ae25f3edbca 100644 --- a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java +++ b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java @@ -261,4 +261,10 @@ public void testSetWidgetNullWithError() { // Detach the panel. RootPanel.get().remove(tree); } + + public void testPresentationRole() { + TreeItem item = new TreeItem(); + assertNotNull(item.getElement()); + assertEquals("presentation", item.getElement().getAttribute("role")); + } } diff --git a/user/test/com/google/gwt/user/client/ui/VerticalPanelTest.java b/user/test/com/google/gwt/user/client/ui/VerticalPanelTest.java index 4fb7019b9ad..fe0c49f6b88 100644 --- a/user/test/com/google/gwt/user/client/ui/VerticalPanelTest.java +++ b/user/test/com/google/gwt/user/client/ui/VerticalPanelTest.java @@ -78,6 +78,12 @@ public void testInsertMultipleTimes() { assertEquals(0, p.getWidgetIndex(tb)); assertEquals(1, p.getWidgetIndex(l)); } + + public void testPresentationRole() { + CellPanel panel = createCellPanel(); + assertNotNull(panel.getElement()); + assertEquals("presentation", panel.getElement().getAttribute("role")); + } @Override protected CellPanel createCellPanel() { From d2ead6c87ebb9d37f6b0271e98777f23ae262c46 Mon Sep 17 00:00:00 2001 From: Lonzak Date: Thu, 27 Mar 2025 15:15:53 +0100 Subject: [PATCH 2/9] Update user/src/com/google/gwt/user/client/ui/CellPanel.java Co-authored-by: Colin Alworth --- user/src/com/google/gwt/user/client/ui/CellPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user/src/com/google/gwt/user/client/ui/CellPanel.java b/user/src/com/google/gwt/user/client/ui/CellPanel.java index 2430ba5b529..635ef2f0abe 100644 --- a/user/src/com/google/gwt/user/client/ui/CellPanel.java +++ b/user/src/com/google/gwt/user/client/ui/CellPanel.java @@ -72,7 +72,7 @@ public abstract class CellPanel extends ComplexPanel { public CellPanel() { table = DOM.createTable(); - //aria role to indicate it is a plain layout table + // aria role to indicate it is a plain layout table table.setAttribute("role", "presentation"); body = DOM.createTBody(); DOM.appendChild(table, body); From 27d9439117d75044093a494d123245cdf494faff Mon Sep 17 00:00:00 2001 From: tvtreeck Date: Thu, 27 Mar 2025 17:17:54 +0100 Subject: [PATCH 3/9] improvements suggested by niloc132 --- user/src/com/google/gwt/user/client/ui/CellPanel.java | 3 ++- .../com/google/gwt/user/client/ui/DecoratedStackPanel.java | 3 +++ user/src/com/google/gwt/user/client/ui/DecoratorPanel.java | 5 +++-- user/src/com/google/gwt/user/client/ui/DisclosurePanel.java | 5 +++-- user/src/com/google/gwt/user/client/ui/HTMLTable.java | 5 +++-- user/src/com/google/gwt/user/client/ui/MenuBar.java | 4 ++-- user/src/com/google/gwt/user/client/ui/StackPanel.java | 5 +++-- user/src/com/google/gwt/user/client/ui/TreeItem.java | 4 ++-- 8 files changed, 21 insertions(+), 13 deletions(-) diff --git a/user/src/com/google/gwt/user/client/ui/CellPanel.java b/user/src/com/google/gwt/user/client/ui/CellPanel.java index 635ef2f0abe..0188143974e 100644 --- a/user/src/com/google/gwt/user/client/ui/CellPanel.java +++ b/user/src/com/google/gwt/user/client/ui/CellPanel.java @@ -15,6 +15,7 @@ */ package com.google.gwt.user.client.ui; +import com.google.gwt.aria.client.Roles; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.HasHorizontalAlignment.HorizontalAlignmentConstant; @@ -73,7 +74,7 @@ public abstract class CellPanel extends ComplexPanel { public CellPanel() { table = DOM.createTable(); // aria role to indicate it is a plain layout table - table.setAttribute("role", "presentation"); + Roles.getPresentationRole().set(table); body = DOM.createTBody(); DOM.appendChild(table, body); setElement(table); diff --git a/user/src/com/google/gwt/user/client/ui/DecoratedStackPanel.java b/user/src/com/google/gwt/user/client/ui/DecoratedStackPanel.java index 608d0c5c9f9..50584aee733 100644 --- a/user/src/com/google/gwt/user/client/ui/DecoratedStackPanel.java +++ b/user/src/com/google/gwt/user/client/ui/DecoratedStackPanel.java @@ -15,6 +15,7 @@ */ package com.google.gwt.user.client.ui; +import com.google.gwt.aria.client.Roles; import com.google.gwt.dom.client.Element; import com.google.gwt.user.client.DOM; @@ -81,6 +82,8 @@ public DecoratedStackPanel() { Element createHeaderElem() { // Create the table Element table = DOM.createTable(); + // aria role to indicate it is a plain layout table + Roles.getPresentationRole().set(table); Element tbody = DOM.createTBody(); DOM.appendChild(table, tbody); table.getStyle().setProperty("width", "100%"); diff --git a/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java b/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java index 8b01ebbbe3b..fdd6dfc6bc0 100644 --- a/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java +++ b/user/src/com/google/gwt/user/client/ui/DecoratorPanel.java @@ -15,6 +15,7 @@ */ package com.google.gwt.user.client.ui; +import com.google.gwt.aria.client.Roles; import com.google.gwt.dom.client.Element; import com.google.gwt.i18n.client.LocaleInfo; import com.google.gwt.user.client.DOM; @@ -164,8 +165,8 @@ public DecoratorPanel() { // Add a tbody Element table = getElement(); - //aria role to indicate it is a plain layout table - table.setAttribute("role", "presentation"); + // aria role to indicate it is a plain layout table + Roles.getPresentationRole().set(table); tbody = DOM.createTBody(); DOM.appendChild(table, tbody); diff --git a/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java b/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java index 816b5f8ac13..61ab3c60ee0 100644 --- a/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java +++ b/user/src/com/google/gwt/user/client/ui/DisclosurePanel.java @@ -16,6 +16,7 @@ package com.google.gwt.user.client.ui; import com.google.gwt.animation.client.Animation; +import com.google.gwt.aria.client.Roles; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.event.logical.shared.CloseEvent; @@ -230,8 +231,8 @@ private DefaultHeader(Imager imager, String text) { // I do not need any Widgets here, just a DOM structure. Element root = DOM.createTable(); - //aria role to indicate it is a plain layout table - root.setAttribute("role", "presentation"); + // aria role to indicate it is a plain layout table + Roles.getPresentationRole().set(root); Element tbody = DOM.createTBody(); Element tr = DOM.createTR(); diff --git a/user/src/com/google/gwt/user/client/ui/HTMLTable.java b/user/src/com/google/gwt/user/client/ui/HTMLTable.java index 925225bb48c..c16ad9e4da5 100644 --- a/user/src/com/google/gwt/user/client/ui/HTMLTable.java +++ b/user/src/com/google/gwt/user/client/ui/HTMLTable.java @@ -15,6 +15,7 @@ */ package com.google.gwt.user.client.ui; +import com.google.gwt.aria.client.Roles; import com.google.gwt.core.client.JsArray; import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.Document; @@ -788,8 +789,8 @@ protected void setAttr(int row, String attrName, String value) { */ public HTMLTable() { tableElem = DOM.createTable(); - //aria role to indicate it is a plain layout table - tableElem.setAttribute("role", "presentation"); + // aria role to indicate it is a plain layout table + Roles.getPresentationRole().set(tableElem); bodyElem = DOM.createTBody(); DOM.appendChild(tableElem, bodyElem); setElement(tableElem); diff --git a/user/src/com/google/gwt/user/client/ui/MenuBar.java b/user/src/com/google/gwt/user/client/ui/MenuBar.java index 8f401fd7d48..c25bbf23886 100644 --- a/user/src/com/google/gwt/user/client/ui/MenuBar.java +++ b/user/src/com/google/gwt/user/client/ui/MenuBar.java @@ -1180,8 +1180,8 @@ private void init(boolean vertical, AbstractImagePrototype subMenuIcon) { this.subMenuIcon = subMenuIcon; Element table = DOM.createTable(); - //aria role to indicate it is a plain layout table - table.setAttribute("role", "presentation"); + // aria role to indicate it is a plain layout table + Roles.getPresentationRole().set(table); body = DOM.createTBody(); DOM.appendChild(table, body); diff --git a/user/src/com/google/gwt/user/client/ui/StackPanel.java b/user/src/com/google/gwt/user/client/ui/StackPanel.java index 6321bbff2af..29a032c1b33 100644 --- a/user/src/com/google/gwt/user/client/ui/StackPanel.java +++ b/user/src/com/google/gwt/user/client/ui/StackPanel.java @@ -15,6 +15,7 @@ */ package com.google.gwt.user.client.ui; +import com.google.gwt.aria.client.Roles; import com.google.gwt.dom.client.Element; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.annotations.IsSafeHtml; @@ -63,8 +64,8 @@ public class StackPanel extends ComplexPanel implements InsertPanel.ForIsWidget */ public StackPanel() { Element table = DOM.createTable(); - //aria role to indicate it is a plain layout table - table.setAttribute("role", "presentation"); + // aria role to indicate it is a plain layout table + Roles.getPresentationRole().set(table); setElement(table); body = DOM.createTBody(); diff --git a/user/src/com/google/gwt/user/client/ui/TreeItem.java b/user/src/com/google/gwt/user/client/ui/TreeItem.java index 0fca82c45e0..7ba430f1158 100644 --- a/user/src/com/google/gwt/user/client/ui/TreeItem.java +++ b/user/src/com/google/gwt/user/client/ui/TreeItem.java @@ -88,8 +88,8 @@ void initializeClonableElements() { if (GWT.isClient()) { // Create the base table element that will be cloned. BASE_INTERNAL_ELEM = DOM.createTable(); - //aria role to indicate it is a plain layout table - BASE_INTERNAL_ELEM.setAttribute("role", "presentation"); + // aria role to indicate it is a plain layout table + Roles.getPresentationRole().set(BASE_BARE_ELEM); Element contentElem = DOM.createDiv(); Element tbody = DOM.createTBody(), tr = DOM.createTR(); Element tdImg = DOM.createTD(), tdContent = DOM.createTD(); From 7b6ed20b47c071d3de4e891b0c8df198897fdb48 Mon Sep 17 00:00:00 2001 From: tvtreeck Date: Fri, 28 Mar 2025 09:14:26 +0100 Subject: [PATCH 4/9] Removed the aria role from HTMLTable since its usage could be data tables as well --- user/src/com/google/gwt/user/client/ui/HTMLTable.java | 2 -- user/test/com/google/gwt/user/client/ui/FlexTableTest.java | 7 ------- user/test/com/google/gwt/user/client/ui/GridTest.java | 6 ------ 3 files changed, 15 deletions(-) diff --git a/user/src/com/google/gwt/user/client/ui/HTMLTable.java b/user/src/com/google/gwt/user/client/ui/HTMLTable.java index c16ad9e4da5..2eab30d7a5b 100644 --- a/user/src/com/google/gwt/user/client/ui/HTMLTable.java +++ b/user/src/com/google/gwt/user/client/ui/HTMLTable.java @@ -789,8 +789,6 @@ protected void setAttr(int row, String attrName, String value) { */ public HTMLTable() { tableElem = DOM.createTable(); - // aria role to indicate it is a plain layout table - Roles.getPresentationRole().set(tableElem); bodyElem = DOM.createTBody(); DOM.appendChild(tableElem, bodyElem); setElement(tableElem); diff --git a/user/test/com/google/gwt/user/client/ui/FlexTableTest.java b/user/test/com/google/gwt/user/client/ui/FlexTableTest.java index 661e01e9590..99ab0aec9ec 100644 --- a/user/test/com/google/gwt/user/client/ui/FlexTableTest.java +++ b/user/test/com/google/gwt/user/client/ui/FlexTableTest.java @@ -150,11 +150,4 @@ public void secondarySetHeightTest() { cellFormatter.setHeight(3, 1, "300px"); cellFormatter.setColSpan(3, 1, 2); } - - public void testPresentationRole() { - FlexTable t = new FlexTable(); - assertNotNull(t.getElement()); - assertEquals("presentation", t.getElement().getAttribute("role")); - } - } diff --git a/user/test/com/google/gwt/user/client/ui/GridTest.java b/user/test/com/google/gwt/user/client/ui/GridTest.java index 742af35ded0..3bdda3eada4 100644 --- a/user/test/com/google/gwt/user/client/ui/GridTest.java +++ b/user/test/com/google/gwt/user/client/ui/GridTest.java @@ -181,10 +181,4 @@ public void testResizeColumnGroup() { assertEquals(1, grid.getColumnCount()); assertEquals(1, colGroup.getChildCount()); } - - public void testPresentationRole() { - Grid grid = new Grid(2, 2); - assertNotNull(grid.getElement()); - assertEquals("presentation", grid.getElement().getAttribute("role")); - } } From 302597a33fe3c985eda33f426950b7449bec416a Mon Sep 17 00:00:00 2001 From: tvtreeck Date: Fri, 28 Mar 2025 11:20:44 +0100 Subject: [PATCH 5/9] Minor corrections --- user/src/com/google/gwt/user/client/ui/HTMLTable.java | 1 - user/test/com/google/gwt/user/client/ui/FlexTableTest.java | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/user/src/com/google/gwt/user/client/ui/HTMLTable.java b/user/src/com/google/gwt/user/client/ui/HTMLTable.java index 2eab30d7a5b..924d4721708 100644 --- a/user/src/com/google/gwt/user/client/ui/HTMLTable.java +++ b/user/src/com/google/gwt/user/client/ui/HTMLTable.java @@ -15,7 +15,6 @@ */ package com.google.gwt.user.client.ui; -import com.google.gwt.aria.client.Roles; import com.google.gwt.core.client.JsArray; import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.Document; diff --git a/user/test/com/google/gwt/user/client/ui/FlexTableTest.java b/user/test/com/google/gwt/user/client/ui/FlexTableTest.java index 99ab0aec9ec..c362df9594b 100644 --- a/user/test/com/google/gwt/user/client/ui/FlexTableTest.java +++ b/user/test/com/google/gwt/user/client/ui/FlexTableTest.java @@ -150,4 +150,5 @@ public void secondarySetHeightTest() { cellFormatter.setHeight(3, 1, "300px"); cellFormatter.setColSpan(3, 1, 2); } + } From 8519a794d2e70deb6710a06cbf4b3ab12ee2177a Mon Sep 17 00:00:00 2001 From: Lonzak Date: Tue, 1 Apr 2025 23:53:11 +0200 Subject: [PATCH 6/9] Fixed element to use base table --- user/src/com/google/gwt/user/client/ui/TreeItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user/src/com/google/gwt/user/client/ui/TreeItem.java b/user/src/com/google/gwt/user/client/ui/TreeItem.java index 7ba430f1158..f722813a037 100644 --- a/user/src/com/google/gwt/user/client/ui/TreeItem.java +++ b/user/src/com/google/gwt/user/client/ui/TreeItem.java @@ -89,7 +89,7 @@ void initializeClonableElements() { // Create the base table element that will be cloned. BASE_INTERNAL_ELEM = DOM.createTable(); // aria role to indicate it is a plain layout table - Roles.getPresentationRole().set(BASE_BARE_ELEM); + Roles.getPresentationRole().set(BASE_INTERNAL_ELEM); Element contentElem = DOM.createDiv(); Element tbody = DOM.createTBody(), tr = DOM.createTR(); Element tdImg = DOM.createTD(), tdContent = DOM.createTD(); From ed9bdde576f9ab4c598b72a0bd553b5861dd9297 Mon Sep 17 00:00:00 2001 From: Zbynek Konecny Date: Wed, 21 May 2025 06:59:51 +0200 Subject: [PATCH 7/9] Fix tests --- user/test/com/google/gwt/user/client/ui/MenuBarTest.java | 3 ++- user/test/com/google/gwt/user/client/ui/TreeItemTest.java | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java index a7ba4923cff..00c29ae6e05 100644 --- a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java +++ b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java @@ -608,6 +608,7 @@ public void testTabKey() { public void testPresentationRole() { MenuBar menu = new MenuBar(); assertNotNull(menu.getElement()); - assertEquals("presentation", menu.getElement().getAttribute("role")); + assertEquals("presentation", + Element.as(menu.getElement().getChild(1)).getAttribute("role")); } } diff --git a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java index ae25f3edbca..3d1d65100f6 100644 --- a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java +++ b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java @@ -264,7 +264,9 @@ public void testSetWidgetNullWithError() { public void testPresentationRole() { TreeItem item = new TreeItem(); + item.addItem(new TreeItem()); assertNotNull(item.getElement()); - assertEquals("presentation", item.getElement().getAttribute("role")); + assertEquals("presentation", + item.getElement().getFirstChildElement().getAttribute("role")); } } From 1c6a7d16f524674e20ff75ba1cb96767a7d604b6 Mon Sep 17 00:00:00 2001 From: Lonzak Date: Tue, 17 Jun 2025 18:24:16 +0200 Subject: [PATCH 8/9] Fixed junit --- .../gwt/user/client/ui/MenuBarTest.java | 21 +++++++++++++++---- .../gwt/user/client/ui/TreeItemTest.java | 10 +++++++-- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java index a7ba4923cff..e24d1b1ab04 100644 --- a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java +++ b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java @@ -20,6 +20,7 @@ import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.dom.client.NodeList; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.user.client.Command; @@ -606,8 +607,20 @@ public void testTabKey() { } public void testPresentationRole() { - MenuBar menu = new MenuBar(); - assertNotNull(menu.getElement()); - assertEquals("presentation", menu.getElement().getAttribute("role")); - } + MenuBar menu = new MenuBar(); + menu.addItem("Item1", BLANK_COMMAND); + RootPanel.get().add(menu); + + Element outer = menu.getElement(); + + NodeList tables = outer.getElementsByTagName("table"); + boolean found = false; + for (int i = 0; i < tables.getLength(); i++) { + if ("presentation".equals(tables.getItem(i).getAttribute("role"))) { + found = true; + break; + } + } + assertTrue("There should be a table with role='presentation'", found); + } } diff --git a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java index ae25f3edbca..6b841fcc092 100644 --- a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java +++ b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java @@ -15,6 +15,7 @@ */ package com.google.gwt.user.client.ui; +import com.google.gwt.dom.client.Element; import com.google.gwt.junit.client.GWTTestCase; import com.google.gwt.safehtml.shared.SafeHtmlUtils; @@ -264,7 +265,12 @@ public void testSetWidgetNullWithError() { public void testPresentationRole() { TreeItem item = new TreeItem(); - assertNotNull(item.getElement()); - assertEquals("presentation", item.getElement().getAttribute("role")); + item.addTextItem("Child"); + + Element tableElement = item.getElement().getFirstChildElement(); + assertNotNull("Table element must exist but is null!", tableElement); + + String role = tableElement.getAttribute("role"); + assertEquals("presentation", role); } } From 056b97fb2d242519897855b1319ce556e53dd589 Mon Sep 17 00:00:00 2001 From: Lonzak Date: Tue, 17 Jun 2025 18:31:00 +0200 Subject: [PATCH 9/9] Revert "Fixed junit" This reverts commit 1c6a7d16f524674e20ff75ba1cb96767a7d604b6. --- .../gwt/user/client/ui/MenuBarTest.java | 21 ++++--------------- .../gwt/user/client/ui/TreeItemTest.java | 10 ++------- 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java index e24d1b1ab04..a7ba4923cff 100644 --- a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java +++ b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java @@ -20,7 +20,6 @@ import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; -import com.google.gwt.dom.client.NodeList; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.safehtml.shared.SafeHtmlUtils; import com.google.gwt.user.client.Command; @@ -607,20 +606,8 @@ public void testTabKey() { } public void testPresentationRole() { - MenuBar menu = new MenuBar(); - menu.addItem("Item1", BLANK_COMMAND); - RootPanel.get().add(menu); - - Element outer = menu.getElement(); - - NodeList tables = outer.getElementsByTagName("table"); - boolean found = false; - for (int i = 0; i < tables.getLength(); i++) { - if ("presentation".equals(tables.getItem(i).getAttribute("role"))) { - found = true; - break; - } - } - assertTrue("There should be a table with role='presentation'", found); - } + MenuBar menu = new MenuBar(); + assertNotNull(menu.getElement()); + assertEquals("presentation", menu.getElement().getAttribute("role")); + } } diff --git a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java index 6b841fcc092..ae25f3edbca 100644 --- a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java +++ b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java @@ -15,7 +15,6 @@ */ package com.google.gwt.user.client.ui; -import com.google.gwt.dom.client.Element; import com.google.gwt.junit.client.GWTTestCase; import com.google.gwt.safehtml.shared.SafeHtmlUtils; @@ -265,12 +264,7 @@ public void testSetWidgetNullWithError() { public void testPresentationRole() { TreeItem item = new TreeItem(); - item.addTextItem("Child"); - - Element tableElement = item.getElement().getFirstChildElement(); - assertNotNull("Table element must exist but is null!", tableElement); - - String role = tableElement.getAttribute("role"); - assertEquals("presentation", role); + assertNotNull(item.getElement()); + assertEquals("presentation", item.getElement().getAttribute("role")); } }