gecko-dev/devtools/shared/constants.js

139 строки
4.7 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
/**
* Constants used in various panels, shared between client and the server.
*/
/* Accessibility Panel ====================================================== */
// List of audit types.
const AUDIT_TYPE = {
CONTRAST: "CONTRAST",
KEYBOARD: "KEYBOARD",
TEXT_LABEL: "TEXT_LABEL",
};
// Types of issues grouped by audit types.
const ISSUE_TYPE = {
[AUDIT_TYPE.KEYBOARD]: {
// Focusable accessible objects have no semantics.
FOCUSABLE_NO_SEMANTICS: "FOCUSABLE_NO_SEMANTICS",
// Tab index greater than 0 is provided.
FOCUSABLE_POSITIVE_TABINDEX: "FOCUSABLE_POSITIVE_TABINDEX",
// Interactive accesible objects do not have an associated action.
INTERACTIVE_NO_ACTION: "INTERACTIVE_NO_ACTION",
// Interative accessible objcets are not focusable.
INTERACTIVE_NOT_FOCUSABLE: "INTERACTIVE_NOT_FOCUSABLE",
// Accessible objects can only be interacted with a mouse.
MOUSE_INTERACTIVE_ONLY: "MOUSE_INTERACTIVE_ONLY",
// Focusable accessible objects have no focus styling.
NO_FOCUS_VISIBLE: "NO_FOCUS_VISIBLE",
},
[AUDIT_TYPE.TEXT_LABEL]: {
// <AREA> name is provided via "alt" attribute.
AREA_NO_NAME_FROM_ALT: "AREA_NO_NAME_FROM_ALT",
// Dialog name is not provided.
DIALOG_NO_NAME: "DIALOG_NO_NAME",
// Document title is not provided.
DOCUMENT_NO_TITLE: "DOCUMENT_NO_TITLE",
// <EMBED> name is not provided.
EMBED_NO_NAME: "EMBED_NO_NAME",
// <FIGURE> name is not provided.
FIGURE_NO_NAME: "FIGURE_NO_NAME",
// <FIELDSET> name is not provided.
FORM_FIELDSET_NO_NAME: "FORM_FIELDSET_NO_NAME",
// <FIELDSET> name is not provided via <LEGEND> element.
FORM_FIELDSET_NO_NAME_FROM_LEGEND: "FORM_FIELDSET_NO_NAME_FROM_LEGEND",
// Form element's name is not provided.
FORM_NO_NAME: "FORM_NO_NAME",
// Form element's name is not visible.
FORM_NO_VISIBLE_NAME: "FORM_NO_VISIBLE_NAME",
// <OPTGROUP> name is not provided via "label" attribute.
FORM_OPTGROUP_NO_NAME_FROM_LABEL: "FORM_OPTGROUP_NO_NAME_FROM_LABEL",
// <FRAME> name is not provided.
FRAME_NO_NAME: "FRAME_NO_NAME",
// <H{1, 2, ...}> has no content.
HEADING_NO_CONTENT: "HEADING_NO_CONTENT",
// <H{1, 2, ...}> name is not provided.
HEADING_NO_NAME: "HEADING_NO_NAME",
// <IFRAME> name is not provided via "title" attribute.
IFRAME_NO_NAME_FROM_TITLE: "IFRAME_NO_NAME_FROM_TITLE",
// <IMG> name is not provided (including empty name).
IMAGE_NO_NAME: "IMAGE_NO_NAME",
// Interactive element's name is not provided.
INTERACTIVE_NO_NAME: "INTERACTIVE_NO_NAME",
// <MGLYPH> name is no provided.
MATHML_GLYPH_NO_NAME: "MATHML_GLYPH_NO_NAME",
// Toolbar's name is not provided when more than one toolbar is present.
TOOLBAR_NO_NAME: "TOOLBAR_NO_NAME",
},
};
// Constants associated with WCAG guidelines score system.
const SCORES = {
// Satisfies WCAG AA guidelines.
AA: "AA",
// Satisfies WCAG AAA guidelines.
AAA: "AAA",
// Elevates accessibility experience.
BEST_PRACTICES: "BEST_PRACTICES",
// Does not satisfy the baseline WCAG guidelines.
FAIL: "FAIL",
// Partially satisfies the WCAG AA guidelines.
WARNING: "WARNING",
};
// List of simulation types.
const SIMULATION_TYPE = {
// No red color blindness
PROTANOPIA: "PROTANOPIA",
// No green color blindness
DEUTERANOPIA: "DEUTERANOPIA",
// No blue color blindness
TRITANOPIA: "TRITANOPIA",
// Absense of color vision
ACHROMATOPSIA: "ACHROMATOPSIA",
// Low contrast
CONTRAST_LOSS: "CONTRAST_LOSS",
};
/* Compatibility Panel ====================================================== */
const COMPATIBILITY_ISSUE_TYPE = {
CSS_PROPERTY: "CSS_PROPERTY",
CSS_PROPERTY_ALIASES: "CSS_PROPERTY_ALIASES",
};
/* Style Editor ============================================================= */
// The PageStyle actor flattens the DOM CSS objects a little bit, merging
// Rules and their Styles into one actor. For elements (which have a style
// but no associated rule) we fake a rule with the following style id.
// This `id` is intended to be used instead of a regular CSSRule Type constant.
// See https://developer.mozilla.org/en-US/docs/Web/API/CSSRule#Type_constants
const ELEMENT_STYLE = 100;
/* WebConsole Panel ========================================================= */
const MESSAGE_CATEGORY = {
CSS_PARSER: "CSS Parser",
};
module.exports = {
accessibility: {
AUDIT_TYPE,
ISSUE_TYPE,
SCORES,
SIMULATION_TYPE,
},
COMPATIBILITY_ISSUE_TYPE,
MESSAGE_CATEGORY,
style: {
ELEMENT_STYLE,
},
};