use serde::{Serialize, Deserialize};
use serde_json::Value as JsonValue;
pub type AXNodeId = String;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum AXValueType {
#[default]
Boolean,
Tristate,
BooleanOrUndefined,
Idref,
IdrefList,
Integer,
Node,
NodeList,
Number,
String,
ComputedString,
Token,
TokenList,
DomRelation,
Role,
InternalRole,
ValueUndefined,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum AXValueSourceType {
#[default]
Attribute,
Implicit,
Style,
Contents,
Placeholder,
RelatedElement,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum AXValueNativeSourceType {
#[default]
Description,
Figcaption,
Label,
Labelfor,
Labelwrapped,
Legend,
Rubyannotation,
Tablecaption,
Title,
Other,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AXValueSource {
#[serde(rename = "type")]
pub type_: AXValueSourceType,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<AXValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attribute: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub attributeValue: Option<AXValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub superseded: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nativeSource: Option<AXValueNativeSourceType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub nativeSourceValue: Option<AXValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invalid: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invalidReason: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AXRelatedNode {
pub backendDOMNodeId: crate::dom::BackendNodeId,
#[serde(skip_serializing_if = "Option::is_none")]
pub idref: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub text: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AXProperty {
pub name: AXPropertyName,
pub value: AXValue,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AXValue {
#[serde(rename = "type")]
pub type_: AXValueType,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<JsonValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub relatedNodes: Option<Vec<AXRelatedNode>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sources: Option<Vec<AXValueSource>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
pub enum AXPropertyName {
#[default]
Actions,
Busy,
Disabled,
Editable,
Focusable,
Focused,
Hidden,
HiddenRoot,
Invalid,
Keyshortcuts,
Settable,
Roledescription,
Live,
Atomic,
Relevant,
Root,
Autocomplete,
HasPopup,
Level,
Multiselectable,
Orientation,
Multiline,
Readonly,
Required,
Valuemin,
Valuemax,
Valuetext,
Checked,
Expanded,
Modal,
Pressed,
Selected,
Activedescendant,
Controls,
Describedby,
Details,
Errormessage,
Flowto,
Labelledby,
Owns,
Url,
ActiveFullscreenElement,
ActiveModalDialog,
ActiveAriaModalDialog,
AriaHiddenElement,
AriaHiddenSubtree,
EmptyAlt,
EmptyText,
InertElement,
InertSubtree,
LabelContainer,
LabelFor,
NotRendered,
NotVisible,
PresentationalRole,
ProbablyPresentational,
InactiveCarouselTabContent,
Uninteresting,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AXNode {
pub nodeId: AXNodeId,
pub ignored: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub ignoredReasons: Option<Vec<AXProperty>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub role: Option<AXValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub chromeRole: Option<AXValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<AXValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<AXValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub value: Option<AXValue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<Vec<AXProperty>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parentId: Option<AXNodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub childIds: Option<Vec<AXNodeId>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backendDOMNodeId: Option<crate::dom::BackendNodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub frameId: Option<crate::page::FrameId>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetPartialAXTreeParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub nodeId: Option<crate::dom::NodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backendNodeId: Option<crate::dom::BackendNodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub objectId: Option<crate::runtime::RemoteObjectId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub fetchRelatives: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetPartialAXTreeReturns {
pub nodes: Vec<AXNode>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetFullAXTreeParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub depth: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub frameId: Option<crate::page::FrameId>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetFullAXTreeReturns {
pub nodes: Vec<AXNode>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetRootAXNodeParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub frameId: Option<crate::page::FrameId>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetRootAXNodeReturns {
pub node: AXNode,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetAXNodeAndAncestorsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub nodeId: Option<crate::dom::NodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backendNodeId: Option<crate::dom::BackendNodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub objectId: Option<crate::runtime::RemoteObjectId>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetAXNodeAndAncestorsReturns {
pub nodes: Vec<AXNode>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetChildAXNodesParams {
pub id: AXNodeId,
#[serde(skip_serializing_if = "Option::is_none")]
pub frameId: Option<crate::page::FrameId>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct GetChildAXNodesReturns {
pub nodes: Vec<AXNode>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct QueryAXTreeParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub nodeId: Option<crate::dom::NodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backendNodeId: Option<crate::dom::BackendNodeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub objectId: Option<crate::runtime::RemoteObjectId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub accessibleName: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub role: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct QueryAXTreeReturns {
pub nodes: Vec<AXNode>,
}