From 0608900d60289b2ec4726df11db74b449322448f Mon Sep 17 00:00:00 2001 From: Alexander Surkov Date: Mon, 23 Mar 2015 11:51:33 -0400 Subject: [PATCH] Bug 1141978 - Support rowgroup and colgroup HTML scope, r=marcoz --- accessible/html/HTMLTableAccessible.cpp | 7 +- .../mochitest/table/test_headers_table.html | 223 ++++++++++++++++++ 2 files changed, 228 insertions(+), 2 deletions(-) diff --git a/accessible/html/HTMLTableAccessible.cpp b/accessible/html/HTMLTableAccessible.cpp index acd7595f6edd61..35a52c697c6fc0 100644 --- a/accessible/html/HTMLTableAccessible.cpp +++ b/accessible/html/HTMLTableAccessible.cpp @@ -299,15 +299,18 @@ HTMLTableHeaderCellAccessible::NativeRole() { // Check value of @scope attribute. static nsIContent::AttrValuesArray scopeValues[] = - {&nsGkAtoms::col, &nsGkAtoms::row, nullptr}; + { &nsGkAtoms::col, &nsGkAtoms::colgroup, + &nsGkAtoms::row, &nsGkAtoms::rowgroup, nullptr }; int32_t valueIdx = mContent->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::scope, scopeValues, eCaseMatters); switch (valueIdx) { case 0: - return roles::COLUMNHEADER; case 1: + return roles::COLUMNHEADER; + case 2: + case 3: return roles::ROWHEADER; } diff --git a/accessible/tests/mochitest/table/test_headers_table.html b/accessible/tests/mochitest/table/test_headers_table.html index 99c36f837be6d0..c6bcd82901139b 100644 --- a/accessible/tests/mochitest/table/test_headers_table.html +++ b/accessible/tests/mochitest/table/test_headers_table.html @@ -156,6 +156,142 @@ testHeaderCells(headerInfoMap); + ////////////////////////////////////////////////////////////////////////// + // @scope="rowgroup" and @scope="row" + + headerInfoMap = [ + { + cell: "t7_r1c1", + rowHeaderCells: [ "t7_Females", "t7_Mary" ], + columnHeaderCells: [ "t7_1km" ] + }, + { + cell: "t7_r1c2", + rowHeaderCells: [ "t7_Females", "t7_Mary" ], + columnHeaderCells: [ "t7_5km" ] + }, + { + cell: "t7_r1c3", + rowHeaderCells: [ "t7_Females", "t7_Mary" ], + columnHeaderCells: [ "t7_10km" ] + }, + { + cell: "t7_r2c1", + rowHeaderCells: [ "t7_Females", "t7_Betsy" ], + columnHeaderCells: [ "t7_1km" ] + }, + { + cell: "t7_r2c2", + rowHeaderCells: [ "t7_Females", "t7_Betsy" ], + columnHeaderCells: [ "t7_5km" ] + }, + { + cell: "t7_r2c3", + rowHeaderCells: [ "t7_Females", "t7_Betsy" ], + columnHeaderCells: [ "t7_10km" ] + }, + { + cell: "t7_r3c1", + rowHeaderCells: [ "t7_Males", "t7_Matt" ], + columnHeaderCells: [ "t7_1km" ] + }, + { + cell: "t7_r3c2", + rowHeaderCells: [ "t7_Males", "t7_Matt" ], + columnHeaderCells: [ "t7_5km" ] + }, + { + cell: "t7_r3c3", + rowHeaderCells: [ "t7_Males", "t7_Matt" ], + columnHeaderCells: [ "t7_10km" ] + }, + { + cell: "t7_r4c1", + rowHeaderCells: [ "t7_Males", "t7_Todd" ], + columnHeaderCells: [ "t7_1km" ] + }, + { + cell: "t7_r4c2", + rowHeaderCells: [ "t7_Males", "t7_Todd" ], + columnHeaderCells: [ "t7_5km" ] + }, + { + cell: "t7_r4c3", + rowHeaderCells: [ "t7_Males", "t7_Todd" ], + columnHeaderCells: [ "t7_10km" ] + } + ]; + + testHeaderCells(headerInfoMap); + + ////////////////////////////////////////////////////////////////////////// + // @scope="colgroup" and @scope="col" + + headerInfoMap = [ + { + cell: "t8_r1c1", + rowHeaderCells: [ "t8_1km" ], + columnHeaderCells: [ "t7_Females", "t7_Mary" ] + }, + { + cell: "t8_r1c2", + rowHeaderCells: [ "t8_5km" ], + columnHeaderCells: [ "t8_Females", "t8_Mary" ] + }, + { + cell: "t8_r1c3", + rowHeaderCells: [ "t8_10km" ], + columnHeaderCells: [ "t8_Females", "t8_Mary" ] + }, + { + cell: "t8_r1c4", + rowHeaderCells: [ "t8_1km" ], + columnHeaderCells: [ "t8_Females", "t8_Betsy" ] + }, + { + cell: "t8_r2c1", + rowHeaderCells: [ "t8_5km" ], + columnHeaderCells: [ "t8_Females", "t8_Betsy" ] + }, + { + cell: "t8_r2c2", + rowHeaderCells: [ "t8_10km" ], + columnHeaderCells: [ "t8_Females", "t8_Betsy" ] + }, + { + cell: "t8_r2c3", + rowHeaderCells: [ "t8_1km" ], + columnHeaderCells: [ "t8_Males", "t8_Matt" ] + }, + { + cell: "t8_r2c4", + rowHeaderCells: [ "t8_5km" ], + columnHeaderCells: [ "t8_Males", "t8_Matt" ] + }, + { + cell: "t8_r3c1", + rowHeaderCells: [ "t8_10km" ], + columnHeaderCells: [ "t8_Males", "t8_Matt" ] + }, + { + cell: "t8_r3c2", + rowHeaderCells: [ "t8_1km" ], + columnHeaderCells: [ "t8_Males", "t8_Todd" ] + }, + { + cell: "t8_r3c3", + rowHeaderCells: [ "t8_5km" ], + columnHeaderCells: [ "t8_Males", "t8_Todd" ] + }, + { + cell: "t8_r3c4", + rowHeaderCells: [ "t8_10km" ], + columnHeaderCells: [ "t8_Males", "t8_Todd" ] + } + ]; + + testHeaderCells(headerInfoMap); + SimpleTest.finish(); } @@ -175,6 +311,11 @@ href="https://bugzilla.mozilla.org/show_bug.cgi?id=704465"> Bug 704465 + + Bug 1141978 +

@@ -275,5 +416,87 @@ cell + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Version 1 with rowgroup
 1 km5 km10 km
FemalesMary8:3228:041:01:16
Betsy7:4326:4755:38
MalesMatt7:5527:2957:04
Todd7:0124:2150:35
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Version 2 with colgroup
 FemalesMales
MaryBetsyMattTodd
1 km8:327:437:557:01
5 km28:0426:4727:2724:21
10 km1:01:1655:3857:0450:35
+