// // Test: Replaces text in a contenteditable element with individual replacement strings. // // Note the order of the ranges is reversed, which is required for non-selection operations, like replace. // ce1.accessibilityParameterizedAttributeNames.has(AXTextOperation)='yes' ce1.AXValue='The quick brown fox jumps over the lazy dog' range_1={anchor: {:5, 0, down}, focus: {:5, 5, down}} range_2={anchor: {:8, 0, down}, focus: {:8, 4, down}} ce1.accessibilityAttributeValue(AXTextOperation, {AXTextOperationType: TextOperationReplacePreserveCase, AXTextOperationMarkerRanges: [range_2, range_1], AXTextOperationIndividualReplacementStrings: [Sleeping, HOPS]})=['Sleeping', 'HOPS'] AXSelectedTextChanged on AXTextArea AXValue='The quick brown fox HOPS over the Sleeping dog' AXTextSelectionDirection=AXTextSelectionDirectionUnknown AXTextSelectionGranularity=AXTextSelectionGranularityUnknown AXTextStateChangeType=AXTextStateChangeTypeSelectionMove ce1.AXSelectedTextMarkerRange={anchor: {:6, 4, down}, focus: {:6, 4, down}} ce1.AXValue='The quick brown fox HOPS over the Sleeping dog' // // Test: Replaces text in a contenteditable element with a single replacement string. // // Note the order of the ranges is reversed, which is required for non-selection operations, like replace. // ce2.accessibilityParameterizedAttributeNames.has(AXTextOperation)='yes' ce2.AXValue='The quick brown fox jumps over the lazy dog' range_1={anchor: {:13, 0, down}, focus: {:13, 3, down}} range_2={anchor: {:16, 0, down}, focus: {:16, 3, down}} ce2.accessibilityAttributeValue(AXTextOperation, {AXTextOperationType: TextOperationReplacePreserveCase, AXTextOperationMarkerRanges: [range_2, range_1], AXTextOperationReplacementString: replaced})=['replaced', 'replaced'] AXSelectedTextChanged on AXTextArea AXValue='replaced quick brown replaced jumps over the lazy dog' AXTextSelectionDirection=AXTextSelectionDirectionUnknown AXTextSelectionGranularity=AXTextSelectionGranularityUnknown AXTextStateChangeType=AXTextStateChangeTypeSelectionMove ce2.AXSelectedTextMarkerRange={anchor: {:14, 8, down}, focus: {:14, 8, down}} ce2.AXValue='replaced quick brown replaced jumps over the lazy dog' // // Test: Replaces text in a textarea. // textarea.accessibilityParameterizedAttributeNames.has(AXTextOperation)='yes' textarea.AXValue='Hello, World!' start={:19, 0, down} end={:19, 5, down} range={anchor: {:19, 0, down}, focus: {:19, 5, down}} textarea.accessibilityAttributeValue(AXTextOperation, {AXTextOperationType: TextOperationReplacePreserveCase, AXTextOperationMarkerRanges: [range], AXTextOperationReplacementString: Hey})=['Hey'] AXSelectedTextChanged on AXTextArea AXValue='Hey, World!' AXTextSelectionDirection=AXTextSelectionDirectionUnknown AXTextSelectionGranularity=AXTextSelectionGranularityUnknown AXTextStateChangeType=AXTextStateChangeTypeSelectionMove textarea.AXSelectedTextMarkerRange={anchor: {:19, 3, down}, focus: {:19, 3, down}} textarea.AXValue='Hey, World!' // // Test: Replaces text in an input field. // input.accessibilityParameterizedAttributeNames.has(AXTextOperation)='yes' input.AXValue='abc def' end={:20, 7, down} start={:20, 4, down} range={anchor: {:20, 4, down}, focus: {:20, 7, down}} input.accessibilityAttributeValue(AXTextOperation, {AXTextOperationType: TextOperationReplacePreserveCase, AXTextOperationMarkerRanges: [range], AXTextOperationIndividualReplacementStrings: [GHI]})=['GHI'] AXSelectedTextChanged on AXTextField AXValue='abc GHI' AXTextSelectionDirection=AXTextSelectionDirectionUnknown AXTextSelectionGranularity=AXTextSelectionGranularityUnknown AXTextStateChangeType=AXTextStateChangeTypeSelectionMove input.AXSelectedTextMarkerRange={anchor: {:20, 7, down}, focus: {:20, 7, down}} input.AXValue='abc GHI'