/* 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/. */

#ifndef mozilla_dom_SanitizerDefaultConfig_h
#define mozilla_dom_SanitizerDefaultConfig_h

// This file is automatically generated by update-safe-default-configuration.py

#include "mozilla/dom/SanitizerTypes.h"
#include "nsGkAtoms.h"

namespace mozilla::dom::sanitizer {

constexpr nsStaticAtom* kDefaultHTMLElements[] = {
    // clang-format off
    nsGkAtoms::a,
    nsGkAtoms::abbr,
    nsGkAtoms::address,
    nsGkAtoms::article,
    nsGkAtoms::aside,
    nsGkAtoms::b,
    nsGkAtoms::bdi,
    nsGkAtoms::bdo,
    nsGkAtoms::blockquote,
    nsGkAtoms::body,
    nsGkAtoms::br,
    nsGkAtoms::caption,
    nsGkAtoms::cite,
    nsGkAtoms::code,
    nsGkAtoms::col,
    nsGkAtoms::colgroup,
    nsGkAtoms::data,
    nsGkAtoms::dd,
    nsGkAtoms::del,
    nsGkAtoms::dfn,
    nsGkAtoms::div,
    nsGkAtoms::dl,
    nsGkAtoms::dt,
    nsGkAtoms::em,
    nsGkAtoms::figcaption,
    nsGkAtoms::figure,
    nsGkAtoms::footer,
    nsGkAtoms::h1,
    nsGkAtoms::h2,
    nsGkAtoms::h3,
    nsGkAtoms::h4,
    nsGkAtoms::h5,
    nsGkAtoms::h6,
    nsGkAtoms::head,
    nsGkAtoms::header,
    nsGkAtoms::hgroup,
    nsGkAtoms::hr,
    nsGkAtoms::html,
    nsGkAtoms::i,
    nsGkAtoms::ins,
    nsGkAtoms::kbd,
    nsGkAtoms::li,
    nsGkAtoms::main,
    nsGkAtoms::mark,
    nsGkAtoms::menu,
    nsGkAtoms::nav,
    nsGkAtoms::ol,
    nsGkAtoms::p,
    nsGkAtoms::pre,
    nsGkAtoms::q,
    nsGkAtoms::rp,
    nsGkAtoms::rt,
    nsGkAtoms::ruby,
    nsGkAtoms::s,
    nsGkAtoms::samp,
    nsGkAtoms::search,
    nsGkAtoms::section,
    nsGkAtoms::small,
    nsGkAtoms::span,
    nsGkAtoms::strong,
    nsGkAtoms::sub,
    nsGkAtoms::sup,
    nsGkAtoms::table,
    nsGkAtoms::tbody,
    nsGkAtoms::td,
    nsGkAtoms::tfoot,
    nsGkAtoms::th,
    nsGkAtoms::thead,
    nsGkAtoms::time,
    nsGkAtoms::title,
    nsGkAtoms::tr,
    nsGkAtoms::u,
    nsGkAtoms::ul,
    nsGkAtoms::var,
    nsGkAtoms::wbr,
    // clang-format on
};

constexpr nsStaticAtom* kDefaultMathMLElements[] = {
    // clang-format off
    nsGkAtoms::math,
    nsGkAtoms::merror,
    nsGkAtoms::mfrac,
    nsGkAtoms::mi,
    nsGkAtoms::mmultiscripts,
    nsGkAtoms::mn,
    nsGkAtoms::mo,
    nsGkAtoms::mover,
    nsGkAtoms::mpadded,
    nsGkAtoms::mphantom,
    nsGkAtoms::mprescripts,
    nsGkAtoms::mroot,
    nsGkAtoms::mrow,
    nsGkAtoms::ms,
    nsGkAtoms::mspace,
    nsGkAtoms::msqrt,
    nsGkAtoms::mstyle,
    nsGkAtoms::msub,
    nsGkAtoms::msubsup,
    nsGkAtoms::msup,
    nsGkAtoms::mtable,
    nsGkAtoms::mtd,
    nsGkAtoms::mtext,
    nsGkAtoms::mtr,
    nsGkAtoms::munder,
    nsGkAtoms::munderover,
    nsGkAtoms::semantics,
    // clang-format on
};

constexpr nsStaticAtom* kDefaultSVGElements[] = {
    // clang-format off
    nsGkAtoms::a,
    nsGkAtoms::circle,
    nsGkAtoms::defs,
    nsGkAtoms::desc,
    nsGkAtoms::ellipse,
    nsGkAtoms::foreignObject,
    nsGkAtoms::g,
    nsGkAtoms::line,
    nsGkAtoms::marker,
    nsGkAtoms::metadata,
    nsGkAtoms::path,
    nsGkAtoms::polygon,
    nsGkAtoms::polyline,
    nsGkAtoms::rect,
    nsGkAtoms::svg,
    nsGkAtoms::text,
    nsGkAtoms::textPath,
    nsGkAtoms::title,
    nsGkAtoms::tspan,
    // clang-format on
};

constexpr nsStaticAtom* kDefaultAttributes[] = {
    // clang-format off
    nsGkAtoms::alignment_baseline,
    nsGkAtoms::baseline_shift,
    nsGkAtoms::clip_path,
    nsGkAtoms::clip_rule,
    nsGkAtoms::color,
    nsGkAtoms::color_interpolation,
    nsGkAtoms::cursor,
    nsGkAtoms::dir,
    nsGkAtoms::direction,
    nsGkAtoms::display,
    nsGkAtoms::displaystyle,
    nsGkAtoms::dominant_baseline,
    nsGkAtoms::fill,
    nsGkAtoms::fill_opacity,
    nsGkAtoms::fill_rule,
    nsGkAtoms::font_family,
    nsGkAtoms::font_size,
    nsGkAtoms::font_size_adjust,
    nsGkAtoms::font_stretch,
    nsGkAtoms::font_style,
    nsGkAtoms::font_variant,
    nsGkAtoms::font_weight,
    nsGkAtoms::lang,
    nsGkAtoms::letter_spacing,
    nsGkAtoms::marker_end,
    nsGkAtoms::marker_mid,
    nsGkAtoms::marker_start,
    nsGkAtoms::mathbackground,
    nsGkAtoms::mathcolor,
    nsGkAtoms::mathsize,
    nsGkAtoms::opacity,
    nsGkAtoms::paint_order,
    nsGkAtoms::pointer_events,
    nsGkAtoms::scriptlevel,
    nsGkAtoms::shape_rendering,
    nsGkAtoms::stop_color,
    nsGkAtoms::stop_opacity,
    nsGkAtoms::stroke,
    nsGkAtoms::stroke_dasharray,
    nsGkAtoms::stroke_dashoffset,
    nsGkAtoms::stroke_linecap,
    nsGkAtoms::stroke_linejoin,
    nsGkAtoms::stroke_miterlimit,
    nsGkAtoms::stroke_opacity,
    nsGkAtoms::stroke_width,
    nsGkAtoms::text_anchor,
    nsGkAtoms::text_decoration,
    nsGkAtoms::text_overflow,
    nsGkAtoms::text_rendering,
    nsGkAtoms::title,
    nsGkAtoms::transform,
    nsGkAtoms::transform_origin,
    nsGkAtoms::unicode_bidi,
    nsGkAtoms::vector_effect,
    nsGkAtoms::visibility,
    nsGkAtoms::white_space,
    nsGkAtoms::word_spacing,
    nsGkAtoms::writing_mode,
    // clang-format on
};

// Data is encoded as: element, attributes..., nullptr
constexpr nsStaticAtom* kHTMLElementWithAttributes[] = {
    // clang-format off
    /* element */ nsGkAtoms::a,
    nsGkAtoms::href,
    nsGkAtoms::hreflang,
    nsGkAtoms::type,
    nullptr,
    /* element */ nsGkAtoms::blockquote,
    nsGkAtoms::cite,
    nullptr,
    /* element */ nsGkAtoms::col,
    nsGkAtoms::span,
    nullptr,
    /* element */ nsGkAtoms::colgroup,
    nsGkAtoms::span,
    nullptr,
    /* element */ nsGkAtoms::data,
    nsGkAtoms::value,
    nullptr,
    /* element */ nsGkAtoms::del,
    nsGkAtoms::cite,
    nsGkAtoms::datetime,
    nullptr,
    /* element */ nsGkAtoms::ins,
    nsGkAtoms::cite,
    nsGkAtoms::datetime,
    nullptr,
    /* element */ nsGkAtoms::li,
    nsGkAtoms::value,
    nullptr,
    /* element */ nsGkAtoms::ol,
    nsGkAtoms::reversed,
    nsGkAtoms::start,
    nsGkAtoms::type,
    nullptr,
    /* element */ nsGkAtoms::td,
    nsGkAtoms::colspan,
    nsGkAtoms::headers,
    nsGkAtoms::rowspan,
    nullptr,
    /* element */ nsGkAtoms::th,
    nsGkAtoms::abbr,
    nsGkAtoms::colspan,
    nsGkAtoms::headers,
    nsGkAtoms::rowspan,
    nsGkAtoms::scope,
    nullptr,
    /* element */ nsGkAtoms::time,
    nsGkAtoms::datetime,
    nullptr,
    /* sentinel */ nullptr,
    // clang-format on
};

constexpr nsStaticAtom* kMathMLElementWithAttributes[] = {
    // clang-format off
    /* element */ nsGkAtoms::mo,
    nsGkAtoms::fence,
    nsGkAtoms::form,
    nsGkAtoms::largeop,
    nsGkAtoms::lspace,
    nsGkAtoms::maxsize,
    nsGkAtoms::minsize,
    nsGkAtoms::movablelimits,
    nsGkAtoms::rspace,
    nsGkAtoms::separator,
    nsGkAtoms::stretchy,
    nsGkAtoms::symmetric,
    nullptr,
    /* element */ nsGkAtoms::mover,
    nsGkAtoms::accent,
    nullptr,
    /* element */ nsGkAtoms::mpadded,
    nsGkAtoms::depth,
    nsGkAtoms::height,
    nsGkAtoms::lspace,
    nsGkAtoms::voffset,
    nsGkAtoms::width,
    nullptr,
    /* element */ nsGkAtoms::mspace,
    nsGkAtoms::depth,
    nsGkAtoms::height,
    nsGkAtoms::width,
    nullptr,
    /* element */ nsGkAtoms::mtd,
    nsGkAtoms::columnspan,
    nsGkAtoms::rowspan,
    nullptr,
    /* element */ nsGkAtoms::munder,
    nsGkAtoms::accentunder,
    nullptr,
    /* element */ nsGkAtoms::munderover,
    nsGkAtoms::accent,
    nsGkAtoms::accentunder,
    nullptr,
    /* sentinel */ nullptr,
    // clang-format on
};

constexpr nsStaticAtom* kSVGElementWithAttributes[] = {
    // clang-format off
    /* element */ nsGkAtoms::a,
    nsGkAtoms::href,
    nsGkAtoms::hreflang,
    nsGkAtoms::type,
    nullptr,
    /* element */ nsGkAtoms::circle,
    nsGkAtoms::cx,
    nsGkAtoms::cy,
    nsGkAtoms::pathLength,
    nsGkAtoms::r,
    nullptr,
    /* element */ nsGkAtoms::ellipse,
    nsGkAtoms::cx,
    nsGkAtoms::cy,
    nsGkAtoms::pathLength,
    nsGkAtoms::rx,
    nsGkAtoms::ry,
    nullptr,
    /* element */ nsGkAtoms::foreignObject,
    nsGkAtoms::height,
    nsGkAtoms::width,
    nsGkAtoms::x,
    nsGkAtoms::y,
    nullptr,
    /* element */ nsGkAtoms::line,
    nsGkAtoms::pathLength,
    nsGkAtoms::x1,
    nsGkAtoms::x2,
    nsGkAtoms::y1,
    nsGkAtoms::y2,
    nullptr,
    /* element */ nsGkAtoms::marker,
    nsGkAtoms::markerHeight,
    nsGkAtoms::markerUnits,
    nsGkAtoms::markerWidth,
    nsGkAtoms::orient,
    nsGkAtoms::preserveAspectRatio,
    nsGkAtoms::refX,
    nsGkAtoms::refY,
    nsGkAtoms::viewBox,
    nullptr,
    /* element */ nsGkAtoms::path,
    nsGkAtoms::d,
    nsGkAtoms::pathLength,
    nullptr,
    /* element */ nsGkAtoms::polygon,
    nsGkAtoms::pathLength,
    nsGkAtoms::points,
    nullptr,
    /* element */ nsGkAtoms::polyline,
    nsGkAtoms::pathLength,
    nsGkAtoms::points,
    nullptr,
    /* element */ nsGkAtoms::rect,
    nsGkAtoms::height,
    nsGkAtoms::pathLength,
    nsGkAtoms::rx,
    nsGkAtoms::ry,
    nsGkAtoms::width,
    nsGkAtoms::x,
    nsGkAtoms::y,
    nullptr,
    /* element */ nsGkAtoms::svg,
    nsGkAtoms::height,
    nsGkAtoms::preserveAspectRatio,
    nsGkAtoms::viewBox,
    nsGkAtoms::width,
    nsGkAtoms::x,
    nsGkAtoms::y,
    nullptr,
    /* element */ nsGkAtoms::text,
    nsGkAtoms::dx,
    nsGkAtoms::dy,
    nsGkAtoms::lengthAdjust,
    nsGkAtoms::rotate,
    nsGkAtoms::textLength,
    nsGkAtoms::x,
    nsGkAtoms::y,
    nullptr,
    /* element */ nsGkAtoms::textPath,
    nsGkAtoms::lengthAdjust,
    nsGkAtoms::method,
    nsGkAtoms::path,
    nsGkAtoms::side,
    nsGkAtoms::spacing,
    nsGkAtoms::startOffset,
    nsGkAtoms::textLength,
    nullptr,
    /* element */ nsGkAtoms::tspan,
    nsGkAtoms::dx,
    nsGkAtoms::dy,
    nsGkAtoms::lengthAdjust,
    nsGkAtoms::rotate,
    nsGkAtoms::textLength,
    nsGkAtoms::x,
    nsGkAtoms::y,
    nullptr,
    /* sentinel */ nullptr,
    // clang-format on
};

}  // namespace mozilla::dom::sanitizer

#endif  // mozilla_dom_SanitizerDefaultConfig_h
