blob: c5a1208590f98dc2161b0a371e6c7b4881c313b7 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "pdf/pdf_accessibility_constants_helper.h"
#include "base/containers/fixed_flat_map.h"
namespace chrome_pdf {
// Please keep the entries in the same order as the `PdfTagType` enum.
constexpr auto kStringToPdfTagTypeMap =
base::MakeFixedFlatMap<std::string_view, PdfTagType>(
{{"", PdfTagType::kNone},
{kPDFStructureTypeDocument, PdfTagType::kDocument},
{kPDFStructureTypePart, PdfTagType::kPart},
{kPDFStructureTypeArticle, PdfTagType::kArt},
{kPDFStructureTypeSect, PdfTagType::kSect},
{kPDFStructureTypeDiv, PdfTagType::kDiv},
{kPDFStructureTypeBlockQuote, PdfTagType::kBlockQuote},
{kPDFStructureTypeCaption, PdfTagType::kCaption},
{kPDFStructureTypeTOC, PdfTagType::kTOC},
{kPDFStructureTypeTOCI, PdfTagType::kTOCI},
{kPDFStructureTypeIndex, PdfTagType::kIndex},
{kPDFStructureTypeParagraph, PdfTagType::kP},
{kPDFStructureTypeHeading, PdfTagType::kH},
{kPDFStructureTypeH1, PdfTagType::kH1},
{kPDFStructureTypeH2, PdfTagType::kH2},
{kPDFStructureTypeH3, PdfTagType::kH3},
{kPDFStructureTypeH4, PdfTagType::kH4},
{kPDFStructureTypeH5, PdfTagType::kH5},
{kPDFStructureTypeH6, PdfTagType::kH6},
{kPDFStructureTypeList, PdfTagType::kL},
{kPDFStructureTypeListItemBody, PdfTagType::kLI},
{kPDFStructureTypeListItemLabel, PdfTagType::kLbl},
{kPDFStructureTypeListBody, PdfTagType::kLBody},
{kPDFStructureTypeTable, PdfTagType::kTable},
{kPDFStructureTypeTableRow, PdfTagType::kTR},
{kPDFStructureTypeTableHeader, PdfTagType::kTH},
{kPDFStructureTypeTableHead, PdfTagType::kTHead},
{kPDFStructureTypeTableBody, PdfTagType::kTBody},
{kPDFStructureTypeTableFoot, PdfTagType::kTFoot},
{kPDFStructureTypeTableCell, PdfTagType::kTD},
{kPDFStructureTypeSpan, PdfTagType::kSpan},
{kPDFStructureTypeLink, PdfTagType::kLink},
{kPDFStructureTypeFigure, PdfTagType::kFigure},
{kPDFStructureTypeFormula, PdfTagType::kFormula},
{kPDFStructureTypeForm, PdfTagType::kForm}});
static_assert(kStringToPdfTagTypeMap.size() ==
static_cast<size_t>(PdfTagType::kUnknown));
PdfTagType PdfTagTypeFromString(const std::string& tag_type) {
if (auto iter = kStringToPdfTagTypeMap.find(tag_type);
iter != kStringToPdfTagTypeMap.end()) {
return iter->second;
}
return PdfTagType::kUnknown;
}
const base::fixed_flat_map<std::string_view, PdfTagType, 35>&
GetPdfTagTypeMap() {
return kStringToPdfTagTypeMap;
}
} // namespace chrome_pdf