| diff --git a/third_party/iaccessible2/ia2_api_all.idl b/third_party/iaccessible2/ia2_api_all.idl |
| index dd7ddf72b5ba1..c8b3f354d96d8 100644 |
| --- a/third_party/iaccessible2/ia2_api_all.idl |
| +++ b/third_party/iaccessible2/ia2_api_all.idl |
| @@ -1324,7 +1324,8 @@ IA2_STATE_PINNED = 0x80000 |
| @section _interfaces Interfaces |
| IAccessible2\n |
| IAccessible2_2\n |
| - IAccessible2_3 [Deprecated]\n |
| + IAccessible2_3\n |
| + IAccessible2_4\n |
| IAccessibleAction\n |
| IAccessibleApplication\n |
| IAccessibleComponent\n |
| @@ -2085,6 +2086,81 @@ interface IAccessible2_2 : IAccessible2 |
| |
| } |
| |
| +/** |
| + * This structure represents a directional range of the content. It is defined |
| + * by two points in the content, where each one is defined by an accessible |
| + * object and an offset relative to it. A typical case of a range point is |
| + * a text accessible and text offset within it. |
| + * |
| + * The "anchor" is one point of the range and typically remains constant. |
| + * The other point is the "active" point, which typically corresponds to |
| + * the user's focus or point of interest. The user moves the active point to |
| + * expand or collapse the range. In most cases, anchor is the start of the range |
| + * and active is the end. However, in case of selection, when selecting |
| + * backwards (e.g. pressing shift+left arrow in a text field), the start of |
| + * the range is the active point, as the user moves this to manipulate |
| + * the selection. |
| + */ |
| +typedef struct IA2Range { |
| + IUnknown* anchor; |
| + long anchorOffset; |
| + IUnknown* active; |
| + long activeOffset; |
| +} IA2Range; |
| + |
| +/** |
| + * @brief This interface is an extension of IAccessible2_2 and IAccessible2 |
| + * interfaces. |
| + */ |
| +[object, uuid(5BE18059-762E-4E73-9476-ABA294FED411)] |
| +interface IAccessible2_3 : IAccessible2_2 |
| +{ |
| + /** |
| + * @brief Returns an array of ranges for selections within the accessible. |
| + * @param [out] ranges |
| + The array of selection ranges, allocated by the server. The client must |
| + free it with CoTaskMemFree. |
| + * @param [out] nRanges |
| + the array length |
| + * @retval S_OK |
| + * @retval S_FALSE returned if there is no selection within the accessible |
| + */ |
| + [propget] HRESULT selectionRanges |
| + ( |
| + [out, size_is(,*nRanges)] IA2Range **ranges, |
| + [out, retval] long *nRanges |
| + ); |
| +} |
| + |
| +/** |
| + * @brief This interface is an extension of IAccessible2_3 which exposes a |
| + * single method for setting the current selection given a number of selection |
| + * ranges. |
| + * |
| + * This interface is preliminary as it has not been adopted by any standard yet. |
| + */ |
| +[object, uuid(610a7bec-91bb-444d-a336-a0daf13c4c29)] |
| +interface IAccessible2_4 : IAccessible2_3 |
| +{ |
| + /** |
| + * @brief Sets the current selection to the provided ranges. The provided |
| + * ranges don't need to be contained within this accessible. |
| + * @param [in] nRanges |
| + * The length of the array containing the selection ranges. |
| + * @param [in] ranges |
| + * The array of selection ranges, allocated by the client with |
| + * CoTaskMemAlloc and freed by the client with CoTaskMemFree. |
| + * @retval S_OK Returned if the selection was made successfully. |
| + * @retval S_FALSE Returned if the selection could not be made. |
| + * @retval E_INVALIDARG Returned if any of the input arguments are invalid. |
| + */ |
| + HRESULT setSelectionRanges |
| + ( |
| + [in] long nRanges, |
| + [in, size_is(nRanges)] IA2Range* ranges |
| + ); |
| +} |
| + |
| /************************************************************************* |
| * |
| * File Name (AccessibleComponent.idl) |
| @@ -2209,6 +2285,7 @@ interface IAccessibleComponent : IUnknown |
| [out, retval] IA2Color *background |
| ); |
| } |
| + |
| /************************************************************************* |
| * |
| * File Name (AccessibleValue.idl) |
| @@ -5682,6 +5759,7 @@ library IAccessible2Lib |
| importlib ("oleacc.dll"); |
| interface IAccessible2; |
| interface IAccessible2_2; |
| + interface IAccessible2_3; |
| interface IAccessibleAction; |
| interface IAccessibleApplication; |
| interface IAccessibleComponent; |
| diff --git a/third_party/iaccessible2/set_selection_ranges.patch b/third_party/iaccessible2/set_selection_ranges.patch |
| index 17229419061ce..159ad89b234d2 100644 |
| --- a/third_party/iaccessible2/set_selection_ranges.patch |
| +++ b/third_party/iaccessible2/set_selection_ranges.patch |
| @@ -1,19 +1,66 @@ |
| diff --git a/third_party/iaccessible2/ia2_api_all.idl b/third_party/iaccessible2/ia2_api_all.idl |
| -index 97bf11594646..07121230dc73 100644 |
| +index dd7ddf72b5ba1..3c7ccf935f55e 100644 |
| --- a/third_party/iaccessible2/ia2_api_all.idl |
| +++ b/third_party/iaccessible2/ia2_api_all.idl |
| -@@ -1296,6 +1296,7 @@ IA2_STATE_PINNED = 0x80000 |
| +@@ -1324,7 +1324,8 @@ IA2_STATE_PINNED = 0x80000 |
| + @section _interfaces Interfaces |
| IAccessible2\n |
| IAccessible2_2\n |
| - IAccessible2_3\n |
| +- IAccessible2_3 [Deprecated]\n |
| ++ IAccessible2_3\n |
| + IAccessible2_4\n |
| IAccessibleAction\n |
| IAccessibleApplication\n |
| IAccessibleComponent\n |
| -@@ -2104,6 +2105,36 @@ interface IAccessible2_3 : IAccessible2_2 |
| - [out, retval] long *nRanges |
| - ); |
| +@@ -2085,6 +2086,81 @@ interface IAccessible2_2 : IAccessible2 |
| + |
| } |
| + |
| ++/** |
| ++ * This structure represents a directional range of the content. It is defined |
| ++ * by two points in the content, where each one is defined by an accessible |
| ++ * object and an offset relative to it. A typical case of a range point is |
| ++ * a text accessible and text offset within it. |
| ++ * |
| ++ * The "anchor" is one point of the range and typically remains constant. |
| ++ * The other point is the "active" point, which typically corresponds to |
| ++ * the user's focus or point of interest. The user moves the active point to |
| ++ * expand or collapse the range. In most cases, anchor is the start of the range |
| ++ * and active is the end. However, in case of selection, when selecting |
| ++ * backwards (e.g. pressing shift+left arrow in a text field), the start of |
| ++ * the range is the active point, as the user moves this to manipulate |
| ++ * the selection. |
| ++ */ |
| ++typedef struct IA2Range { |
| ++ IUnknown* anchor; |
| ++ long anchorOffset; |
| ++ IUnknown* active; |
| ++ long activeOffset; |
| ++} IA2Range; |
| ++ |
| ++/** |
| ++ * @brief This interface is an extension of IAccessible2_2 and IAccessible2 |
| ++ * interfaces. |
| ++ */ |
| ++[object, uuid(5BE18059-762E-4E73-9476-ABA294FED411)] |
| ++interface IAccessible2_3 : IAccessible2_2 |
| ++{ |
| ++ /** |
| ++ * @brief Returns an array of ranges for selections within the accessible. |
| ++ * @param [out] ranges |
| ++ The array of selection ranges, allocated by the server. The client must |
| ++ free it with CoTaskMemFree. |
| ++ * @param [out] nRanges |
| ++ the array length |
| ++ * @retval S_OK |
| ++ * @retval S_FALSE returned if there is no selection within the accessible |
| ++ */ |
| ++ [propget] HRESULT selectionRanges |
| ++ ( |
| ++ [out, size_is(,*nRanges)] IA2Range **ranges, |
| ++ [out, retval] long *nRanges |
| ++ ); |
| ++} |
| + |
| +/** |
| + * @brief This interface is an extension of IAccessible2_3 which exposes a |
| @@ -47,3 +94,277 @@ index 97bf11594646..07121230dc73 100644 |
| /************************************************************************* |
| * |
| * File Name (AccessibleComponent.idl) |
| +@@ -2209,6 +2285,7 @@ interface IAccessibleComponent : IUnknown |
| + [out, retval] IA2Color *background |
| + ); |
| + } |
| ++ |
| + /************************************************************************* |
| + * |
| + * File Name (AccessibleValue.idl) |
| +diff --git a/third_party/iaccessible2/set_selection_ranges.patch b/third_party/iaccessible2/set_selection_ranges.patch |
| +index 17229419061ce..688ea6c94f911 100644 |
| +--- a/third_party/iaccessible2/set_selection_ranges.patch |
| ++++ b/third_party/iaccessible2/set_selection_ranges.patch |
| +@@ -1,21 +1,69 @@ |
| + diff --git a/third_party/iaccessible2/ia2_api_all.idl b/third_party/iaccessible2/ia2_api_all.idl |
| +-index 97bf11594646..07121230dc73 100644 |
| ++index dd7ddf72b5ba1..cb32591e99b63 100644 |
| + --- a/third_party/iaccessible2/ia2_api_all.idl |
| + +++ b/third_party/iaccessible2/ia2_api_all.idl |
| +-@@ -1296,6 +1296,7 @@ IA2_STATE_PINNED = 0x80000 |
| ++@@ -1324,7 +1324,8 @@ IA2_STATE_PINNED = 0x80000 |
| ++ @section _interfaces Interfaces |
| + IAccessible2\n |
| + IAccessible2_2\n |
| +- IAccessible2_3\n |
| ++- IAccessible2_3 [Deprecated]\n |
| +++ IAccessible2_3\n |
| + + IAccessible2_4\n |
| + IAccessibleAction\n |
| + IAccessibleApplication\n |
| + IAccessibleComponent\n |
| +-@@ -2104,6 +2105,36 @@ interface IAccessible2_3 : IAccessible2_2 |
| +- [out, retval] long *nRanges |
| ++@@ -2209,6 +2210,82 @@ interface IAccessibleComponent : IUnknown |
| ++ [out, retval] IA2Color *background |
| + ); |
| + } |
| + + |
| + +/** |
| +++ * This structure represents a directional range of the content. It is defined |
| +++ * by two points in the content, where each one is defined by an accessible |
| +++ * object and an offset relative to it. A typical case of a range point is |
| +++ * a text accessible and text offset within it. |
| +++ * |
| +++ * The "anchor" is one point of the range and typically remains constant. |
| +++ * The other point is the "active" point, which typically corresponds to |
| +++ * the user's focus or point of interest. The user moves the active point to |
| +++ * expand or collapse the range. In most cases, anchor is the start of the range |
| +++ * and active is the end. However, in case of selection, when selecting |
| +++ * backwards (e.g. pressing shift+left arrow in a text field), the start of |
| +++ * the range is the active point, as the user moves this to manipulate |
| +++ * the selection. |
| +++ */ |
| +++typedef struct IA2Range { |
| +++ IUnknown* anchor; |
| +++ long anchorOffset; |
| +++ IUnknown* active; |
| +++ long activeOffset; |
| +++} IA2Range; |
| +++ |
| +++/** |
| +++ * @brief This interface is an extension of IAccessible2_2 and IAccessible2 |
| +++ * interfaces. |
| +++ */ |
| +++[object, uuid(5BE18059-762E-4E73-9476-ABA294FED411)] |
| +++interface IAccessible2_3 : IAccessible2_2 |
| +++{ |
| +++ /** |
| +++ * @brief Returns an array of ranges for selections within the accessible. |
| +++ * @param [out] ranges |
| +++ The array of selection ranges, allocated by the server. The client must |
| +++ free it with CoTaskMemFree. |
| +++ * @param [out] nRanges |
| +++ the array length |
| +++ * @retval S_OK |
| +++ * @retval S_FALSE returned if there is no selection within the accessible |
| +++ */ |
| +++ [propget] HRESULT selectionRanges |
| +++ ( |
| +++ [out, size_is(,*nRanges)] IA2Range **ranges, |
| +++ [out, retval] long *nRanges |
| +++ ); |
| +++} |
| +++ |
| +++/** |
| + + * @brief This interface is an extension of IAccessible2_3 which exposes a |
| + + * single method for setting the current selection given a number of selection |
| + + * ranges. |
| +@@ -46,4 +94,185 @@ index 97bf11594646..07121230dc73 100644 |
| + + |
| + /************************************************************************* |
| + * |
| +- * File Name (AccessibleComponent.idl) |
| ++ * File Name (AccessibleValue.idl) |
| ++diff --git a/third_party/iaccessible2/set_selection_ranges.patch b/third_party/iaccessible2/set_selection_ranges.patch |
| ++index 17229419061ce..7105fa56ee2be 100644 |
| ++--- a/third_party/iaccessible2/set_selection_ranges.patch |
| +++++ b/third_party/iaccessible2/set_selection_ranges.patch |
| ++@@ -1,21 +1,45 @@ |
| ++ diff --git a/third_party/iaccessible2/ia2_api_all.idl b/third_party/iaccessible2/ia2_api_all.idl |
| ++-index 97bf11594646..07121230dc73 100644 |
| +++index dd7ddf72b5ba1..dca6d6e201222 100644 |
| ++ --- a/third_party/iaccessible2/ia2_api_all.idl |
| ++ +++ b/third_party/iaccessible2/ia2_api_all.idl |
| ++-@@ -1296,6 +1296,7 @@ IA2_STATE_PINNED = 0x80000 |
| +++@@ -1324,7 +1324,8 @@ IA2_STATE_PINNED = 0x80000 |
| +++ @section _interfaces Interfaces |
| ++ IAccessible2\n |
| ++ IAccessible2_2\n |
| ++- IAccessible2_3\n |
| +++- IAccessible2_3 [Deprecated]\n |
| ++++ IAccessible2_3\n |
| ++ + IAccessible2_4\n |
| ++ IAccessibleAction\n |
| ++ IAccessibleApplication\n |
| ++ IAccessibleComponent\n |
| ++-@@ -2104,6 +2105,36 @@ interface IAccessible2_3 : IAccessible2_2 |
| ++- [out, retval] long *nRanges |
| +++@@ -2209,6 +2210,58 @@ interface IAccessibleComponent : IUnknown |
| +++ [out, retval] IA2Color *background |
| ++ ); |
| ++ } |
| ++ + |
| ++ +/** |
| ++++ * This structure represents a directional range of the content. It is defined |
| ++++ * by two points in the content, where each one is defined by an accessible |
| ++++ * object and an offset relative to it. A typical case of a range point is |
| ++++ * a text accessible and text offset within it. |
| ++++ * |
| ++++ * The "anchor" is one point of the range and typically remains constant. |
| ++++ * The other point is the "active" point, which typically corresponds to |
| ++++ * the user's focus or point of interest. The user moves the active point to |
| ++++ * expand or collapse the range. In most cases, anchor is the start of the range |
| ++++ * and active is the end. However, in case of selection, when selecting |
| ++++ * backwards (e.g. pressing shift+left arrow in a text field), the start of |
| ++++ * the range is the active point, as the user moves this to manipulate |
| ++++ * the selection. |
| ++++ */ |
| ++++typedef struct IA2Range { |
| ++++ IUnknown* anchor; |
| ++++ long anchorOffset; |
| ++++ IUnknown* active; |
| ++++ long activeOffset; |
| ++++} IA2Range; |
| ++++ |
| ++++/** |
| ++ + * @brief This interface is an extension of IAccessible2_3 which exposes a |
| ++ + * single method for setting the current selection given a number of selection |
| ++ + * ranges. |
| ++@@ -46,4 +70,124 @@ index 97bf11594646..07121230dc73 100644 |
| ++ + |
| ++ /************************************************************************* |
| ++ * |
| ++- * File Name (AccessibleComponent.idl) |
| +++ * File Name (AccessibleValue.idl) |
| +++diff --git a/third_party/iaccessible2/set_selection_ranges.patch b/third_party/iaccessible2/set_selection_ranges.patch |
| +++index 17229419061ce..754c46e4c2067 100644 |
| +++--- a/third_party/iaccessible2/set_selection_ranges.patch |
| ++++++ b/third_party/iaccessible2/set_selection_ranges.patch |
| +++@@ -1,21 +1,45 @@ |
| +++ diff --git a/third_party/iaccessible2/ia2_api_all.idl b/third_party/iaccessible2/ia2_api_all.idl |
| +++-index 97bf11594646..07121230dc73 100644 |
| ++++index dd7ddf72b5ba1..433965f8a77f6 100644 |
| +++ --- a/third_party/iaccessible2/ia2_api_all.idl |
| +++ +++ b/third_party/iaccessible2/ia2_api_all.idl |
| +++-@@ -1296,6 +1296,7 @@ IA2_STATE_PINNED = 0x80000 |
| ++++@@ -1324,7 +1324,8 @@ IA2_STATE_PINNED = 0x80000 |
| ++++ @section _interfaces Interfaces |
| +++ IAccessible2\n |
| +++ IAccessible2_2\n |
| +++- IAccessible2_3\n |
| ++++- IAccessible2_3 [Deprecated]\n |
| +++++ IAccessible2_3 |
| +++ + IAccessible2_4\n |
| +++ IAccessibleAction\n |
| +++ IAccessibleApplication\n |
| +++ IAccessibleComponent\n |
| +++-@@ -2104,6 +2105,36 @@ interface IAccessible2_3 : IAccessible2_2 |
| +++- [out, retval] long *nRanges |
| ++++@@ -2209,6 +2210,58 @@ interface IAccessibleComponent : IUnknown |
| ++++ [out, retval] IA2Color *background |
| +++ ); |
| +++ } |
| +++ + |
| +++ +/** |
| +++++ * This structure represents a directional range of the content. It is defined |
| +++++ * by two points in the content, where each one is defined by an accessible |
| +++++ * object and an offset relative to it. A typical case of a range point is |
| +++++ * a text accessible and text offset within it. |
| +++++ * |
| +++++ * The "anchor" is one point of the range and typically remains constant. |
| +++++ * The other point is the "active" point, which typically corresponds to |
| +++++ * the user's focus or point of interest. The user moves the active point to |
| +++++ * expand or collapse the range. In most cases, anchor is the start of the range |
| +++++ * and active is the end. However, in case of selection, when selecting |
| +++++ * backwards (e.g. pressing shift+left arrow in a text field), the start of |
| +++++ * the range is the active point, as the user moves this to manipulate |
| +++++ * the selection. |
| +++++ */ |
| +++++typedef struct IA2Range { |
| +++++ IUnknown* anchor; |
| +++++ long anchorOffset; |
| +++++ IUnknown* active; |
| +++++ long activeOffset; |
| +++++} IA2Range; |
| +++++ |
| +++++/** |
| +++ + * @brief This interface is an extension of IAccessible2_3 which exposes a |
| +++ + * single method for setting the current selection given a number of selection |
| +++ + * ranges. |
| +++@@ -46,4 +70,63 @@ index 97bf11594646..07121230dc73 100644 |
| +++ + |
| +++ /************************************************************************* |
| +++ * |
| +++- * File Name (AccessibleComponent.idl) |
| ++++ * File Name (AccessibleValue.idl) |
| ++++diff --git a/third_party/iaccessible2/set_selection_ranges.patch b/third_party/iaccessible2/set_selection_ranges.patch |
| ++++index 17229419061ce..3e2081010d688 100644 |
| ++++--- a/third_party/iaccessible2/set_selection_ranges.patch |
| +++++++ b/third_party/iaccessible2/set_selection_ranges.patch |
| ++++@@ -1,21 +1,43 @@ |
| ++++ diff --git a/third_party/iaccessible2/ia2_api_all.idl b/third_party/iaccessible2/ia2_api_all.idl |
| ++++-index 97bf11594646..07121230dc73 100644 |
| +++++index dd7ddf72b5ba1..bb6602208e69b 100644 |
| ++++ --- a/third_party/iaccessible2/ia2_api_all.idl |
| ++++ +++ b/third_party/iaccessible2/ia2_api_all.idl |
| ++++-@@ -1296,6 +1296,7 @@ IA2_STATE_PINNED = 0x80000 |
| +++++@@ -1325,6 +1325,7 @@ IA2_STATE_PINNED = 0x80000 |
| ++++ IAccessible2\n |
| ++++ IAccessible2_2\n |
| ++++- IAccessible2_3\n |
| +++++ IAccessible2_3 [Deprecated]\n |
| ++++ + IAccessible2_4\n |
| ++++ IAccessibleAction\n |
| ++++ IAccessibleApplication\n |
| ++++ IAccessibleComponent\n |
| ++++-@@ -2104,6 +2105,36 @@ interface IAccessible2_3 : IAccessible2_2 |
| ++++- [out, retval] long *nRanges |
| +++++@@ -2209,6 +2210,58 @@ interface IAccessibleComponent : IUnknown |
| +++++ [out, retval] IA2Color *background |
| ++++ ); |
| ++++ } |
| ++++ + |
| ++++ +/** |
| ++++++ * This structure represents a directional range of the content. It is defined |
| ++++++ * by two points in the content, where each one is defined by an accessible |
| ++++++ * object and an offset relative to it. A typical case of a range point is |
| ++++++ * a text accessible and text offset within it. |
| ++++++ * |
| ++++++ * The "anchor" is one point of the range and typically remains constant. |
| ++++++ * The other point is the "active" point, which typically corresponds to |
| ++++++ * the user's focus or point of interest. The user moves the active point to |
| ++++++ * expand or collapse the range. In most cases, anchor is the start of the range |
| ++++++ * and active is the end. However, in case of selection, when selecting |
| ++++++ * backwards (e.g. pressing shift+left arrow in a text field), the start of |
| ++++++ * the range is the active point, as the user moves this to manipulate |
| ++++++ * the selection. |
| ++++++ */ |
| ++++++typedef struct IA2Range { |
| ++++++ IUnknown* anchor; |
| ++++++ long anchorOffset; |
| ++++++ IUnknown* active; |
| ++++++ long activeOffset; |
| ++++++} IA2Range; |
| ++++++ |
| ++++++/** |
| ++++ + * @brief This interface is an extension of IAccessible2_3 which exposes a |
| ++++ + * single method for setting the current selection given a number of selection |
| ++++ + * ranges. |
| ++++@@ -46,4 +68,4 @@ index 97bf11594646..07121230dc73 100644 |
| ++++ + |
| ++++ /************************************************************************* |
| ++++ * |
| ++++- * File Name (AccessibleComponent.idl) |
| +++++ * File Name (AccessibleValue.idl) |