Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2581)

Unified Diff: Source/web/resources/calendarPicker.js

Issue 564053002: AX: Calendar Picker: Apply aria-activedescendant to YearListView. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix the test for Windows Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « LayoutTests/fast/forms/calendar-picker/date-picker-ax-expected.txt ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/web/resources/calendarPicker.js
diff --git a/Source/web/resources/calendarPicker.js b/Source/web/resources/calendarPicker.js
index e593be169809b5758bbf38e868a6cc4b4c7ddcc4..1fbd7405288b79774faa85b7fb70fa2020ea554d 100644
--- a/Source/web/resources/calendarPicker.js
+++ b/Source/web/resources/calendarPicker.js
@@ -1560,7 +1560,6 @@ ScrollView.prototype.contentPositionForContentOffset = function(offset) {
*/
function ListCell() {
View.call(this, createElement("div", ListCell.ClassNameListCell));
- this.element.setAttribute("role", "gridcell");
/**
* @type {!number}
@@ -2144,9 +2143,11 @@ function YearListCell(shortMonthLabels) {
var monthChooserElement = createElement("div", YearListCell.ClassNameMonthChooser);
for (var r = 0; r < YearListCell.ButtonRows; ++r) {
var buttonsRow = createElement("div", YearListCell.ClassNameMonthButtonsRow);
+ buttonsRow.setAttribute("role", "row");
for (var c = 0; c < YearListCell.ButtonColumns; ++c) {
var month = c + r * YearListCell.ButtonColumns;
var button = createElement("div", YearListCell.ClassNameMonthButton, shortMonthLabels[month]);
+ button.setAttribute("role", "gridcell");
button.dataset.month = month;
buttonsRow.appendChild(button);
this.monthButtons.push(button);
@@ -2475,12 +2476,21 @@ YearListView.prototype.prepareNewCell = function(row) {
var cell = YearListCell._recycleBin.pop() || new YearListCell(global.params.shortMonthLabels);
cell.reset(row);
cell.setSelected(this.selectedRow === row);
- if (this.highlightedMonth && row === this.highlightedMonth.year - 1) {
- cell.monthButtons[this.highlightedMonth.month].classList.add(YearListCell.ClassNameHighlighted);
- }
for (var i = 0; i < cell.monthButtons.length; ++i) {
var month = new Month(row + 1, i);
+ cell.monthButtons[i].id = month.toString();
cell.monthButtons[i].setAttribute("aria-disabled", this._minimumMonth > month || this._maximumMonth < month ? "true" : "false");
+ cell.monthButtons[i].setAttribute("aria-label", month.toLocaleString());
+ }
+ if (this.highlightedMonth && row === this.highlightedMonth.year - 1) {
+ var monthButton = cell.monthButtons[this.highlightedMonth.month];
+ monthButton.classList.add(YearListCell.ClassNameHighlighted);
+ // aira-activedescendant assumes both elements have renderers, and
+ // |monthButton| might have no renderer yet.
+ var element = this.element;
+ setTimeout(function() {
+ element.setAttribute("aria-activedescendant", monthButton.id);
+ }, 0);
}
var animator = this._runningAnimators[row];
if (animator)
@@ -2606,6 +2616,7 @@ YearListView.prototype.dehighlightMonth = function() {
monthButton.classList.remove(YearListCell.ClassNameHighlighted);
}
this.highlightedMonth = null;
+ this.element.removeAttribute("aria-activedescendant");
};
/**
@@ -2621,6 +2632,7 @@ YearListView.prototype.highlightMonth = function(month) {
var monthButton = this.buttonForMonth(this.highlightedMonth);
if (monthButton) {
monthButton.classList.add(YearListCell.ClassNameHighlighted);
+ this.element.setAttribute("aria-activedescendant", monthButton.id);
}
};
@@ -3032,6 +3044,7 @@ function DayCell() {
this.element.style.width = DayCell.Width + "px";
this.element.style.height = DayCell.Height + "px";
this.element.style.lineHeight = (DayCell.Height - DayCell.PaddingSize * 2) + "px";
+ this.element.setAttribute("role", "gridcell");
/**
* @type {?Day}
*/
« no previous file with comments | « LayoutTests/fast/forms/calendar-picker/date-picker-ax-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698