Commit c4971293 authored by Hector Carmona's avatar Hector Carmona Committed by Commit Bot

A11y: Add application role and move focus in cr-action-menu.

Adding role="application" lets us be in control of the mode change on windows for screen readers.
aria-roledescription is necessary now because we don't want to change users' expectations that this is a menu.

Focus target change is necessary because focusing the application causes all its contents to be read as a label.

Bug: 855123
Change-Id: If2428d875f325b55339b6ad3c14874c9e066e584
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1869483Reviewed-by: default avatarColin Blundell <blundell@chromium.org>
Reviewed-by: default avatarDan Beam <dbeam@chromium.org>
Commit-Queue: Hector Carmona <hcarmona@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710034}
parent 24ac5100
...@@ -32,7 +32,8 @@ ...@@ -32,7 +32,8 @@
</style> </style>
<cr-lazy-render id="dropdown"> <cr-lazy-render id="dropdown">
<template> <template>
<cr-action-menu on-mousedown="onMenuMousedown_"> <cr-action-menu on-mousedown="onMenuMousedown_"
role-description="$i18n{menu}">
<template is="dom-repeat" items="[[menuCommands_]]" as="command"> <template is="dom-repeat" items="[[menuCommands_]]" as="command">
<button class="dropdown-item" <button class="dropdown-item"
command$="[[command]]" command$="[[command]]"
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
on-click="onMoreActionsTap_" aria-haspopup="menu"></cr-icon-button> on-click="onMoreActionsTap_" aria-haspopup="menu"></cr-icon-button>
</cr-toolbar> </cr-toolbar>
<cr-action-menu id="moreActionsMenu" <cr-action-menu id="moreActionsMenu"
aria-label="$i18n{actionMenuDescription}"> role-description="$i18n{actionMenuDescription}">
<button class="dropdown-item clear-all" on-click="onClearAllTap_"> <button class="dropdown-item clear-all" on-click="onClearAllTap_">
$i18n{clearAll} $i18n{clearAll}
</button> </button>
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
<cr-icon-button id="more-actions" iron-icon="cr:more-vert" <cr-icon-button id="more-actions" iron-icon="cr:more-vert"
title="$i18n{activityLogMoreActionsLabel}" title="$i18n{activityLogMoreActionsLabel}"
on-click="onMoreActionsClick_"></cr-icon-button> on-click="onMoreActionsClick_"></cr-icon-button>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button id="expand-all-button" class="dropdown-item" <button id="expand-all-button" class="dropdown-item"
on-click="onExpandAllClick_"> on-click="onExpandAllClick_">
$i18n{activityLogExpandAll} $i18n{activityLogExpandAll}
......
...@@ -114,6 +114,7 @@ ...@@ -114,6 +114,7 @@
</cr-radio-group> </cr-radio-group>
</div> </div>
<cr-action-menu id="hostActionMenu" <cr-action-menu id="hostActionMenu"
role-description="$i18n{menu}"
on-close="onActionMenuClose_"> on-close="onActionMenuClose_">
<button class="dropdown-item" id="action-menu-edit" <button class="dropdown-item" id="action-menu-edit"
on-click="onActionMenuEditClick_"> on-click="onActionMenuEditClick_">
......
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
<cr-lazy-render id="sharedMenu"> <cr-lazy-render id="sharedMenu">
<template> <template>
<cr-action-menu aria-label="$i18n{actionMenuDescription}"> <cr-action-menu role-description="$i18n{actionMenuDescription}">
<button id="menuMoreButton" class="dropdown-item" <button id="menuMoreButton" class="dropdown-item"
hidden="[[!canSearchMoreFromSite_( hidden="[[!canSearchMoreFromSite_(
searchedTerm, actionMenuModel_.item.domain)]]" searchedTerm, actionMenuModel_.item.domain)]]"
......
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
<cr-lazy-render id="menu"> <cr-lazy-render id="menu">
<template> <template>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button id="menuOpenButton" class="dropdown-item" <button id="menuOpenButton" class="dropdown-item"
on-click="onOpenAllTap_"> on-click="onOpenAllTap_">
$i18n{openAll} $i18n{openAll}
......
...@@ -58,7 +58,7 @@ class HelloPolymer3Element extends PolymerElement { ...@@ -58,7 +58,7 @@ class HelloPolymer3Element extends PolymerElement {
<cr-icon-button iron-icon="cr:more-vert" on-click="showActionMenu_"> <cr-icon-button iron-icon="cr:more-vert" on-click="showActionMenu_">
</cr-icon-button> </cr-icon-button>
</cr-toolbar> </cr-toolbar>
<cr-action-menu> <cr-action-menu role-description="Menu">
<button class="dropdown-item">Hello</button> <button class="dropdown-item">Hello</button>
<button class="dropdown-item">Action</button> <button class="dropdown-item">Action</button>
<button class="dropdown-item">Menu</button> <button class="dropdown-item">Menu</button>
......
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
$i18n{noAddressesFound} $i18n{noAddressesFound}
</div> </div>
</div> </div>
<cr-action-menu id="addressSharedMenu"> <cr-action-menu id="addressSharedMenu" role-description="$i18n{menu}">
<button id="menuEditAddress" class="dropdown-item" <button id="menuEditAddress" class="dropdown-item"
on-click="onMenuEditAddressTap_">$i18n{edit}</button> on-click="onMenuEditAddressTap_">$i18n{edit}</button>
<button id="menuRemoveAddress" class="dropdown-item" <button id="menuRemoveAddress" class="dropdown-item"
......
...@@ -139,13 +139,13 @@ ...@@ -139,13 +139,13 @@
$i18n{noPasswordsFound} $i18n{noPasswordsFound}
</div> </div>
</div> </div>
<cr-action-menu id="menu"> <cr-action-menu id="menu" role-description="$i18n{menu}">
<button id="menuEditPassword" class="dropdown-item" <button id="menuEditPassword" class="dropdown-item"
on-click="onMenuEditPasswordTap_">$i18n{passwordViewDetails}</button> on-click="onMenuEditPasswordTap_">$i18n{passwordViewDetails}</button>
<button id="menuRemovePassword" class="dropdown-item" <button id="menuRemovePassword" class="dropdown-item"
on-click="onMenuRemovePasswordTap_">$i18n{removePassword}</button> on-click="onMenuRemovePasswordTap_">$i18n{removePassword}</button>
</cr-action-menu> </cr-action-menu>
<cr-action-menu id="exportImportMenu"> <cr-action-menu id="exportImportMenu" role-description="$i18n{menu}">
<button id="menuImportPassword" class="dropdown-item" <button id="menuImportPassword" class="dropdown-item"
on-click="onImportTap_" hidden="[[!showImportPasswords_]]"> on-click="onImportTap_" hidden="[[!showImportPasswords_]]">
$i18n{import} $i18n{import}
......
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
credit-cards="[[creditCards]]"> credit-cards="[[creditCards]]">
</settings-credit-card-list> </settings-credit-card-list>
<cr-action-menu id="creditCardSharedMenu"> <cr-action-menu id="creditCardSharedMenu" role-description="$i18n{menu}">
<button id="menuEditCreditCard" class="dropdown-item" <button id="menuEditCreditCard" class="dropdown-item"
on-click="onMenuEditCreditCardTap_">$i18n{edit}</button> on-click="onMenuEditCreditCardTap_">$i18n{edit}</button>
<button id="menuRemoveCreditCard" class="dropdown-item" <button id="menuRemoveCreditCard" class="dropdown-item"
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<cr-icon-button class="icon-more-vert" on-click="onMenuButtonTap_" <cr-icon-button class="icon-more-vert" on-click="onMenuButtonTap_"
tabindex$="[[tabindex]]" title="$i18n{moreActions}" tabindex$="[[tabindex]]" title="$i18n{moreActions}"
on-keydown="ignoreEnterKey_"></cr-icon-button> on-keydown="ignoreEnterKey_"></cr-icon-button>
<cr-action-menu id="dotsMenu"> <cr-action-menu id="dotsMenu" role-description="$i18n{menu}">
<button class="dropdown-item" <button class="dropdown-item"
on-click="onConnectActionTap_"> on-click="onConnectActionTap_">
[[getConnectActionText_(device.connected)]] [[getConnectActionText_(device.connected)]]
......
...@@ -237,7 +237,8 @@ ...@@ -237,7 +237,8 @@
<cr-lazy-render id="menu"> <cr-lazy-render id="menu">
<template> <template>
<cr-action-menu class="complex" on-close="onCloseMenu_"> <cr-action-menu class="complex" on-close="onCloseMenu_"
role-description="$i18n{menu}">
<cr-checkbox id="uiLanguageItem" class="dropdown-item" <cr-checkbox id="uiLanguageItem" class="dropdown-item"
hidden="[[isGuest_]]" hidden="[[isGuest_]]"
disabled="[[disableUILanguageCheckbox_( disabled="[[disableUILanguageCheckbox_(
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
</template> </template>
</div> </div>
<cr-action-menu id="dotsMenu"> <cr-action-menu id="dotsMenu" role-description="$i18n{menu}">
<button class="dropdown-item" hidden="[[!showAddPreferred_]]" <button class="dropdown-item" hidden="[[!showAddPreferred_]]"
on-click="onAddPreferredTap_"> on-click="onAddPreferredTap_">
$i18n{knownNetworksMenuAddPreferred} $i18n{knownNetworksMenuAddPreferred}
......
...@@ -402,7 +402,7 @@ ...@@ -402,7 +402,7 @@
</if> <!-- _google_chrome or not is_macosx --> </if> <!-- _google_chrome or not is_macosx -->
<cr-lazy-render id="menu"> <cr-lazy-render id="menu">
<template> <template>
<cr-action-menu <cr-action-menu role-description="$i18n{menu}"
<if expr="chromeos or is_win"> <if expr="chromeos or is_win">
on-close="onCloseMenu_" on-close="onCloseMenu_"
</if> </if>
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
</cr-icon-button> </cr-icon-button>
<cr-lazy-render id="menu"> <cr-lazy-render id="menu">
<template> <template>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" on-click="onEditTap_"> <button class="dropdown-item" on-click="onEditTap_">
$i18n{edit} $i18n{edit}
</button> </button>
......
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
<div class="clear settings-box"></div> <div class="clear settings-box"></div>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" on-click="onRemoveAccountTap_"> <button class="dropdown-item" on-click="onRemoveAccountTap_">
$i18n{removeAccountLabel} $i18n{removeAccountLabel}
</button> </button>
......
...@@ -148,7 +148,7 @@ ...@@ -148,7 +148,7 @@
<div class="clear settings-box"></div> <div class="clear settings-box"></div>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" on-click="onRefreshNowClick_"> <button class="dropdown-item" on-click="onRefreshNowClick_">
$i18n{kerberosAccountsRefreshNowLabel} $i18n{kerberosAccountsRefreshNowLabel}
</button> </button>
...@@ -181,4 +181,4 @@ ...@@ -181,4 +181,4 @@
</template> </template>
</template> </template>
<script src="kerberos_accounts.js"></script> <script src="kerberos_accounts.js"></script>
</dom-module> </dom-module>
\ No newline at end of file
...@@ -218,7 +218,8 @@ ...@@ -218,7 +218,8 @@
</div> </div>
</div> </div>
<template is="dom-if" if="[[!syncStatus.signedIn]]" restamp> <template is="dom-if" if="[[!syncStatus.signedIn]]" restamp>
<cr-action-menu id="menu" auto-reposition> <cr-action-menu id="menu" auto-reposition
role-description="$i18n{menu}">
<template is="dom-repeat" items="[[storedAccounts_]]"> <template is="dom-repeat" items="[[storedAccounts_]]">
<button class="dropdown-item" on-click="onAccountTap_"> <button class="dropdown-item" on-click="onAccountTap_">
<img class="account-icon small" alt="" <img class="account-icon small" alt=""
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
} }
</style> </style>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" on-click="onEditTap_"> <button class="dropdown-item" on-click="onEditTap_">
$i18n{editPrinter} $i18n{editPrinter}
</button> </button>
......
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
} }
</style> </style>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button id="editButton" class="dropdown-item" on-click="onEditTap_"> <button id="editButton" class="dropdown-item" on-click="onEditTap_">
$i18n{editPrinter} $i18n{editPrinter}
</button> </button>
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<cr-icon-button class="icon-more-vert" on-click="onDotsTap_" <cr-icon-button class="icon-more-vert" on-click="onDotsTap_"
title="$i18n{moreActions}" focus-row-control focus-type="menu"> title="$i18n{moreActions}" focus-row-control focus-type="menu">
</cr-icon-button> </cr-icon-button>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" on-click="onManageTap_" <button class="dropdown-item" on-click="onManageTap_"
id="manage"> id="manage">
$i18n{searchEnginesManageExtension} $i18n{searchEnginesManageExtension}
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
<cr-icon-button class="icon-more-vert" on-click="onDotsTap_" <cr-icon-button class="icon-more-vert" on-click="onDotsTap_"
title="$i18n{moreActions}" focus-row-control title="$i18n{moreActions}" focus-row-control
focus-type="cr-menu-button"></cr-icon-button> focus-type="cr-menu-button"></cr-icon-button>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" on-click="onMakeDefaultTap_" <button class="dropdown-item" on-click="onMakeDefaultTap_"
hidden$="[[!engine.canBeDefault]]" id="makeDefault"> hidden$="[[!engine.canBeDefault]]" id="makeDefault">
$i18n{searchEnginesMakeDefault} $i18n{searchEnginesMakeDefault}
......
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
<!-- Overflow menu. --> <!-- Overflow menu. -->
<cr-lazy-render id="menu"> <cr-lazy-render id="menu">
<template> <template>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" role="menuitem" <button class="dropdown-item" role="menuitem"
on-click="onConfirmResetSettings_"> on-click="onConfirmResetSettings_">
$i18n{siteSettingsSiteGroupReset} $i18n{siteSettingsSiteGroupReset}
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
</div> </div>
</template> </template>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" on-click="onDefaultClick_" <button class="dropdown-item" on-click="onDefaultClick_"
id="defaultButton" hidden$="[[actionMenuModel_.is_default]]"> id="defaultButton" hidden$="[[actionMenuModel_.is_default]]">
$i18n{handlerSetDefault} $i18n{handlerSetDefault}
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
</cr-button> </cr-button>
</div> </div>
<cr-action-menu> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" id="allow" <button class="dropdown-item" id="allow"
on-click="onAllowTap_" hidden$="[[!showAllowAction_]]"> on-click="onAllowTap_" hidden$="[[!showAllowAction_]]">
$i18n{siteSettingsActionAllow} $i18n{siteSettingsActionAllow}
......
...@@ -71,6 +71,7 @@ content::WebUIDataSource* CreateBookmarksUIHTMLSource(Profile* profile) { ...@@ -71,6 +71,7 @@ content::WebUIDataSource* CreateBookmarksUIHTMLSource(Profile* profile) {
{"folderLabel", IDS_BOOKMARK_MANAGER_FOLDER_LABEL}, {"folderLabel", IDS_BOOKMARK_MANAGER_FOLDER_LABEL},
{"itemsSelected", IDS_BOOKMARK_MANAGER_ITEMS_SELECTED}, {"itemsSelected", IDS_BOOKMARK_MANAGER_ITEMS_SELECTED},
{"listAxLabel", IDS_BOOKMARK_MANAGER_LIST_AX_LABEL}, {"listAxLabel", IDS_BOOKMARK_MANAGER_LIST_AX_LABEL},
{"menu", IDS_MENU},
{"menuAddBookmark", IDS_BOOKMARK_MANAGER_MENU_ADD_BOOKMARK}, {"menuAddBookmark", IDS_BOOKMARK_MANAGER_MENU_ADD_BOOKMARK},
{"menuAddFolder", IDS_BOOKMARK_MANAGER_MENU_ADD_FOLDER}, {"menuAddFolder", IDS_BOOKMARK_MANAGER_MENU_ADD_FOLDER},
{"menuCut", IDS_BOOKMARK_MANAGER_MENU_CUT}, {"menuCut", IDS_BOOKMARK_MANAGER_MENU_CUT},
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "build/build_config.h" #include "build/build_config.h"
#include "chrome/browser/ui/webui/localized_string.h" #include "chrome/browser/ui/webui/localized_string.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "components/strings/grit/components_strings.h"
#include "content/public/browser/web_ui_data_source.h" #include "content/public/browser/web_ui_data_source.h"
namespace certificate_manager { namespace certificate_manager {
...@@ -80,6 +81,8 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source) { ...@@ -80,6 +81,8 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source) {
IDS_SETTINGS_CERTIFICATE_MANAGER_CONFIRM_PASSWORD}, IDS_SETTINGS_CERTIFICATE_MANAGER_CONFIRM_PASSWORD},
{"certificateImportErrorFormat", {"certificateImportErrorFormat",
IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ERROR_FORMAT}, IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_ERROR_FORMAT},
// For A11y.
{"menu", IDS_MENU},
}; };
AddLocalizedStringsBulk(html_source, kLocalizedStrings, AddLocalizedStringsBulk(html_source, kLocalizedStrings,
base::size(kLocalizedStrings)); base::size(kLocalizedStrings));
......
...@@ -73,6 +73,7 @@ content::WebUIDataSource* CreateMdExtensionsSource(Profile* profile, ...@@ -73,6 +73,7 @@ content::WebUIDataSource* CreateMdExtensionsSource(Profile* profile,
{"controlledSettingPolicy", IDS_CONTROLLED_SETTING_POLICY}, {"controlledSettingPolicy", IDS_CONTROLLED_SETTING_POLICY},
{"done", IDS_DONE}, {"done", IDS_DONE},
{"learnMore", IDS_LEARN_MORE}, {"learnMore", IDS_LEARN_MORE},
{"menu", IDS_MENU},
{"noSearchResults", IDS_SEARCH_NO_RESULTS}, {"noSearchResults", IDS_SEARCH_NO_RESULTS},
{"ok", IDS_OK}, {"ok", IDS_OK},
{"save", IDS_SAVE}, {"save", IDS_SAVE},
......
...@@ -76,6 +76,7 @@ content::WebUIDataSource* CreateHistoryUIHTMLSource(Profile* profile) { ...@@ -76,6 +76,7 @@ content::WebUIDataSource* CreateHistoryUIHTMLSource(Profile* profile) {
{"historyMenuItem", IDS_HISTORY_HISTORY_MENU_ITEM}, {"historyMenuItem", IDS_HISTORY_HISTORY_MENU_ITEM},
{"itemsSelected", IDS_HISTORY_ITEMS_SELECTED}, {"itemsSelected", IDS_HISTORY_ITEMS_SELECTED},
{"loading", IDS_HISTORY_LOADING}, {"loading", IDS_HISTORY_LOADING},
{"menu", IDS_MENU},
{"menuPromo", IDS_HISTORY_MENU_PROMO}, {"menuPromo", IDS_HISTORY_MENU_PROMO},
{"moreFromSite", IDS_HISTORY_MORE_FROM_SITE}, {"moreFromSite", IDS_HISTORY_MORE_FROM_SITE},
{"openAll", IDS_HISTORY_OTHER_SESSIONS_OPEN_ALL}, {"openAll", IDS_HISTORY_OTHER_SESSIONS_OPEN_ALL},
......
...@@ -166,6 +166,7 @@ void AddCommonStrings(content::WebUIDataSource* html_source, Profile* profile) { ...@@ -166,6 +166,7 @@ void AddCommonStrings(content::WebUIDataSource* html_source, Profile* profile) {
{"edit", IDS_SETTINGS_EDIT}, {"edit", IDS_SETTINGS_EDIT},
{"extensionsLinkTooltip", IDS_SETTINGS_MENU_EXTENSIONS_LINK_TOOLTIP}, {"extensionsLinkTooltip", IDS_SETTINGS_MENU_EXTENSIONS_LINK_TOOLTIP},
{"learnMore", IDS_LEARN_MORE}, {"learnMore", IDS_LEARN_MORE},
{"menu", IDS_MENU},
{"menuButtonLabel", IDS_SETTINGS_MENU_BUTTON_LABEL}, {"menuButtonLabel", IDS_SETTINGS_MENU_BUTTON_LABEL},
{"moreActions", IDS_SETTINGS_MORE_ACTIONS}, {"moreActions", IDS_SETTINGS_MORE_ACTIONS},
{"ok", IDS_OK}, {"ok", IDS_OK},
......
...@@ -274,7 +274,7 @@ suite('CrActionMenu', function() { ...@@ -274,7 +274,7 @@ suite('CrActionMenu', function() {
menu.showAt(dots); menu.showAt(dots);
items[0].focus(); items[0].focus();
dispatchMouseoverEvent(menu); dispatchMouseoverEvent(menu);
assertEquals(dialog, getDeepActiveElement()); assertEquals(dialog.querySelector('[role="menu"]'), getDeepActiveElement());
}); });
test('moving mouse on a disabled item should focus the menu', () => { test('moving mouse on a disabled item should focus the menu', () => {
...@@ -282,7 +282,7 @@ suite('CrActionMenu', function() { ...@@ -282,7 +282,7 @@ suite('CrActionMenu', function() {
items[2].toggleAttribute('disabled', true); items[2].toggleAttribute('disabled', true);
items[0].focus(); items[0].focus();
dispatchMouseoverEvent(items[2]); dispatchMouseoverEvent(items[2]);
assertEquals(dialog, getDeepActiveElement()); assertEquals(dialog.querySelector('[role="menu"]'), getDeepActiveElement());
}); });
test('mouse movements should override keyboard focus', () => { test('mouse movements should override keyboard focus', () => {
......
...@@ -260,6 +260,9 @@ ...@@ -260,6 +260,9 @@
<message name="IDS_SAVE" desc="Used on a button to save information you are editing."> <message name="IDS_SAVE" desc="Used on a button to save information you are editing.">
Save Save
</message> </message>
<message name="IDS_MENU" desc="The accessible name for the Menu. This is used as the aria-roledescription for context menus.">
Menu
</message>
<if expr="is_android"> <if expr="is_android">
<message name="IDS_SHOW" desc="Generic label to show content for a feature. [CHAR-LIMIT=20]" formatter_data="android_java"> <message name="IDS_SHOW" desc="Generic label to show content for a feature. [CHAR-LIMIT=20]" formatter_data="android_java">
Show Show
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</cr-icon-button> </cr-icon-button>
<cr-lazy-render id="menu"> <cr-lazy-render id="menu">
<template> <template>
<cr-action-menu> <cr-action-menu role-description="[[i18n('menu')]]">
<button class="dropdown-item" id="view" <button class="dropdown-item" id="view"
on-tap="onViewTap_"> on-tap="onViewTap_">
[[i18n('certificateManagerView')]] [[i18n('certificateManagerView')]]
......
...@@ -64,9 +64,9 @@ ...@@ -64,9 +64,9 @@
padding: 8px 0; padding: 8px 0;
} }
</style> </style>
<dialog id="dialog" tabindex="0" on-close="onNativeDialogClose_" role="menu" <dialog id="dialog" on-close="onNativeDialogClose_"
aria-label$="[[ariaLabel]]"> role="application" aria-roledescription$="[[roleDescription]]">
<div class="item-wrapper" role="none"> <div id="wrapper" class="item-wrapper" role="menu" tabindex="-1">
<slot id="contentNode"></slot> <slot id="contentNode"></slot>
</div> </div>
</dialog> </dialog>
......
...@@ -164,7 +164,8 @@ Polymer({ ...@@ -164,7 +164,8 @@ Polymer({
value: false, value: false,
}, },
ariaLabel: String, /* Descriptor of the menu. Should be something along the lines of "menu" */
roleDescription: String,
}, },
listeners: { listeners: {
...@@ -289,7 +290,7 @@ Polymer({ ...@@ -289,7 +290,7 @@ Polymer({
onMouseover_: function(e) { onMouseover_: function(e) {
const query = '.dropdown-item:not([disabled])'; const query = '.dropdown-item:not([disabled])';
const item = e.composedPath().find(el => el.matches && el.matches(query)); const item = e.composedPath().find(el => el.matches && el.matches(query));
(item || this.$.dialog).focus(); (item || this.$.wrapper).focus();
}, },
/** /**
...@@ -358,7 +359,7 @@ Polymer({ ...@@ -358,7 +359,7 @@ Polymer({
anchorAlignmentX: AnchorAlignment.BEFORE_END, anchorAlignmentX: AnchorAlignment.BEFORE_END,
}, },
opt_config))); opt_config)));
this.$.dialog.focus(); this.$.wrapper.focus();
}, },
/** /**
......
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