forked from sanyaade-mobiledev/chromium.src
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathia2_api_all.idl
5473 lines (4802 loc) · 215 KB
/
ia2_api_all.idl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*************************************************************************
*
* File Name (api_all_headers.idl)
*
* IAccessible2 IDL Specification
*
* Copyright (c) 2013 Linux Foundation
* All rights reserved.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the Linux Foundation nor the names of its
* contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This BSD License conforms to the Open Source Initiative "Simplified
* BSD License" as published at:
* http://www.opensource.org/licenses/bsd-license.php
*
* IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
* mark may be used in accordance with the Linux Foundation Trademark
* Policy to indicate compliance with the IAccessible2 specification.
*
************************************************************************/
import "objidl.idl";
import "oaidl.idl";
import "oleacc.idl";
/*************************************************************************
*
* File Name (IA2CommonTypes.idl)
*
* IAccessible2 IDL Specification
*
* Copyright (c) 2007, 2013 Linux Foundation
* Copyright (c) 2006 IBM Corporation
* Copyright (c) 2000, 2006 Sun Microsystems, Inc.
* All rights reserved.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the Linux Foundation nor the names of its
* contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This BSD License conforms to the Open Source Initiative "Simplified
* BSD License" as published at:
* http://www.opensource.org/licenses/bsd-license.php
*
* IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
* mark may be used in accordance with the Linux Foundation Trademark
* Policy to indicate compliance with the IAccessible2 specification.
*
************************************************************************/
/** These constants control the scrolling of an object or substring into a window.
This enum is used in IAccessible2::scrollTo and IAccessibleText::scrollSubstringTo.
*/
enum IA2ScrollType {
/** Scroll the top left corner of the object or substring such that the top left
corner (and as much as possible of the rest of the object or substring) is within
the top level window. In cases where the entire object or substring fits within
the top level window, the placement of the object or substring is dependent on
the application. For example, the object or substring may be scrolled to the
closest edge, the furthest edge, or midway between those two edges. In cases
where there is a hierarchy of nested scrollable controls, more than one control
may have to be scrolled.
*/
IA2_SCROLL_TYPE_TOP_LEFT,
/** Scroll the bottom right corner of the object or substring such that the bottom right
corner (and as much as possible of the rest of the object or substring) is within
the top level window. In cases where the entire object or substring fits within
the top level window, the placement of the object or substring is dependent on
the application. For example, the object or substring may be scrolled to the
closest edge, the furthest edge, or midway between those two edges. In cases
where there is a hierarchy of nested scrollable controls, more than one control
may have to be scrolled.
*/
IA2_SCROLL_TYPE_BOTTOM_RIGHT,
/** Scroll the top edge of the object or substring such that the top edge
(and as much as possible of the rest of the object or substring) is within the
top level window. In cases where the entire object or substring fits within
the top level window, the placement of the object or substring is dependent on
the application. For example, the object or substring may be scrolled to the
closest edge, the furthest edge, or midway between those two edges. In cases
where there is a hierarchy of nested scrollable controls, more than one control
may have to be scrolled.
*/
IA2_SCROLL_TYPE_TOP_EDGE,
/** Scroll the bottom edge of the object or substring such that the bottom edge
(and as much as possible of the rest of the object or substring) is within the
top level window. In cases where the entire object or substring fits within
the top level window, the placement of the object or substring is dependent on
the application. For example, the object or substring may be scrolled to the
closest edge, the furthest edge, or midway between those two edges. In cases
where there is a hierarchy of nested scrollable controls, more than one control
may have to be scrolled.
*/
IA2_SCROLL_TYPE_BOTTOM_EDGE,
/** Scroll the left edge of the object or substring such that the left edge
(and as much as possible of the rest of the object or substring) is within the
top level window. In cases where the entire object or substring fits within
the top level window, the placement of the object or substring is dependent on
the application. For example, the object or substring may be scrolled to the
closest edge, the furthest edge, or midway between those two edges. In cases
where there is a hierarchy of nested scrollable controls, more than one control
may have to be scrolled.
*/
IA2_SCROLL_TYPE_LEFT_EDGE,
/** Scroll the right edge of the object or substring such that the right edge
(and as much as possible of the rest of the object or substring) is within the
top level window. In cases where the entire object or substring fits within
the top level window, the placement of the object or substring is dependent on
the application. For example, the object or substring may be scrolled to the
closest edge, the furthest edge, or midway between those two edges. In cases
where there is a hierarchy of nested scrollable controls, more than one control
may have to be scrolled.
*/
IA2_SCROLL_TYPE_RIGHT_EDGE,
/** Scroll the object or substring such that as much as possible of the
object or substring is within the top level window. The placement of
the object is dependent on the application. For example, the object or
substring may be scrolled to to closest edge, the furthest edge, or midway
between those two edges.
*/
IA2_SCROLL_TYPE_ANYWHERE
};
/** These constants define which coordinate system a point is located in.
This enum is used in IAccessible2::scrollToPoint, IAccessibleImage::imagePosition,
IAccessibleText::characterExtents, and IAccessibleText::offsetAtPoint, and
IAccessibleText::scrollSubstringToPoint.
*/
enum IA2CoordinateType {
/// The coordinates are relative to the screen.
IA2_COORDTYPE_SCREEN_RELATIVE,
/** The coordinates are relative to the upper left corner of the bounding box
of the immediate parent.
*/
IA2_COORDTYPE_PARENT_RELATIVE
};
/** Special offsets for use in IAccessibleText and IAccessibleEditableText methods
Refer to @ref _specialOffsets
"Special Offsets for use in the IAccessibleText and IAccessibleEditableText Methods"
for more information.
*/
enum IA2TextSpecialOffsets {
IA2_TEXT_OFFSET_LENGTH = -1, /**< This offset is equivalent to the length of the string. It eliminates
the need to call IAccessibleText::nCharacters. */
IA2_TEXT_OFFSET_CARET = -2 /**< This offset signifies that the text related to the physical location
of the caret should be used. */
};
/** These constants specify the kind of change made to a table.
This enum is used in the IA2TableModelChange struct which in turn is used by
IAccessibleTable::modelChange and IAccessibleTable2::modelChange.
*/
enum IA2TableModelChangeType {
IA2_TABLE_MODEL_CHANGE_INSERT, // = 0;
IA2_TABLE_MODEL_CHANGE_DELETE,
IA2_TABLE_MODEL_CHANGE_UPDATE
};
/** A structure defining the type of and extents of changes made to a table
IAccessibleTable::modelChange and IAccessibleTable2::modelChange return this struct.
In the case of an insertion or change the row and column offsets define the boundaries
of the inserted or changed subtable after the operation. In the case of a deletion
the row and column offsets define the boundaries of the subtable being removed before
the removal.
*/
typedef struct IA2TableModelChange {
enum IA2TableModelChangeType type; // insert, delete, update
long firstRow; ///< 0 based, inclusive
long lastRow; ///< 0 based, inclusive
long firstColumn; ///< 0 based, inclusive
long lastColumn; ///< 0 based, inclusive
} IA2TableModelChange;
/*************************************************************************
*
* File Name (AccessibleRelation.idl)
*
* IAccessible2 IDL Specification
*
* Copyright (c) 2007, 2013 Linux Foundation
* Copyright (c) 2006 IBM Corporation
* Copyright (c) 2000, 2006 Sun Microsystems, Inc.
* All rights reserved.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the Linux Foundation nor the names of its
* contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This BSD License conforms to the Open Source Initiative "Simplified
* BSD License" as published at:
* http://www.opensource.org/licenses/bsd-license.php
*
* IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
* mark may be used in accordance with the Linux Foundation Trademark
* Policy to indicate compliance with the IAccessible2 specification.
*
************************************************************************/
/** @defgroup grpRelations Relations
Use the following constants to compare against the BSTRs returned by
IAccessibleRelation::relationType.
*/
///@{
/** The target object is the containing application object. */
const WCHAR *const IA2_RELATION_CONTAINING_APPLICATION = L"containingApplication";
/** The target object is the containing document object. The target object implements
the IAccessibleDocument interface.
*/
const WCHAR *const IA2_RELATION_CONTAINING_DOCUMENT = L"containingDocument";
/** The target object is the containing tab pane object. */
const WCHAR *const IA2_RELATION_CONTAINING_TAB_PANE = L"containingTabPane";
/** The target object is the containing window object. */
const WCHAR *const IA2_RELATION_CONTAINING_WINDOW = L"containingWindow";
/** Some attribute of this object is affected by a target object. */
const WCHAR *const IA2_RELATION_CONTROLLED_BY = L"controlledBy";
/** This object is interactive and controls some attribute of a target object. */
const WCHAR *const IA2_RELATION_CONTROLLER_FOR = L"controllerFor";
/** This object is described by the target object. */
const WCHAR *const IA2_RELATION_DESCRIBED_BY = L"describedBy";
/** This object is describes the target object. */
const WCHAR *const IA2_RELATION_DESCRIPTION_FOR = L"descriptionFor";
/** This object is embedded by a target object. */
const WCHAR *const IA2_RELATION_EMBEDDED_BY = L"embeddedBy";
/** This object embeds a target object. This relation can be used on the
OBJID_CLIENT accessible for a top level window to show where the content
areas are.
*/
const WCHAR *const IA2_RELATION_EMBEDS = L"embeds";
/** Content flows to this object from a target object.
This relation and IA2_RELATION_FLOWS_TO are useful to tie text and non-text
objects together in order to allow assistive technology to follow the
intended reading order.
*/
const WCHAR *const IA2_RELATION_FLOWS_FROM = L"flowsFrom";
/** Content flows from this object to a target object. */
const WCHAR *const IA2_RELATION_FLOWS_TO = L"flowsTo";
/** This object is label for a target object. */
const WCHAR *const IA2_RELATION_LABEL_FOR = L"labelFor";
/** This object is labelled by a target object. Note that the double L spelling
which follows is preferred. Please use it instead. This single L version may
be removed in a later version.
*/
const WCHAR *const IA2_RELATION_LABELED_BY = L"labelledBy";
/** This object is labelled by a target object. */
const WCHAR *const IA2_RELATION_LABELLED_BY = L"labelledBy";
/** This object is a member of a group of one or more objects. When
there is more than one object in the group each member may have one and the
same target, e.g. a grouping object. It is also possible that each member has
multiple additional targets, e.g. one for every other member in the group.
*/
const WCHAR *const IA2_RELATION_MEMBER_OF = L"memberOf";
/** The target object is the next object in the tab order. */
const WCHAR *const IA2_RELATION_NEXT_TABBABLE = L"nextTabbable";
/** This object is a logical child of a target object. This relation is the reciprocal
of the IA2_RELATION_NODE_PARENT_OF relation. In some cases an application's accessible
tree is such that objects can be in a logical parent-child relationship which is
different from the hierarchy of the accessible tree. */
const WCHAR *const IA2_RELATION_NODE_CHILD_OF = L"nodeChildOf";
/** This object is a logical parent of a target object. This relation is the reciprocal
of the IA2_RELATION_NODE_CHILD_OF relation. In some cases an application's accessible
tree is such that objects can be in a logical parent-child relationship which is
different from the hierarchy of the accessible tree. */
const WCHAR *const IA2_RELATION_NODE_PARENT_OF = L"nodeParentOf";
/** This object is a parent window of the target object. */
const WCHAR *const IA2_RELATION_PARENT_WINDOW_OF = L"parentWindowOf";
/** This object is a transient component related to the target object.
When this object is activated the target object doesn't lose focus.
*/
const WCHAR *const IA2_RELATION_POPUP_FOR = L"popupFor";
/** The target object is the previous object in the tab order. */
const WCHAR *const IA2_RELATION_PREVIOUS_TABBABLE = L"previousTabbable";
/** This object is a sub window of a target object. */
const WCHAR *const IA2_RELATION_SUBWINDOW_OF = L"subwindowOf";
///@}
/** This interface gives access to an object's set of relations.
*/
[object, uuid(7CDF86EE-C3DA-496a-BDA4-281B336E1FDC)]
interface IAccessibleRelation : IUnknown
{
/** @brief Returns the type of the relation.
@param [out] relationType
The strings returned are defined @ref grpRelations "in this section of the documentation".
@retval S_OK
*/
[propget] HRESULT relationType
(
[out, retval] BSTR *relationType
);
/** @brief Returns a localized version of the relation type.
@param [out] localizedRelationType
@retval S_OK
*/
[propget] HRESULT localizedRelationType
(
[out, retval] BSTR *localizedRelationType
);
/** @brief Returns the number of targets for this relation.
@param [out] nTargets
@retval S_OK
*/
[propget] HRESULT nTargets
(
[out, retval] long *nTargets
);
/** @brief Returns one accessible relation target.
@param [in] targetIndex
0 based index
@param [out] target
@retval S_OK
@retval E_INVALIDARG if bad [in] passed
@note Use QueryInterface to get IAccessible2.
*/
[propget] HRESULT target
(
[in] long targetIndex,
[out, retval] IUnknown **target
);
/** @brief Returns multiple accessible relation targets
@param [in] maxTargets
maximum size of the array allocated by the client
@param [out] targets
The array of target objects. Note that this array is to be allocated by the
client and freed when no longer needed. Refer to @ref _arrayConsideration
"Special Consideration when using Arrays" for more details. You will need to use
QueryInterface on the IUnknown to get the IAccessible2.
@param [out] nTargets
actual number of targets in the returned array (not more than maxTargets)
@retval S_OK
@retval E_INVALIDARG if bad [in] passed, e.g. a negative value
*/
[propget] HRESULT targets
(
[in] long maxTargets,
[out, size_is(maxTargets), length_is(*nTargets)]
IUnknown **targets,
[out, retval] long *nTargets
);
}
/*************************************************************************
*
* File Name (AccessibleAction.idl)
*
* IAccessible2 IDL Specification
*
* Copyright (c) 2007, 2013 Linux Foundation
* Copyright (c) 2006 IBM Corporation
* Copyright (c) 2000, 2006 Sun Microsystems, Inc.
* All rights reserved.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the Linux Foundation nor the names of its
* contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This BSD License conforms to the Open Source Initiative "Simplified
* BSD License" as published at:
* http://www.opensource.org/licenses/bsd-license.php
*
* IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
* mark may be used in accordance with the Linux Foundation Trademark
* Policy to indicate compliance with the IAccessible2 specification.
*
************************************************************************/
/** This enum defines values which are predefined actions for use when implementing
support for media.
This enum is used when specifying an action for IAccessibleAction::doAction.
*/
enum IA2Actions {
IA2_ACTION_OPEN = -1, /**< Used to inform the server that the client will
signal via IA2_ACTION_COMPLETE when it has consumed
the content provided by the object. This action
allows the object's server to wait for all clients
to signal their readiness for additional content.
Any form of content generation that requires
synchronization with an AT would require use of this
action. One example is the generation of text describing
visual content not obvious from a video's sound track.
In this scenario the Text to Speech or Braille output
may take more time than the related length of silence
in the video's sound track. */
IA2_ACTION_COMPLETE = -2, /**< Used by the client to inform the server that it has
consumed the most recent content provided by this object. */
IA2_ACTION_CLOSE = -3 /**< Used to inform the server that the client no longer
requires synchronization. */
};
/** @brief This interface gives access to actions that can be executed
for accessible objects.
Every accessible object that can be manipulated via the native GUI beyond the
methods available either in the MSAA IAccessible interface or in the set of
IAccessible2 interfaces (other than this IAccessibleAction interface) should
support the IAccessibleAction interface in order to provide Assistive Technology
access to all the actions that can be performed by the object. Each action can
be performed or queried for a name, description or associated key bindings.
Actions are needed more for ATs that assist the mobility impaired, such as
on-screen keyboards and voice command software. By providing actions directly,
the AT can present them to the user without the user having to perform the extra
steps to navigate a context menu.
The first action should be equivalent to the MSAA default action. If there is
only one action, %IAccessibleAction should also be implemented.
*/
[object, uuid(B70D9F59-3B5A-4dba-AB9E-22012F607DF5)]
interface IAccessibleAction : IUnknown
{
/** @brief Returns the number of accessible actions available in this object.
If there are more than one, the first one is considered the
"default" action of the object.
@param [out] nActions
The returned value of the number of actions is zero if there are
no actions.
@retval S_OK
@note This method is missing a [propget] prefix in the IDL. The result is the
method is named nActions in generated C++ code instead of get_nActions.
*/
HRESULT nActions
(
[out,retval] long* nActions
);
/** @brief Performs the specified Action on the object.
@param [in] actionIndex
0 based index specifying the action to perform. If it lies outside
the valid range no action is performed.
@retval S_OK
@retval S_FALSE if action could not be performed
@retval E_INVALIDARG if bad [in] passed
@note If implementing support for media, refer to the predefined constants in the ::IA2Actions enum.
*/
HRESULT doAction
(
[in] long actionIndex
);
/** @brief Returns a description of the specified action of the object.
@param [in] actionIndex
0 based index specifying which action's description to return.
If it lies outside the valid range an empty string is returned.
@param [out] description
The returned value is a localized string of the specified action.
@retval S_OK
@retval S_FALSE if there is nothing to return, [out] value is NULL
@retval E_INVALIDARG if bad [in] passed
*/
[propget] HRESULT description
(
[in] long actionIndex,
[out, retval] BSTR *description
);
/** @brief Returns an array of BSTRs describing one or more key bindings, if
there are any, associated with the specified action.
The returned strings are the localized human readable key sequences to be
used to activate each action, e.g. "Ctrl+Shift+D". Since these key
sequences are to be used when the object has focus, they are like
mnemonics (access keys), and not like shortcut (accelerator) keys.
There is no need to implement this method for single action controls since
that would be redundant with the standard MSAA programming practice of
getting the mnemonic from get_accKeyboardShortcut.
An AT such as an On Screen Keyboard might not expose these bindings but
provide alternative means of activation.
Note: the client allocates and passes in an array of pointers. The server
allocates the BSTRs and passes back one or more pointers to these BSTRs into
the array of pointers allocated by the client. The client is responsible
for deallocating the BSTRs.
@param [in] actionIndex
0 based index specifying which action's key bindings should be returned.
@param [in] nMaxBindings
This parameter is ignored. Refer to @ref _arrayConsideration
"Special Consideration when using Arrays" for more details.
@param [out] keyBindings
An array of BSTRs, allocated by the server, one for each key binding.
The client must free it with CoTaskMemFree.
@param [out] nBindings
The number of key bindings returned; the size of the returned array.
@retval S_OK
@retval S_FALSE if there are no key bindings, [out] values are NULL and 0 respectively
@retval E_INVALIDARG if bad [in] passed
*/
[propget] HRESULT keyBinding
(
[in] long actionIndex,
[in] long nMaxBindings,
[out, size_is(,nMaxBindings), length_is(,*nBindings)] BSTR **keyBindings,
[out, retval] long *nBindings
);
/** @brief Returns the non-localized name of specified action.
@param [in] actionIndex
0 based index specifying which action's non-localized name should be returned.
@param [out] name
@retval S_OK
@retval S_FALSE if there is nothing to return, [out] value is NULL
@retval E_INVALIDARG if bad [in] passed
*/
[propget] HRESULT name
(
[in] long actionIndex,
[out, retval] BSTR *name
);
/** @brief Returns the localized name of specified action.
@param [in] actionIndex
0 based index specifying which action's localized name should be returned.
@param [out] localizedName
@retval S_OK
@retval S_FALSE if there is nothing to return, [out] value is NULL
@retval E_INVALIDARG if bad [in] passed
*/
[propget] HRESULT localizedName
(
[in] long actionIndex,
[out, retval] BSTR *localizedName
);
}
/*************************************************************************
*
* File Name (AccessibleRole.idl)
*
* IAccessible2 IDL Specification
*
* Copyright (c) 2007, 2013 Linux Foundation
* Copyright (c) 2006 IBM Corporation
* Copyright (c) 2000, 2006 Sun Microsystems, Inc.
* All rights reserved.
*
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the Linux Foundation nor the names of its
* contributors may be used to endorse or promote products
* derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* This BSD License conforms to the Open Source Initiative "Simplified
* BSD License" as published at:
* http://www.opensource.org/licenses/bsd-license.php
*
* IAccessible2 is a trademark of the Linux Foundation. The IAccessible2
* mark may be used in accordance with the Linux Foundation Trademark
* Policy to indicate compliance with the IAccessible2 specification.
*
************************************************************************/
/** Collection of roles
This enumerator defines an extended set of accessible roles of objects implementing
the %IAccessible2 interface. These roles are in addition to the MSAA roles obtained
through the MSAA get_accRole method. Examples are 'footnote', 'heading', and
'label'. You obtain an object's %IAccessible2 roles by calling IAccessible2::role.
*/
enum IA2Role {
/** Unknown role. The object contains some Accessible information, but its
role is not known.
*/
IA2_ROLE_UNKNOWN = 0,
/** An object that can be drawn into and to manage events from the objects
drawn into it. Also refer to ::IA2_ROLE_FRAME,
::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_LAYERED_PANE.
*/
IA2_ROLE_CANVAS = 0x401,
/// A caption describing another object.
IA2_ROLE_CAPTION,
/// Used for check buttons that are menu items.
IA2_ROLE_CHECK_MENU_ITEM,
/// A specialized dialog that lets the user choose a color.
IA2_ROLE_COLOR_CHOOSER,
/// A date editor.
IA2_ROLE_DATE_EDITOR,
/** An iconified internal frame in an ::IA2_ROLE_DESKTOP_PANE.
Also refer to ::IA2_ROLE_INTERNAL_FRAME.
*/
IA2_ROLE_DESKTOP_ICON,
/** A desktop pane. A pane that supports internal frames and iconified
versions of those internal frames. Also refer to ::IA2_ROLE_INTERNAL_FRAME.
*/
IA2_ROLE_DESKTOP_PANE,
/** A directory pane. A pane that allows the user to navigate through
and select the contents of a directory. May be used by a file chooser.
Also refer to ::IA2_ROLE_FILE_CHOOSER.
*/
IA2_ROLE_DIRECTORY_PANE,
/** An editable text object in a toolbar. <b>Deprecated.</b>
The edit bar role was meant for a text area in a tool bar. However, to detect
a text area in a tool bar the AT can query the parent.
*/
IA2_ROLE_EDITBAR,
/// Embedded (OLE) object.
IA2_ROLE_EMBEDDED_OBJECT,
/// Text that is used as an endnote (footnote at the end of a chapter or section).
IA2_ROLE_ENDNOTE,
/** A file chooser. A specialized dialog that displays the files in the
directory and lets the user select a file, browse a different directory,
or specify a filename. May use the directory pane to show the contents of
a directory.
Also refer to ::IA2_ROLE_DIRECTORY_PANE.
*/
IA2_ROLE_FILE_CHOOSER,
/** A font chooser. A font chooser is a component that lets the user pick
various attributes for fonts.
*/
IA2_ROLE_FONT_CHOOSER,
/** Footer of a document page.
Also refer to ::IA2_ROLE_HEADER.
*/
IA2_ROLE_FOOTER,
/// Text that is used as a footnote. Also refer to ::IA2_ROLE_ENDNOTE.
IA2_ROLE_FOOTNOTE,
/** A container of form controls. An example of the use of this role is to
represent an HTML FORM tag.
*/
IA2_ROLE_FORM,
/** Frame role. A top level window with a title bar, border, menu bar, etc.
It is often used as the primary window for an application. Also refer to
::IA2_ROLE_CANVAS and the MSAA roles of dialog and window.
*/
IA2_ROLE_FRAME,
/** A glass pane. A pane that is guaranteed to be painted on top of all panes
beneath it. Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_INTERNAL_FRAME, and
::IA2_ROLE_ROOT_PANE.
*/
IA2_ROLE_GLASS_PANE,
/** Header of a document page.
Also refer to ::IA2_ROLE_FOOTER.
*/
IA2_ROLE_HEADER,
/// Heading. Use the IAccessible2::attributes level attribute to determine the heading level.
IA2_ROLE_HEADING,
/// A small fixed size picture, typically used to decorate components.
IA2_ROLE_ICON,
/** An image map object. Usually a graphic with multiple hotspots, where
each hotspot can be activated resulting in the loading of another document
or section of a document.
*/
IA2_ROLE_IMAGE_MAP,
/** An object which is used to allow input of characters not found on a keyboard,
such as the input of Chinese characters on a Western keyboard.
*/
IA2_ROLE_INPUT_METHOD_WINDOW,
/** An internal frame. A frame-like object that is clipped by a desktop pane.
The desktop pane, internal frame, and desktop icon objects are often used to
create multiple document interfaces within an application.
Also refer to ::IA2_ROLE_DESKTOP_ICON, ::IA2_ROLE_DESKTOP_PANE, and ::IA2_ROLE_FRAME.
*/
IA2_ROLE_INTERNAL_FRAME,
/// An object used to present an icon or short string in an interface.
IA2_ROLE_LABEL,
/** A layered pane. A specialized pane that allows its children to be drawn
in layers, providing a form of stacking order. This is usually the pane that
holds the menu bar as well as the pane that contains most of the visual
components in a window.
Also refer to ::IA2_ROLE_CANVAS, ::IA2_ROLE_GLASS_PANE, and ::IA2_ROLE_ROOT_PANE.
*/
IA2_ROLE_LAYERED_PANE,
/** A section whose content is parenthetic or ancillary to the main content
of the resource.
*/
IA2_ROLE_NOTE,
/** A specialized pane whose primary use is inside a dialog.
Also refer to MSAA's dialog role.
*/
IA2_ROLE_OPTION_PANE,
/** An object representing a page of document content. It is used in documents
which are accessed by the user on a page by page basis.
*/
IA2_ROLE_PAGE,
/// A paragraph of text.
IA2_ROLE_PARAGRAPH,
/** A radio button that is a menu item.
Also refer to MSAA's button and menu item roles.
*/
IA2_ROLE_RADIO_MENU_ITEM,
/** An object which is redundant with another object in the accessible hierarchy.
ATs typically ignore objects with this role.
*/
IA2_ROLE_REDUNDANT_OBJECT,
/** A root pane. A specialized pane that has a glass pane and a layered pane
as its children.
Also refer to ::IA2_ROLE_GLASS_PANE and ::IA2_ROLE_LAYERED_PANE
*/
IA2_ROLE_ROOT_PANE,
/** A ruler such as those used in word processors.
*/
IA2_ROLE_RULER,
/** A scroll pane. An object that allows a user to incrementally view a large
amount of information. Its children can include scroll bars and a viewport.
Also refer to ::IA2_ROLE_VIEW_PORT and MSAA's scroll bar role.
*/
IA2_ROLE_SCROLL_PANE,
/** A container of document content. An example of the use of this role is to
represent an HTML DIV tag. A section may be used as a region. A region is a
group of elements that together form a perceivable unit. A region does not
necessarily follow the logical structure of the content, but follows the
perceivable structure of the page. A region may have an attribute in the set
of IAccessible2::attributes which indicates that it is "live". A live region
is content that is likely to change in response to a timed change, a user
event, or some other programmed logic or event.
*/
IA2_ROLE_SECTION,
/// Object with graphical representation used to represent content on draw pages.
IA2_ROLE_SHAPE,
/** A split pane. A specialized panel that presents two other panels at the
same time. Between the two panels is a divider the user can manipulate to make
one panel larger and the other panel smaller.
*/
IA2_ROLE_SPLIT_PANE,
/** An object that forms part of a menu system but which can be "undocked"
from or "torn off" the menu system to exist as a separate window.
*/
IA2_ROLE_TEAR_OFF_MENU,
/// An object used as a terminal emulator.
IA2_ROLE_TERMINAL,
/// Collection of objects that constitute a logical text entity.
IA2_ROLE_TEXT_FRAME,
/** A toggle button. A specialized push button that can be checked or unchecked,
but does not provide a separate indicator for the current state.
Also refer to MSAA's roles of push button, check box, and radio button.
<BR><B>Note:</B> IA2_ROLE_TOGGLE_BUTTON should not be used. Instead, use MSAA's
ROLE_SYSTEM_PUSHBUTTON and STATE_SYSTEM_PRESSED.
*/
IA2_ROLE_TOGGLE_BUTTON,
/** A viewport. An object usually used in a scroll pane. It represents the
portion of the entire data that the user can see. As the user manipulates
the scroll bars, the contents of the viewport can change.
Also refer to ::IA2_ROLE_SCROLL_PANE.
*/
IA2_ROLE_VIEW_PORT,
/** An object containing content which is complementary to the main content of
a document, but remains meaningful when separated from the main content. There
are various types of content that would appropriately have this role. For example,
in the case where content is delivered via a web portal to a web browser, this may
include but not be limited to show times, current weather, related articles, or
stocks to watch. The complementary role indicates that contained content is relevant
to the main content. If the complementary content is completely separable main
content, it may be appropriate to use a more general role.
*/
IA2_ROLE_COMPLEMENTARY_CONTENT
};
/*************************************************************************
*
* File Name (AccessibleStates.idl)
*
* IAccessible2 IDL Specification
*
* Copyright (c) 2007, 2010 Linux Foundation
* Copyright (c) 2006 IBM Corporation
* Copyright (c) 2000, 2006 Sun Microsystems, Inc.
* All rights reserved.
*
*