blob: 64a2b289606930ecf95ab735436a1f87962dec62 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/accessibility/platform/ax_platform_text_boundary.h"
namespace ui {
#if BUILDFLAG(USE_ATK)
AXTextBoundary FromAtkTextBoundary(AtkTextBoundary boundary) {
// These are listed in order of their definition in the ATK header.
switch (boundary) {
case ATK_TEXT_BOUNDARY_CHAR:
return AXTextBoundary::kCharacter;
case ATK_TEXT_BOUNDARY_WORD_START:
return AXTextBoundary::kWordStart;
case ATK_TEXT_BOUNDARY_WORD_END:
return AXTextBoundary::kWordEnd;
case ATK_TEXT_BOUNDARY_SENTENCE_START:
return AXTextBoundary::kSentenceStart;
case ATK_TEXT_BOUNDARY_SENTENCE_END:
return AXTextBoundary::kSentenceEnd;
case ATK_TEXT_BOUNDARY_LINE_START:
return AXTextBoundary::kLineStart;
case ATK_TEXT_BOUNDARY_LINE_END:
return AXTextBoundary::kLineEnd;
}
}
#if ATK_CHECK_VERSION(2, 10, 0)
AXTextBoundary FromAtkTextGranularity(AtkTextGranularity granularity) {
// These are listed in order of their definition in the ATK header.
switch (granularity) {
case ATK_TEXT_GRANULARITY_CHAR:
return AXTextBoundary::kCharacter;
case ATK_TEXT_GRANULARITY_WORD:
return AXTextBoundary::kWordStart;
case ATK_TEXT_GRANULARITY_SENTENCE:
return AXTextBoundary::kSentenceStart;
case ATK_TEXT_GRANULARITY_LINE:
return AXTextBoundary::kLineStart;
case ATK_TEXT_GRANULARITY_PARAGRAPH:
return AXTextBoundary::kParagraphStart;
}
}
#endif // ATK_CHECK_VERSION(2, 10, 0)
#endif // BUILDFLAG(USE_ATK)
#ifdef OS_WIN
AXTextBoundary FromIA2TextBoundary(IA2TextBoundaryType boundary) {
switch (boundary) {
case IA2_TEXT_BOUNDARY_CHAR:
return AXTextBoundary::kCharacter;
case IA2_TEXT_BOUNDARY_WORD:
return AXTextBoundary::kWordStart;
case IA2_TEXT_BOUNDARY_LINE:
return AXTextBoundary::kLineStart;
case IA2_TEXT_BOUNDARY_SENTENCE:
return AXTextBoundary::kSentenceStart;
case IA2_TEXT_BOUNDARY_PARAGRAPH:
return AXTextBoundary::kParagraphStart;
case IA2_TEXT_BOUNDARY_ALL:
return AXTextBoundary::kObject;
}
}
AXTextBoundary FromUIATextUnit(TextUnit unit) {
// These are listed in order of their definition in the Microsoft
// documentation.
switch (unit) {
case TextUnit_Character:
return AXTextBoundary::kCharacter;
case TextUnit_Format:
return AXTextBoundary::kFormatChange;
case TextUnit_Word:
return AXTextBoundary::kWordStart;
case TextUnit_Line:
return AXTextBoundary::kLineStart;
case TextUnit_Paragraph:
return AXTextBoundary::kParagraphStart;
case TextUnit_Page:
// UI Automation's TextUnit_Page cannot be reliably supported in a Web
// document. We return kWebPage which is the next best thing.
case TextUnit_Document:
return AXTextBoundary::kWebPage;
}
}
#endif // OS_WIN
} // namespace ui