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

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

Issue 536903002: AX: Make the calendar role "grid". (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: 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
Index: Source/web/resources/calendarPicker.js
diff --git a/Source/web/resources/calendarPicker.js b/Source/web/resources/calendarPicker.js
index a41876881e6622c5cd5131335dd1940a4b0c61e6..4b255534fce6aeb5e2e65f60bf1695af05105860 100644
--- a/Source/web/resources/calendarPicker.js
+++ b/Source/web/resources/calendarPicker.js
@@ -75,7 +75,7 @@ function hasInaccuratePointingDevice() {
* @return {!string} lowercase locale name. e.g. "en-us"
*/
function getLocale() {
- return (global.params.locale || "en-us").toLowerCase();
+ return (global.params.locale || "en-us").toLowerCase().replace(/_/, '-');
keishi 2014/09/03 12:09:35 nit: I'm not sure but could the locale have two un
tkent 2014/09/05 04:54:47 That's right. The regex should be /_/g
}
/**
@@ -1560,6 +1560,7 @@ ScrollView.prototype.contentPositionForContentOffset = function(offset) {
*/
function ListCell() {
View.call(this, createElement("div", ListCell.ClassNameListCell));
+ this.element.setAttribute("role", "gridcell");
/**
* @type {!number}
@@ -1659,6 +1660,7 @@ ListCell.prototype.setSelected = function(selected) {
function ListView() {
View.call(this, createElement("div", ListView.ClassNameListView));
this.element.tabIndex = 0;
+ this.element.setAttribute("role", "grid");
/**
* @type {!number}
@@ -3069,10 +3071,13 @@ DayCell.prototype.throwAway = function() {
* @param {!boolean} highlighted
*/
DayCell.prototype.setHighlighted = function(highlighted) {
- if (highlighted)
+ if (highlighted) {
this.element.classList.add(DayCell.ClassNameHighlighted);
- else
+ this.element.setAttribute("aria-selected", "true");
+ } else {
this.element.classList.remove(DayCell.ClassNameHighlighted);
+ this.element.setAttribute("aria-selected", "false");
+ }
};
/**
@@ -3111,6 +3116,13 @@ DayCell.prototype.setIsToday = function(selected) {
DayCell.prototype.reset = function(day) {
this.day = day;
this.element.textContent = localizeNumber(this.day.date.toString());
+ if (!DayCell.formatter) {
+ DayCell.formatter = new Intl.DateTimeFormat(getLocale(), {
+ weekday: "long", year: "numeric", month: "long", day: "numeric"
+ });
+ }
+ this.element.setAttribute("aria-label", DayCell.formatter.format(this.day.startDate()));
+ this.element.id = this.day.toString();
this.show();
};
@@ -3226,6 +3238,7 @@ function CalendarRowCell() {
ListCell.call(this);
this.element.classList.add(CalendarRowCell.ClassNameCalendarRowCell);
this.element.style.height = CalendarRowCell.Height + "px";
+ this.element.setAttribute("role", "row");
/**
* @type {!Array}
@@ -3511,7 +3524,10 @@ CalendarTableView.prototype.updateCells = function() {
var day = dayCell.day;
dayCell.setIsToday(Day.createFromToday().equals(day));
dayCell.setSelected(day >= firstDayInSelection && day <= lastDayInSelection);
- dayCell.setHighlighted(day >= firstDayInHighlight && day <= lastDayInHighlight);
+ var isHighlighted = day >= firstDayInHighlight && day <= lastDayInHighlight;
+ dayCell.setHighlighted(isHighlighted);
+ if (isHighlighted && firstDayInHighlight == lastDayInHighlight)
+ this.element.setAttribute("aria-activedescendant", dayCell.element.id);
dayCell.setIsInCurrentMonth(day >= firstDayInCurrentMonth && day <= lastDayInCurrentMonth);
dayCell.setDisabled(!this.calendarPicker.isValidDay(day));
}

Powered by Google App Engine
This is Rietveld 408576698