[go: nahoru, domu]

blob: 43850952f9c7d8b8d23a68952cd9a69386d9c1bc [file] [log] [blame]
// Copyright 2020 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 "extensions/renderer/api/automation/automation_position.h"
#include "gin/arguments.h"
#include "gin/object_template_builder.h"
#include "ui/accessibility/ax_node.h"
namespace extensions {
AutomationPosition::AutomationPosition(const ui::AXNode& node,
int offset,
bool is_upstream) {
position_ = ui::AXNodePosition::CreatePosition(
node, offset,
is_upstream ? ax::mojom::TextAffinity::kUpstream
: ax::mojom::TextAffinity::kDownstream);
}
AutomationPosition::~AutomationPosition() = default;
// static
gin::WrapperInfo AutomationPosition::kWrapperInfo = {gin::kEmbedderNativeGin};
gin::ObjectTemplateBuilder AutomationPosition::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
return Wrappable<AutomationPosition>::GetObjectTemplateBuilder(isolate)
.SetProperty("treeID", &AutomationPosition::GetTreeID)
.SetProperty("anchorID", &AutomationPosition::GetAnchorID)
.SetProperty("childIndex", &AutomationPosition::GetChildIndex)
.SetProperty("textOffset", &AutomationPosition::GetTextOffset)
.SetProperty("affinity", &AutomationPosition::GetAffinity)
.SetMethod("isNullPosition", &AutomationPosition::IsNullPosition)
.SetMethod("isTreePosition", &AutomationPosition::IsTreePosition)
.SetMethod("isTextPosition", &AutomationPosition::IsTextPosition)
.SetMethod("isLeafTextPosition", &AutomationPosition::IsLeafTextPosition)
.SetMethod("atStartOfAnchor", &AutomationPosition::AtStartOfAnchor)
.SetMethod("atEndOfAnchor", &AutomationPosition::AtEndOfAnchor)
.SetMethod("atStartOfWord", &AutomationPosition::AtStartOfWord)
.SetMethod("atEndOfWord", &AutomationPosition::AtEndOfWord)
.SetMethod("atStartOfLine", &AutomationPosition::AtStartOfLine)
.SetMethod("atEndOfLine", &AutomationPosition::AtEndOfLine)
.SetMethod("atStartOfParagraph", &AutomationPosition::AtStartOfParagraph)
.SetMethod("atEndOfParagraph", &AutomationPosition::AtEndOfParagraph)
.SetMethod("atStartOfPage", &AutomationPosition::AtStartOfPage)
.SetMethod("atEndOfPage", &AutomationPosition::AtEndOfPage)
.SetMethod("atStartOfFormat", &AutomationPosition::AtStartOfFormat)
.SetMethod("atEndOfFormat", &AutomationPosition::AtEndOfFormat)
.SetMethod("atStartOfContent", &AutomationPosition::AtStartOfContent)
.SetMethod("atEndOfContent", &AutomationPosition::AtEndOfContent)
.SetMethod("asTreePosition", &AutomationPosition::AsTreePosition)
.SetMethod("asTextPosition", &AutomationPosition::AsTextPosition)
.SetMethod("asLeafTextPosition", &AutomationPosition::AsLeafTextPosition)
.SetMethod("moveToPositionAtStartOfAnchor",
&AutomationPosition::MoveToPositionAtStartOfAnchor)
.SetMethod("moveToPositionAtEndOfAnchor",
&AutomationPosition::MoveToPositionAtEndOfAnchor)
.SetMethod("moveToPositionAtStartOfContent",
&AutomationPosition::MoveToPositionAtStartOfContent)
.SetMethod("moveToPositionAtEndOfContent",
&AutomationPosition::MoveToPositionAtEndOfContent)
.SetMethod("moveToParentPosition",
&AutomationPosition::MoveToParentPosition)
.SetMethod("moveToNextLeafTreePosition",
&AutomationPosition::MoveToNextLeafTreePosition)
.SetMethod("moveToPreviousLeafTreePosition",
&AutomationPosition::MoveToPreviousLeafTreePosition)
.SetMethod("moveToNextLeafTextPosition",
&AutomationPosition::MoveToNextLeafTextPosition)
.SetMethod("moveToPreviousLeafTextPosition",
&AutomationPosition::MoveToPreviousLeafTextPosition)
.SetMethod("moveToNextCharacterPosition",
&AutomationPosition::MoveToNextCharacterPosition)
.SetMethod("moveToPreviousCharacterPosition",
&AutomationPosition::MoveToPreviousCharacterPosition)
.SetMethod("moveToNextWordStartPosition",
&AutomationPosition::MoveToNextWordStartPosition)
.SetMethod("moveToPreviousWordStartPosition",
&AutomationPosition::MoveToPreviousWordStartPosition)
.SetMethod("moveToNextWordEndPosition",
&AutomationPosition::MoveToNextWordEndPosition)
.SetMethod("moveToPreviousWordEndPosition",
&AutomationPosition::MoveToPreviousWordEndPosition)
.SetMethod("moveToNextLineStartPosition",
&AutomationPosition::MoveToNextLineStartPosition)
.SetMethod("moveToPreviousLineStartPosition",
&AutomationPosition::MoveToPreviousLineStartPosition)
.SetMethod("moveToNextLineEndPosition",
&AutomationPosition::MoveToNextLineEndPosition)
.SetMethod("moveToPreviousLineEndPosition",
&AutomationPosition::MoveToPreviousLineEndPosition)
.SetMethod("moveToPreviousFormatStartPosition",
&AutomationPosition::MoveToPreviousFormatStartPosition)
.SetMethod("moveToNextFormatEndPosition",
&AutomationPosition::MoveToNextFormatEndPosition)
.SetMethod("moveToNextParagraphStartPosition",
&AutomationPosition::MoveToNextParagraphStartPosition)
.SetMethod("moveToPreviousParagraphStartPosition",
&AutomationPosition::MoveToPreviousParagraphStartPosition)
.SetMethod("moveToNextParagraphEndPosition",
&AutomationPosition::MoveToNextParagraphEndPosition)
.SetMethod("moveToPreviousParagraphEndPosition",
&AutomationPosition::MoveToPreviousParagraphEndPosition)
.SetMethod("moveToNextPageStartPosition",
&AutomationPosition::MoveToNextPageStartPosition)
.SetMethod("moveToPreviousPageStartPosition",
&AutomationPosition::MoveToPreviousPageStartPosition)
.SetMethod("moveToNextPageEndPosition",
&AutomationPosition::MoveToNextPageEndPosition)
.SetMethod("moveToPreviousPageEndPosition",
&AutomationPosition::MoveToPreviousPageEndPosition)
.SetMethod("moveToNextAnchorPosition",
&AutomationPosition::MoveToNextAnchorPosition)
.SetMethod("moveToPreviousAnchorPosition",
&AutomationPosition::MoveToPreviousAnchorPosition)
.SetMethod("maxTextOffset", &AutomationPosition::MaxTextOffset)
.SetMethod("isInLineBreak", &AutomationPosition::IsInLineBreak)
.SetMethod("isInTextObject", &AutomationPosition::IsInTextObject)
.SetMethod("isInWhiteSpace", &AutomationPosition::IsInWhiteSpace)
.SetMethod("isValid", &AutomationPosition::IsValid)
.SetMethod("getText", &AutomationPosition::GetText);
}
std::string AutomationPosition::GetTreeID(gin::Arguments* arguments) {
return position_->tree_id().ToString();
}
int AutomationPosition::GetAnchorID(gin::Arguments* arguments) {
return position_->anchor_id();
}
int AutomationPosition::GetChildIndex(gin::Arguments* arguments) {
return position_->child_index();
}
int AutomationPosition::GetTextOffset(gin::Arguments* arguments) {
return position_->text_offset();
}
std::string AutomationPosition::GetAffinity(gin::Arguments* arguments) {
return ui::ToString(position_->affinity());
}
bool AutomationPosition::IsNullPosition(gin::Arguments* arguments) {
return position_->IsNullPosition();
}
bool AutomationPosition::IsTreePosition(gin::Arguments* arguments) {
return position_->IsTreePosition();
}
bool AutomationPosition::IsTextPosition(gin::Arguments* arguments) {
return position_->IsTextPosition();
}
bool AutomationPosition::IsLeafTextPosition(gin::Arguments* arguments) {
return position_->IsLeafTextPosition();
}
bool AutomationPosition::AtStartOfAnchor(gin::Arguments* arguments) {
return position_->AtStartOfAnchor();
}
bool AutomationPosition::AtEndOfAnchor(gin::Arguments* arguments) {
return position_->AtEndOfAnchor();
}
bool AutomationPosition::AtStartOfWord(gin::Arguments* arguments) {
return position_->AtStartOfWord();
}
bool AutomationPosition::AtEndOfWord(gin::Arguments* arguments) {
return position_->AtEndOfWord();
}
bool AutomationPosition::AtStartOfLine(gin::Arguments* arguments) {
return position_->AtStartOfLine();
}
bool AutomationPosition::AtEndOfLine(gin::Arguments* arguments) {
return position_->AtEndOfLine();
}
bool AutomationPosition::AtStartOfParagraph(gin::Arguments* arguments) {
return position_->AtStartOfParagraph();
}
bool AutomationPosition::AtEndOfParagraph(gin::Arguments* arguments) {
return position_->AtEndOfParagraph();
}
bool AutomationPosition::AtStartOfPage(gin::Arguments* arguments) {
return position_->AtStartOfPage();
}
bool AutomationPosition::AtEndOfPage(gin::Arguments* arguments) {
return position_->AtEndOfPage();
}
bool AutomationPosition::AtStartOfFormat(gin::Arguments* arguments) {
return position_->AtStartOfFormat();
}
bool AutomationPosition::AtEndOfFormat(gin::Arguments* arguments) {
return position_->AtEndOfFormat();
}
bool AutomationPosition::AtStartOfContent(gin::Arguments* arguments) {
return position_->AtStartOfContent();
}
bool AutomationPosition::AtEndOfContent(gin::Arguments* arguments) {
return position_->AtEndOfContent();
}
void AutomationPosition::AsTreePosition(gin::Arguments* arguments) {
position_ = position_->AsTreePosition();
}
void AutomationPosition::AsTextPosition(gin::Arguments* arguments) {
position_ = position_->AsTextPosition();
}
void AutomationPosition::AsLeafTextPosition(gin::Arguments* arguments) {
position_ = position_->AsLeafTextPosition();
}
void AutomationPosition::MoveToPositionAtStartOfAnchor(
gin::Arguments* arguments) {
position_ = position_->CreatePositionAtStartOfAnchor();
}
void AutomationPosition::MoveToPositionAtEndOfAnchor(
gin::Arguments* arguments) {
position_ = position_->CreatePositionAtEndOfAnchor();
}
void AutomationPosition::MoveToPositionAtStartOfContent(
gin::Arguments* arguments) {
position_ = position_->CreatePositionAtStartOfContent();
}
void AutomationPosition::MoveToPositionAtEndOfContent(
gin::Arguments* arguments) {
position_ = position_->CreatePositionAtEndOfContent();
}
void AutomationPosition::MoveToParentPosition(gin::Arguments* arguments) {
position_ = position_->CreateParentPosition();
}
void AutomationPosition::MoveToNextLeafTreePosition(gin::Arguments* arguments) {
position_ = position_->CreateNextLeafTreePosition();
}
void AutomationPosition::MoveToPreviousLeafTreePosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousLeafTreePosition();
}
void AutomationPosition::MoveToNextLeafTextPosition(gin::Arguments* arguments) {
position_ = position_->CreateNextLeafTextPosition();
}
void AutomationPosition::MoveToPreviousLeafTextPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousLeafTextPosition();
}
void AutomationPosition::MoveToNextCharacterPosition(
gin::Arguments* arguments) {
position_ = position_->CreateNextCharacterPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousCharacterPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousCharacterPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextWordStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreateNextWordStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousWordStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousWordStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextWordEndPosition(gin::Arguments* arguments) {
position_ = position_->CreateNextWordEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousWordEndPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousWordEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextLineStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreateNextLineStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousLineStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousLineStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextLineEndPosition(gin::Arguments* arguments) {
position_ = position_->CreateNextLineEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousLineEndPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousLineEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousFormatStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousFormatStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextFormatEndPosition(
gin::Arguments* arguments) {
position_ = position_->CreateNextFormatEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextParagraphStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreateNextParagraphStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousParagraphStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousParagraphStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextParagraphEndPosition(
gin::Arguments* arguments) {
position_ = position_->CreateNextParagraphEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousParagraphEndPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousParagraphEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextPageStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreateNextPageStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousPageStartPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousPageStartPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextPageEndPosition(gin::Arguments* arguments) {
position_ = position_->CreateNextPageEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToPreviousPageEndPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousPageEndPosition(
ui::AXBoundaryBehavior::CrossBoundary);
}
void AutomationPosition::MoveToNextAnchorPosition(gin::Arguments* arguments) {
position_ = position_->CreateNextAnchorPosition();
}
void AutomationPosition::MoveToPreviousAnchorPosition(
gin::Arguments* arguments) {
position_ = position_->CreatePreviousAnchorPosition();
}
int AutomationPosition::MaxTextOffset(gin::Arguments* arguments) {
return position_->MaxTextOffset();
}
bool AutomationPosition::IsInLineBreak(gin::Arguments* arguments) {
return position_->IsInLineBreak();
}
bool AutomationPosition::IsInTextObject(gin::Arguments* arguments) {
return position_->IsInTextObject();
}
bool AutomationPosition::IsInWhiteSpace(gin::Arguments* arguments) {
return position_->IsInWhiteSpace();
}
bool AutomationPosition::IsValid(gin::Arguments* arguments) {
return position_->IsValid();
}
std::u16string AutomationPosition::GetText(gin::Arguments* arguments) {
return position_->GetText();
}
} // namespace extensions