Skip to content

Commit e88258c

Browse files
dbaronDevtools-frontend LUCI CQ
authored andcommitted
Add support for accessibility issues about interactive content in <summary>.
This updates the devtools frontend to match browser protocol changes that are being made to support an additional accessibility issue about interactive content in <summary>. This both makes the updates to match the rename of SelectElementAccessibilityIssue (and related types and fields) to ElementAccessibilityIssue and adds the frontend support for the new issue reason reporting interactive content inside of <summary>. This includes a manual roll of the browser protocol (which has incompatible changes), excluding the separately-incompatible addition of SharedWorkerMessage. Bug: 427172874 Change-Id: I4e87be8d05b5453733285e11b4d3873829c31311 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6653379 Reviewed-by: Philip Pfaffe <pfaffe@chromium.org> Reviewed-by: Danil Somsikov <dsv@chromium.org> Commit-Queue: David Baron <dbaron@chromium.org>
1 parent df0eb0a commit e88258c

18 files changed

Lines changed: 209 additions & 190 deletions

DEPS

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ vars = {
2323
'inspector_protocol_url': 'https://chromium.googlesource.com/deps/inspector_protocol',
2424
'inspector_protocol_revision': '6d1ae0f13aae6ad381ca31b17b88a0f5af29ca94',
2525

26-
# Keeping track of the last time we rollerd the browser protocol files.
27-
'chromium_browser_protocol_revision' : '9a6cdde91b579b777f10c566efb8b25d7552f21e',
26+
# Keeping track of the last time we rolled the browser protocol files.
27+
'chromium_browser_protocol_revision' : 'a5302fd8428c0287f753b2503b2f06d4550ab307',
2828

2929
'clang_format_url': 'https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git',
3030
'clang_format_revision': '37f6e68a107df43b7d7e044fd36a13cbae3413f2',
@@ -49,7 +49,7 @@ vars = {
4949
# Chrome version used for tests. It should be regularly updated to
5050
# match the Canary version listed here:
5151
# https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json
52-
'chrome': '139.0.7247.0',
52+
'chrome': '140.0.7260.0',
5353

5454
# 'magic' text to tell depot_tools that git submodules should be accepted but
5555
# but parity with DEPS file is expected.

config/gni/devtools_grd_files.gni

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,7 @@ grd_files_bundled_sources = [
565565
"front_end/models/issues_manager/descriptions/sriValidationFailedSignatureMismatch.md",
566566
"front_end/models/issues_manager/descriptions/stylesheetLateImport.md",
567567
"front_end/models/issues_manager/descriptions/stylesheetRequestFailed.md",
568+
"front_end/models/issues_manager/descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md",
568569
"front_end/models/issues_manager/descriptions/userReidentificationBlocked.md",
569570
"front_end/models/issues_manager/issues_manager.js",
570571
"front_end/models/javascript_metadata/javascript_metadata.js",
@@ -1052,6 +1053,7 @@ grd_files_unbundled_sources = [
10521053
"front_end/models/issues_manager/CorsIssue.js",
10531054
"front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.js",
10541055
"front_end/models/issues_manager/DeprecationIssue.js",
1056+
"front_end/models/issues_manager/ElementAccessibilityIssue.js",
10551057
"front_end/models/issues_manager/FederatedAuthRequestIssue.js",
10561058
"front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.js",
10571059
"front_end/models/issues_manager/GenericIssue.js",
@@ -1068,7 +1070,6 @@ grd_files_unbundled_sources = [
10681070
"front_end/models/issues_manager/QuirksModeIssue.js",
10691071
"front_end/models/issues_manager/RelatedIssue.js",
10701072
"front_end/models/issues_manager/SRIMessageSignatureIssue.js",
1071-
"front_end/models/issues_manager/SelectElementAccessibilityIssue.js",
10721073
"front_end/models/issues_manager/SharedArrayBufferIssue.js",
10731074
"front_end/models/issues_manager/SharedDictionaryIssue.js",
10741075
"front_end/models/issues_manager/SourceFrameIssuesManager.js",

front_end/core/host/UserMetrics.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -951,11 +951,11 @@ export enum IssueCreated {
951951
'CookieIssue::WarnThirdPartyPhaseout::SetCookie' = 83,
952952
'CookieIssue::ExcludeThirdPartyPhaseout::ReadCookie' = 84,
953953
'CookieIssue::ExcludeThirdPartyPhaseout::SetCookie' = 85,
954-
'SelectElementAccessibilityIssue::DisallowedSelectChild' = 86,
955-
'SelectElementAccessibilityIssue::DisallowedOptGroupChild' = 87,
956-
'SelectElementAccessibilityIssue::NonPhrasingContentOptionChild' = 88,
957-
'SelectElementAccessibilityIssue::InteractiveContentOptionChild' = 89,
958-
'SelectElementAccessibilityIssue::InteractiveContentLegendChild' = 90,
954+
'ElementAccessibilityIssue::DisallowedSelectChild' = 86,
955+
'ElementAccessibilityIssue::DisallowedOptGroupChild' = 87,
956+
'ElementAccessibilityIssue::NonPhrasingContentOptionChild' = 88,
957+
'ElementAccessibilityIssue::InteractiveContentOptionChild' = 89,
958+
'ElementAccessibilityIssue::InteractiveContentLegendChild' = 90,
959959
'SRIMessageSignatureIssue::MissingSignatureHeader' = 91,
960960
'SRIMessageSignatureIssue::MissingSignatureInputHeader' = 92,
961961
'SRIMessageSignatureIssue::InvalidSignatureHeader' = 93,
@@ -978,8 +978,9 @@ export enum IssueCreated {
978978
'SRIMessageSignatureIssue::ValidationFailedSignatureMismatch' = 110,
979979
'CorsIssue::LocalNetworkAccessPermissionDenied' = 111,
980980
'SRIMessageSignatureIssue::ValidationFailedIntegrityMismatch' = 112,
981+
'ElementAccessibilityIssue::InteractiveContentSummaryDescendant' = 113,
981982
/* eslint-enable @typescript-eslint/naming-convention */
982-
MAX_VALUE = 113,
983+
MAX_VALUE = 114,
983984
}
984985

985986
export const enum DeveloperResourceLoaded {

front_end/generated/InspectorBackendCommands.js

Lines changed: 8 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

front_end/generated/protocol.ts

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,20 +1336,21 @@ export namespace Audits {
13361336
partitioningBlobURLInfo: PartitioningBlobURLInfo;
13371337
}
13381338

1339-
export const enum SelectElementAccessibilityIssueReason {
1339+
export const enum ElementAccessibilityIssueReason {
13401340
DisallowedSelectChild = 'DisallowedSelectChild',
13411341
DisallowedOptGroupChild = 'DisallowedOptGroupChild',
13421342
NonPhrasingContentOptionChild = 'NonPhrasingContentOptionChild',
13431343
InteractiveContentOptionChild = 'InteractiveContentOptionChild',
13441344
InteractiveContentLegendChild = 'InteractiveContentLegendChild',
1345+
InteractiveContentSummaryDescendant = 'InteractiveContentSummaryDescendant',
13451346
}
13461347

13471348
/**
1348-
* This issue warns about errors in the select element content model.
1349+
* This issue warns about errors in the select or summary element content model.
13491350
*/
1350-
export interface SelectElementAccessibilityIssueDetails {
1351+
export interface ElementAccessibilityIssueDetails {
13511352
nodeId: DOM.BackendNodeId;
1352-
selectElementAccessibilityIssueReason: SelectElementAccessibilityIssueReason;
1353+
elementAccessibilityIssueReason: ElementAccessibilityIssueReason;
13531354
hasDisallowedAttributes: boolean;
13541355
}
13551356

@@ -1447,7 +1448,7 @@ export namespace Audits {
14471448
FederatedAuthUserInfoRequestIssue = 'FederatedAuthUserInfoRequestIssue',
14481449
PropertyRuleIssue = 'PropertyRuleIssue',
14491450
SharedDictionaryIssue = 'SharedDictionaryIssue',
1450-
SelectElementAccessibilityIssue = 'SelectElementAccessibilityIssue',
1451+
ElementAccessibilityIssue = 'ElementAccessibilityIssue',
14511452
SRIMessageSignatureIssue = 'SRIMessageSignatureIssue',
14521453
UserReidentificationIssue = 'UserReidentificationIssue',
14531454
}
@@ -1480,7 +1481,7 @@ export namespace Audits {
14801481
propertyRuleIssueDetails?: PropertyRuleIssueDetails;
14811482
federatedAuthUserInfoRequestIssueDetails?: FederatedAuthUserInfoRequestIssueDetails;
14821483
sharedDictionaryIssueDetails?: SharedDictionaryIssueDetails;
1483-
selectElementAccessibilityIssueDetails?: SelectElementAccessibilityIssueDetails;
1484+
elementAccessibilityIssueDetails?: ElementAccessibilityIssueDetails;
14841485
sriMessageSignatureIssueDetails?: SRIMessageSignatureIssueDetails;
14851486
userReidentificationIssueDetails?: UserReidentificationIssueDetails;
14861487
}
@@ -13020,16 +13021,6 @@ export namespace Page {
1302013021
themeColor?: string;
1302113022
}
1302213023

13023-
/**
13024-
* Enum of possible auto-response for permission / prompt dialogs.
13025-
*/
13026-
export const enum AutoResponseMode {
13027-
None = 'none',
13028-
AutoAccept = 'autoAccept',
13029-
AutoReject = 'autoReject',
13030-
AutoOptOut = 'autoOptOut',
13031-
}
13032-
1303313024
/**
1303413025
* The type of a frameNavigated event.
1303513026
*/
@@ -13972,12 +13963,26 @@ export namespace Page {
1397213963
data: binary;
1397313964
}
1397413965

13966+
export const enum SetSPCTransactionModeRequestMode {
13967+
None = 'none',
13968+
AutoAccept = 'autoAccept',
13969+
AutoChooseToAuthAnotherWay = 'autoChooseToAuthAnotherWay',
13970+
AutoReject = 'autoReject',
13971+
AutoOptOut = 'autoOptOut',
13972+
}
13973+
1397513974
export interface SetSPCTransactionModeRequest {
13976-
mode: AutoResponseMode;
13975+
mode: SetSPCTransactionModeRequestMode;
13976+
}
13977+
13978+
export const enum SetRPHRegistrationModeRequestMode {
13979+
None = 'none',
13980+
AutoAccept = 'autoAccept',
13981+
AutoReject = 'autoReject',
1397713982
}
1397813983

1397913984
export interface SetRPHRegistrationModeRequest {
13980-
mode: AutoResponseMode;
13985+
mode: SetRPHRegistrationModeRequestMode;
1398113986
}
1398213987

1398313988
export interface GenerateTestReportRequest {

front_end/models/issues_manager/BUILD.gn

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ devtools_module("issues_manager") {
2121
"CorsIssue.ts",
2222
"CrossOriginEmbedderPolicyIssue.ts",
2323
"DeprecationIssue.ts",
24+
"ElementAccessibilityIssue.ts",
2425
"FederatedAuthRequestIssue.ts",
2526
"FederatedAuthUserInfoRequestIssue.ts",
2627
"GenericIssue.ts",
@@ -37,7 +38,6 @@ devtools_module("issues_manager") {
3738
"QuirksModeIssue.ts",
3839
"RelatedIssue.ts",
3940
"SRIMessageSignatureIssue.ts",
40-
"SelectElementAccessibilityIssue.ts",
4141
"SharedArrayBufferIssue.ts",
4242
"SharedDictionaryIssue.ts",
4343
"SourceFrameIssuesManager.ts",
@@ -191,6 +191,7 @@ devtools_issue_description_files = [
191191
"selectElementAccessibilityInteractiveContentLegendChild.md",
192192
"selectElementAccessibilityInteractiveContentOptionChild.md",
193193
"selectElementAccessibilityNonPhrasingContentOptionChild.md",
194+
"summaryElementAccessibilityInteractiveContentSummaryDescendant.md",
194195
"sharedArrayBuffer.md",
195196
"stylesheetLateImport.md",
196197
"stylesheetRequestFailed.md",
@@ -284,6 +285,7 @@ ts_library("unittests") {
284285
sources = [
285286
"CheckFormsIssuesTrigger.test.ts",
286287
"DeprecationIssue.test.ts",
288+
"ElementAccessibilityIssue.test.ts",
287289
"FederatedAuthUserInfoRequestIssue.test.ts",
288290
"GenericIssue.test.ts",
289291
"Issue.test.ts",
@@ -294,7 +296,6 @@ ts_library("unittests") {
294296
"PropertyRuleIssue.test.ts",
295297
"RelatedIssue.test.ts",
296298
"SRIMessageSignatureIssue.test.ts",
297-
"SelectElementAccessibilityIssue.test.ts",
298299
"SharedDictionaryIssue.test.ts",
299300
"StylesheetLoadingIssue.test.ts",
300301
]

front_end/models/issues_manager/SelectElementAccessibilityIssue.test.ts renamed to front_end/models/issues_manager/ElementAccessibilityIssue.test.ts

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,22 @@ import {describeWithLocale, expectConsoleLogs} from '../../testing/EnvironmentHe
88
import {MockIssuesModel} from '../../testing/MockIssuesModel.js';
99
import * as IssuesManager from '../issues_manager/issues_manager.js';
1010

11-
describeWithLocale('SelectElementAccessibilityIssue', () => {
11+
describeWithLocale('ElementAccessibilityIssue', () => {
1212
const mockModel = new MockIssuesModel([]) as unknown as SDK.IssuesModel.IssuesModel;
1313

1414
function createProtocolIssueWithoutDetails(): Protocol.Audits.InspectorIssue {
1515
return {
16-
code: Protocol.Audits.InspectorIssueCode.SelectElementAccessibilityIssue,
16+
code: Protocol.Audits.InspectorIssueCode.ElementAccessibilityIssue,
1717
details: {},
1818
};
1919
}
2020

2121
function createProtocolIssueWithDetails(
22-
selectElementAccessibilityIssueDetails: Protocol.Audits.SelectElementAccessibilityIssueDetails):
22+
elementAccessibilityIssueDetails: Protocol.Audits.ElementAccessibilityIssueDetails):
2323
Protocol.Audits.InspectorIssue {
2424
return {
25-
code: Protocol.Audits.InspectorIssueCode.SelectElementAccessibilityIssue,
26-
details: {selectElementAccessibilityIssueDetails},
25+
code: Protocol.Audits.InspectorIssueCode.ElementAccessibilityIssue,
26+
details: {elementAccessibilityIssueDetails},
2727
};
2828
}
2929

@@ -33,22 +33,22 @@ describeWithLocale('SelectElementAccessibilityIssue', () => {
3333

3434
it('can be created for various reasons', () => {
3535
const reasons = [
36-
Protocol.Audits.SelectElementAccessibilityIssueReason.DisallowedSelectChild,
37-
Protocol.Audits.SelectElementAccessibilityIssueReason.DisallowedOptGroupChild,
38-
Protocol.Audits.SelectElementAccessibilityIssueReason.NonPhrasingContentOptionChild,
39-
Protocol.Audits.SelectElementAccessibilityIssueReason.InteractiveContentOptionChild,
40-
Protocol.Audits.SelectElementAccessibilityIssueReason.InteractiveContentLegendChild,
36+
Protocol.Audits.ElementAccessibilityIssueReason.DisallowedSelectChild,
37+
Protocol.Audits.ElementAccessibilityIssueReason.DisallowedOptGroupChild,
38+
Protocol.Audits.ElementAccessibilityIssueReason.NonPhrasingContentOptionChild,
39+
Protocol.Audits.ElementAccessibilityIssueReason.InteractiveContentOptionChild,
40+
Protocol.Audits.ElementAccessibilityIssueReason.InteractiveContentLegendChild,
41+
Protocol.Audits.ElementAccessibilityIssueReason.InteractiveContentSummaryDescendant,
4142
];
4243
for (const reason of reasons) {
4344
const issueDetails = {
4445
nodeId: 1 as Protocol.DOM.BackendNodeId,
45-
selectElementAccessibilityIssueReason: reason,
46+
elementAccessibilityIssueReason: reason,
4647
hasDisallowedAttributes: false,
4748
};
4849
const issue = createProtocolIssueWithDetails(issueDetails);
4950
const selectIssues =
50-
IssuesManager.SelectElementAccessibilityIssue.SelectElementAccessibilityIssue.fromInspectorIssue(
51-
mockModel, issue);
51+
IssuesManager.ElementAccessibilityIssue.ElementAccessibilityIssue.fromInspectorIssue(mockModel, issue);
5252
assert.lengthOf(selectIssues, 1);
5353
const selectIssue = selectIssues[0];
5454

@@ -61,24 +61,21 @@ describeWithLocale('SelectElementAccessibilityIssue', () => {
6161

6262
it('adds a disallowed select child issue without details', () => {
6363
const inspectorIssueWithoutGenericDetails = createProtocolIssueWithoutDetails();
64-
const selectIssues =
65-
IssuesManager.SelectElementAccessibilityIssue.SelectElementAccessibilityIssue.fromInspectorIssue(
66-
mockModel, inspectorIssueWithoutGenericDetails);
64+
const selectIssues = IssuesManager.ElementAccessibilityIssue.ElementAccessibilityIssue.fromInspectorIssue(
65+
mockModel, inspectorIssueWithoutGenericDetails);
6766

6867
assert.isEmpty(selectIssues);
6968
});
7069

7170
it('adds an interactive content attributes select child issue with valid details', () => {
7271
const issueDetails = {
7372
nodeId: 1 as Protocol.DOM.BackendNodeId,
74-
selectElementAccessibilityIssueReason:
75-
Protocol.Audits.SelectElementAccessibilityIssueReason.InteractiveContentOptionChild,
73+
elementAccessibilityIssueReason: Protocol.Audits.ElementAccessibilityIssueReason.InteractiveContentOptionChild,
7674
hasDisallowedAttributes: true,
7775
};
7876
const issue = createProtocolIssueWithDetails(issueDetails);
7977
const selectIssues =
80-
IssuesManager.SelectElementAccessibilityIssue.SelectElementAccessibilityIssue.fromInspectorIssue(
81-
mockModel, issue);
78+
IssuesManager.ElementAccessibilityIssue.ElementAccessibilityIssue.fromInspectorIssue(mockModel, issue);
8279
assert.lengthOf(selectIssues, 1);
8380
const selectIssue = selectIssues[0];
8481

0 commit comments

Comments
 (0)