chromium/third_party/iaccessible2/set_selection_ranges.patch

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)