diff --git a/third_party/iaccessible2/ia2_api_all.idl b/third_party/iaccessible2/ia2_api_all.idl
index 97bf11594646..07121230dc73 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
IAccessible2\n
IAccessible2_2\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
);
}
+
+/**
+ * @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)