other-licenses/ia2/AccessibleTable2.idl

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

michael@0 1 /*************************************************************************
michael@0 2 *
michael@0 3 * File Name (AccessibleTable2.idl)
michael@0 4 *
michael@0 5 * IAccessible2 IDL Specification
michael@0 6 *
michael@0 7 * Copyright (c) 2007, 2012 Linux Foundation
michael@0 8 * Copyright (c) 2006 IBM Corporation
michael@0 9 * Copyright (c) 2000, 2006 Sun Microsystems, Inc.
michael@0 10 * All rights reserved.
michael@0 11 *
michael@0 12 *
michael@0 13 * Redistribution and use in source and binary forms, with or without
michael@0 14 * modification, are permitted provided that the following conditions
michael@0 15 * are met:
michael@0 16 *
michael@0 17 * 1. Redistributions of source code must retain the above copyright
michael@0 18 * notice, this list of conditions and the following disclaimer.
michael@0 19 *
michael@0 20 * 2. Redistributions in binary form must reproduce the above
michael@0 21 * copyright notice, this list of conditions and the following
michael@0 22 * disclaimer in the documentation and/or other materials
michael@0 23 * provided with the distribution.
michael@0 24 *
michael@0 25 * 3. Neither the name of the Linux Foundation nor the names of its
michael@0 26 * contributors may be used to endorse or promote products
michael@0 27 * derived from this software without specific prior written
michael@0 28 * permission.
michael@0 29 *
michael@0 30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
michael@0 31 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
michael@0 32 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@0 33 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
michael@0 34 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
michael@0 35 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@0 36 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
michael@0 37 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
michael@0 38 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
michael@0 39 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
michael@0 40 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
michael@0 41 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
michael@0 42 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
michael@0 43 *
michael@0 44 * This BSD License conforms to the Open Source Initiative "Simplified
michael@0 45 * BSD License" as published at:
michael@0 46 * http://www.opensource.org/licenses/bsd-license.php
michael@0 47 *
michael@0 48 * IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
michael@0 49 * mark may be used in accordance with the Linux Foundation Trademark
michael@0 50 * Policy to indicate compliance with the IAccessible2 specification.
michael@0 51 *
michael@0 52 ************************************************************************/
michael@0 53
michael@0 54 import "objidl.idl";
michael@0 55 import "oaidl.idl";
michael@0 56 import "oleacc.idl";
michael@0 57 import "Accessible2.idl";
michael@0 58 import "IA2CommonTypes.idl";
michael@0 59
michael@0 60 /** @brief This interface gives access to a two-dimensional table.
michael@0 61
michael@0 62 Please also refer to the IAccessibleTableCell interface.
michael@0 63
michael@0 64 If you want to support older applications you should also support the
michael@0 65 IAccessibleTable inteface.
michael@0 66 */
michael@0 67 [object, uuid(6167f295-06f0-4cdd-a1fa-02e25153d869)]
michael@0 68 interface IAccessibleTable2 : IUnknown
michael@0 69 {
michael@0 70
michael@0 71 /** @brief Returns the accessible object at the specified row and column in
michael@0 72 the table. This object could be an IAccessible or an IAccessible2.
michael@0 73 @param [in] row
michael@0 74 The 0 based row index for which to retrieve the cell.
michael@0 75 @param [in] column
michael@0 76 The 0 based column index for which to retrieve the cell.
michael@0 77 @param [out] cell
michael@0 78 If both row and column index are valid then the corresponding accessible
michael@0 79 object is returned that represents the requested cell regardless of whether
michael@0 80 the cell is currently visible (on the screen).
michael@0 81 @retval S_OK
michael@0 82 @retval E_INVALIDARG if bad [in] passed
michael@0 83 */
michael@0 84 [propget] HRESULT cellAt
michael@0 85 (
michael@0 86 [in] long row,
michael@0 87 [in] long column,
michael@0 88 [out, retval] IUnknown **cell
michael@0 89 );
michael@0 90
michael@0 91 /** @brief Returns the caption for the table. The returned object could be
michael@0 92 an IAccessible or an IAccessible2.
michael@0 93 @param [out] accessible
michael@0 94 If the table has a caption then a reference to it is returned, else a NULL
michael@0 95 pointer is returned.
michael@0 96 @retval S_OK
michael@0 97 @retval S_FALSE if there is nothing to return, [out] value is NULL
michael@0 98 @deprecated use a describedBy relation
michael@0 99 */
michael@0 100 [propget] HRESULT caption
michael@0 101 (
michael@0 102 [out, retval] IUnknown **accessible
michael@0 103 );
michael@0 104
michael@0 105 /** @brief Returns the description text of the specified column in the table.
michael@0 106 @param [in] column
michael@0 107 The 0 based index of the column for which to retrieve the description.
michael@0 108 @param [out] description
michael@0 109 Returns the description text of the specified column in the table if such a
michael@0 110 description exists. Otherwise a NULL pointer is returned.
michael@0 111 @retval S_OK
michael@0 112 @retval S_FALSE if there is nothing to return, [out] value is NULL
michael@0 113 @retval E_INVALIDARG if bad [in] passed
michael@0 114 */
michael@0 115 [propget] HRESULT columnDescription
michael@0 116 (
michael@0 117 [in] long column,
michael@0 118 [out, retval] BSTR *description
michael@0 119 );
michael@0 120
michael@0 121
michael@0 122 /** @brief Returns the total number of columns in table
michael@0 123 @param [out] columnCount
michael@0 124 Number of columns in table (including columns outside the current viewport)
michael@0 125 @retval S_OK
michael@0 126 */
michael@0 127 [propget] HRESULT nColumns
michael@0 128 (
michael@0 129 [out, retval] long *columnCount
michael@0 130 );
michael@0 131
michael@0 132 /** @brief Returns the total number of rows in table
michael@0 133 @param [out] rowCount
michael@0 134 Number of rows in table (including rows outside the current viewport)
michael@0 135 @retval S_OK
michael@0 136 */
michael@0 137 [propget] HRESULT nRows
michael@0 138 (
michael@0 139 [out, retval] long *rowCount
michael@0 140 );
michael@0 141
michael@0 142 /** @brief Returns the total number of selected cells
michael@0 143 @param [out] cellCount
michael@0 144 Number of cells currently selected
michael@0 145 @retval S_OK
michael@0 146 */
michael@0 147 [propget] HRESULT nSelectedCells
michael@0 148 (
michael@0 149 [out, retval] long *cellCount
michael@0 150 );
michael@0 151
michael@0 152 /** @brief Returns the total number of selected columns
michael@0 153 @param [out] columnCount
michael@0 154 Number of columns currently selected
michael@0 155 @retval S_OK
michael@0 156 */
michael@0 157 [propget] HRESULT nSelectedColumns
michael@0 158 (
michael@0 159 [out, retval] long *columnCount
michael@0 160 );
michael@0 161
michael@0 162 /** @brief Returns the total number of selected rows
michael@0 163 @param [out] rowCount
michael@0 164 Number of rows currently selected
michael@0 165 @retval S_OK
michael@0 166 */
michael@0 167 [propget] HRESULT nSelectedRows
michael@0 168 (
michael@0 169 [out, retval] long *rowCount
michael@0 170 );
michael@0 171
michael@0 172 /** @brief Returns the description text of the specified row in the table.
michael@0 173 @param [in] row
michael@0 174 The 0 based index of the row for which to retrieve the description.
michael@0 175 @param [out] description
michael@0 176 Returns the description text of the specified row in the table if such a
michael@0 177 description exists. Otherwise a NULL pointer is returned.
michael@0 178 @retval S_OK
michael@0 179 @retval S_FALSE if there is nothing to return, [out] value is NULL
michael@0 180 @retval E_INVALIDARG if bad [in] passed
michael@0 181 */
michael@0 182 [propget] HRESULT rowDescription
michael@0 183 (
michael@0 184 [in] long row,
michael@0 185 [out, retval] BSTR *description
michael@0 186 );
michael@0 187
michael@0 188 /** @brief Returns a list of accessibles currently selected.
michael@0 189 @param [out] cells
michael@0 190 Pointer to an array of references to selected accessibles. The array is
michael@0 191 allocated by the server with CoTaskMemAlloc and freed by the client with
michael@0 192 CoTaskMemFree.
michael@0 193 @param [out] nSelectedCells
michael@0 194 The number of accessibles returned; the size of the returned array.
michael@0 195 @retval S_OK
michael@0 196 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
michael@0 197 */
michael@0 198 [propget] HRESULT selectedCells
michael@0 199 (
michael@0 200 [out, size_is(,*nSelectedCells)] IUnknown ***cells,
michael@0 201 [out, retval] long *nSelectedCells
michael@0 202 );
michael@0 203
michael@0 204 /** @brief Returns a list of column indexes currently selected (0 based).
michael@0 205 @param [out] selectedColumns
michael@0 206 A pointer to an array of column indexes of selected columns (each index is
michael@0 207 0 based). The array is allocated by the server with CoTaskMemAlloc and
michael@0 208 freed by the client with CoTaskMemFree.
michael@0 209 @param [out] nColumns
michael@0 210 The number of column indexes returned; the size of the returned array.
michael@0 211 @retval S_OK
michael@0 212 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
michael@0 213 */
michael@0 214 [propget] HRESULT selectedColumns
michael@0 215 (
michael@0 216 [out, size_is(,*nColumns)] long **selectedColumns,
michael@0 217 [out, retval] long *nColumns
michael@0 218 );
michael@0 219
michael@0 220 /** @brief Returns a list of row indexes currently selected (0 based).
michael@0 221 @param [out] selectedRows
michael@0 222 An array of row indexes of selected rows (each index is 0 based). The array
michael@0 223 is allocated by the server with CoTaskMemAlloc and freed by the client with
michael@0 224 CoTaskMemFree.
michael@0 225 @param [out] nRows
michael@0 226 The number of row indexes returned; the size of the returned array.
michael@0 227 @retval S_OK
michael@0 228 @retval S_FALSE if there are none, [out] values are NULL and 0 respectively
michael@0 229 */
michael@0 230 [propget] HRESULT selectedRows
michael@0 231 (
michael@0 232 [out, size_is(,*nRows)] long **selectedRows,
michael@0 233 [out, retval] long *nRows
michael@0 234 );
michael@0 235
michael@0 236 /** @brief Returns the summary description of the table. The returned object could be
michael@0 237 an IAccessible or an IAccessible2.
michael@0 238 @param [out] accessible
michael@0 239 Returns a reference to an implementation dependent accessible object
michael@0 240 representing the table's summary or a NULL pointer if the table
michael@0 241 does not support a summary.
michael@0 242 @retval S_OK
michael@0 243 @retval S_FALSE if there is nothing to return, [out] value is NULL
michael@0 244 @deprecated Use the labeledBy relation
michael@0 245 */
michael@0 246 [propget] HRESULT summary
michael@0 247 (
michael@0 248 [out, retval] IUnknown **accessible
michael@0 249 );
michael@0 250
michael@0 251 /** @brief Returns a boolean value indicating whether the specified column is
michael@0 252 completely selected.
michael@0 253 @param [in] column
michael@0 254 0 based index of the column for which to determine whether it is selected.
michael@0 255 @param [out] isSelected
michael@0 256 Returns TRUE if the specified column is selected completely and FALSE otherwise.
michael@0 257 @retval S_OK
michael@0 258 @retval E_INVALIDARG if bad [in] passed
michael@0 259 */
michael@0 260 [propget] HRESULT isColumnSelected
michael@0 261 (
michael@0 262 [in] long column,
michael@0 263 [out, retval] boolean *isSelected
michael@0 264 );
michael@0 265
michael@0 266 /** @brief Returns a boolean value indicating whether the specified row is completely
michael@0 267 selected.
michael@0 268 @param [in] row
michael@0 269 0 based index of the row for which to determine whether it is selected.
michael@0 270 @param [out] isSelected
michael@0 271 Returns TRUE if the specified row is selected completely and FALSE otherwise.
michael@0 272 @retval S_OK
michael@0 273 @retval E_INVALIDARG if bad [in] passed
michael@0 274 */
michael@0 275 [propget] HRESULT isRowSelected
michael@0 276 (
michael@0 277 [in] long row,
michael@0 278 [out, retval] boolean *isSelected
michael@0 279 );
michael@0 280
michael@0 281 /** @brief Selects a row and unselects all previously selected rows.
michael@0 282
michael@0 283 The behavior should mimic that of the application, but for those applications
michael@0 284 which do not have a means in the GUI to select a full row of cells the behavior
michael@0 285 should be as follows: First any selected rows in the table are unselected. Then
michael@0 286 the entire row of cells for the specified row is selected. If any of the
michael@0 287 cells in the selected row span additional rows, the cells in those rows
michael@0 288 are also selected.
michael@0 289 @param [in] row
michael@0 290 0 based index of the row to be selected.
michael@0 291 @retval S_OK
michael@0 292 @retval E_INVALIDARG if bad [in] passed
michael@0 293 */
michael@0 294 HRESULT selectRow
michael@0 295 (
michael@0 296 [in] long row
michael@0 297 );
michael@0 298
michael@0 299 /** @brief Selects a column and unselects all previously selected columns.
michael@0 300
michael@0 301 The behavior should mimic that of the application, but for those applications
michael@0 302 which do not have a means in the GUI to select a full column of cells the behavior
michael@0 303 should be as follows: First any selected columns in the table are unselected. Then
michael@0 304 the entire column of cells for the specified column is selected. If any of the
michael@0 305 cells in the selected column span additional columns, the cells in those columns
michael@0 306 are also selected.
michael@0 307 @param [in] column
michael@0 308 0 based index of the column to be selected.
michael@0 309 @retval S_OK
michael@0 310 @retval E_INVALIDARG if bad [in] passed
michael@0 311 */
michael@0 312 HRESULT selectColumn
michael@0 313 (
michael@0 314 [in] long column
michael@0 315 );
michael@0 316
michael@0 317 /** @brief Unselects one row, leaving other selected rows selected (if any).
michael@0 318
michael@0 319 The behavior should mimic that of the application, but for those applications
michael@0 320 which do not have a means in the GUI to unselect a full row of cells the
michael@0 321 behavior should be as follows: The entire row of cells for the specified
michael@0 322 row is unselected. If any of the cells in the selected row span additional
michael@0 323 rows, the cells in those rows are also unselected.
michael@0 324 @param [in] row
michael@0 325 0 based index of the row to be unselected.
michael@0 326 @retval S_OK
michael@0 327 @retval E_INVALIDARG if bad [in] passed
michael@0 328 */
michael@0 329 HRESULT unselectRow
michael@0 330 (
michael@0 331 [in] long row
michael@0 332 );
michael@0 333
michael@0 334 /** @brief Unselects one column, leaving other selected columns selected (if any).
michael@0 335
michael@0 336 The behavior should mimic that of the application, but for those applications
michael@0 337 which do not have a means in the GUI to unselect a full column of cells the
michael@0 338 behavior should be as follows: The entire column of cells for the specified
michael@0 339 column is unselected. If any of the cells in the selected column span additional
michael@0 340 columns, the cells in those columns are also unselected.
michael@0 341 @param [in] column
michael@0 342 0 based index of the column to be unselected.
michael@0 343 @retval S_OK
michael@0 344 @retval E_INVALIDARG if bad [in] passed
michael@0 345 */
michael@0 346 HRESULT unselectColumn
michael@0 347 (
michael@0 348 [in] long column
michael@0 349 );
michael@0 350
michael@0 351 /** @brief Returns the type and extents describing how a table changed.
michael@0 352
michael@0 353 Provided for use by the IA2_EVENT_TABLE_MODEL_CHANGED event handler.
michael@0 354
michael@0 355 This data is only guaranteed to be valid while the thread notifying the event
michael@0 356 continues. Once the handler has returned, the validity of the data depends on
michael@0 357 how the server manages the life cycle of its objects. Also, note that the server
michael@0 358 may have different life cycle management strategies for controls depending on
michael@0 359 whether or not a control manages its children. Lists, trees, and tables can have
michael@0 360 a large number of children and thus it's possible that the child objects for those
michael@0 361 controls would only be created as needed. Servers should document their life cycle
michael@0 362 strategy as this will be of interest to assistive technology or script engines
michael@0 363 accessing data out of process or from other threads. Servers only need to save the
michael@0 364 most recent row and column values associated with the change and a scope of the
michael@0 365 entire application is adequate.
michael@0 366
michael@0 367 @param [out] modelChange
michael@0 368 A struct of (type(insert, delete, update), firstRow, lastRow, firstColumn, lastColumn).
michael@0 369 @retval S_OK
michael@0 370 @retval S_FALSE if there is nothing to return, [out] value is NULL
michael@0 371 */
michael@0 372 [propget] HRESULT modelChange
michael@0 373 (
michael@0 374 [out, retval] IA2TableModelChange *modelChange
michael@0 375 );
michael@0 376
michael@0 377 }

mercurial