1/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2/* vim: set ts=2 et sw=2 tw=80: */ 3/* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7include protocol PFileDescriptorSet; 8include protocol PBrowser; 9include protocol PDocAccessiblePlatformExt; 10 11include "mozilla/GfxMessageUtils.h"; 12 13using nsIntRect from "nsRect.h"; 14using mozilla::a11y::role from "mozilla/a11y/IPCTypes.h"; 15using mozilla::a11y::AccType from "mozilla/a11y/IPCTypes.h"; 16using mozilla::a11y::AccGenericType from "mozilla/a11y/IPCTypes.h"; 17[RefCounted] using mozilla::a11y::AccAttributes from "mozilla/a11y/IPCTypes.h"; 18using mozilla::gfx::IntSize from "mozilla/gfx/Point.h"; 19using mozilla::gfx::IntPoint from "mozilla/gfx/Point.h"; 20 21namespace mozilla { 22namespace a11y { 23 24struct AccessibleData 25{ 26 uint64_t ID; 27 role Role; 28 uint32_t ChildrenCount; 29 AccType Type; 30 AccGenericType GenericTypes; 31 uint8_t RoleMapEntryIndex; 32}; 33 34union OriginDocument 35{ 36 PDocAccessible; 37}; 38 39struct BatchData 40{ 41 OriginDocument Document; 42 uint64_t ID; 43 uint64_t State; 44 nsIntRect Bounds; 45 uint8_t ActionCount; 46 nsString Name; 47 nsString TextValue; 48 nsString DOMNodeID; 49 nsString Description; 50 double CurValue; 51 double MinValue; 52 double MaxValue; 53 double Step; 54 AccAttributes Attributes; 55}; 56 57struct ShowEventData 58{ 59 uint64_t ID; 60 uint32_t Idx; 61 AccessibleData[] NewTree; 62 bool EventSuppressed; 63}; 64 65struct RelationTargets 66{ 67 uint32_t Type; 68 uint64_t[] Targets; 69}; 70 71struct TextRangeData 72{ 73 uint64_t StartID; 74 uint64_t EndID; 75 int32_t StartOffset; 76 int32_t EndOffset; 77}; 78 79nested(upto inside_sync) sync protocol PDocAccessible 80{ 81 manager PBrowser; 82 manages PDocAccessiblePlatformExt; 83 84parent: 85 async PDocAccessiblePlatformExt(); 86 async Shutdown(); 87 88 /* 89 * Notify the parent process the document in the child process is firing an 90 * event. 91 */ 92 async Event(uint64_t aID, uint32_t type); 93 async ShowEvent(ShowEventData data, bool aFromuser); 94 async HideEvent(uint64_t aRootID, bool aFromUser); 95 async StateChangeEvent(uint64_t aID, uint64_t aState, bool aEnabled); 96 async CaretMoveEvent(uint64_t aID, int32_t aOffset, bool aIsSelectionCollapsed); 97 async TextChangeEvent(uint64_t aID, nsString aStr, int32_t aStart, uint32_t aLen, 98 bool aIsInsert, bool aFromUser); 99 async SelectionEvent(uint64_t aID, uint64_t aWidgetID, uint32_t aType); 100 async RoleChangedEvent(role aRole); 101 async VirtualCursorChangeEvent(uint64_t aID, 102 uint64_t aOldPosition, 103 int32_t aOldStartOffset, int32_t aOldEndOffset, 104 uint64_t aPosition, 105 int32_t aStartOffset, int32_t aEndOffset, 106 int16_t aReason, int16_t aBoundaryType, 107 bool aFromUservcEvent); 108 async ScrollingEvent(uint64_t aID, uint64_t aType, 109 uint32_t aScrollX, uint32_t aScrollY, 110 uint32_t aMaxScrollX, uint32_t aMaxScrollY); 111 async AnnouncementEvent(uint64_t aID, 112 nsString aAnnouncement, 113 uint16_t aPriority); 114 async TextSelectionChangeEvent(uint64_t aID, TextRangeData[] aSelection); 115 116 /* 117 * Tell the parent document to bind the existing document as a new child 118 * document. 119 */ 120 async BindChildDoc(PDocAccessible aChildDoc, uint64_t aID); 121 122 // Android 123 async Batch(uint64_t aBatchType, BatchData[] aData); 124 125child: 126 /* 127 * Notify the content process that the PDocAccessible has finished being 128 * constructed in the parent process. 129 */ 130 async ConstructedInParentProcess(); 131 132 async __delete__(); 133 134 /* 135 * Called as a result of focus shifting from chrome to content 136 * elements through keyboard navigation. 137 */ 138 async RestoreFocus(); 139 140 // LocalAccessible 141 [Nested=inside_sync] sync State(uint64_t aID) returns(uint64_t states); 142 [Nested=inside_sync] sync NativeState(uint64_t aID) returns(uint64_t states); 143 [Nested=inside_sync] sync Name(uint64_t aID) returns(nsString name, uint32_t flag); 144 [Nested=inside_sync] sync Value(uint64_t aID) returns(nsString value); 145 [Nested=inside_sync] sync Help(uint64_t aID) returns(nsString help); 146 [Nested=inside_sync] sync Description(uint64_t aID) returns(nsString desc); 147 [Nested=inside_sync] sync Attributes(uint64_t aID) returns(AccAttributes attributes); 148 [Nested=inside_sync] sync RelationByType(uint64_t aID, uint32_t aRelationType) 149 returns(uint64_t[] targets); 150 [Nested=inside_sync] sync Relations(uint64_t aID) returns(RelationTargets[] relations); 151 [Nested=inside_sync] sync IsSearchbox(uint64_t aID) returns(bool retval); 152 [Nested=inside_sync] sync LandmarkRole(uint64_t aID) returns(nsString landmark); 153 [Nested=inside_sync] sync ARIARoleAtom(uint64_t aID) returns(nsString ariaRole); 154 [Nested=inside_sync] sync GroupPosition(uint64_t aID) 155 returns(int32_t groupLevel, int32_t similarItemsInGroup, int32_t positionInGroup); 156 async ScrollTo(uint64_t aID, uint32_t aScrollType); 157 async ScrollToPoint(uint64_t aID, uint32_t aScrollType, int32_t aX, 158 int32_t aY); 159 async Announce(uint64_t aID, nsString aAnnouncement, uint16_t aPriority); 160 161 // AccessibleText 162 163 // TextSubstring is getText in IDL. 164 [Nested=inside_sync] sync CaretLineNumber(uint64_t aID) returns(int32_t aLineNumber); 165 [Nested=inside_sync] sync CaretOffset(uint64_t aID) returns(int32_t aOffset); 166 async SetCaretOffset(uint64_t aID, int32_t aOffset); 167 [Nested=inside_sync] sync CharacterCount(uint64_t aID) returns(int32_t aCount); 168 [Nested=inside_sync] sync SelectionCount(uint64_t aID) returns(int32_t aCount); 169 [Nested=inside_sync] sync TextSubstring(uint64_t aID, int32_t aStartOffset, int32_t 170 aEndOffset) returns(nsString aText, bool aValid); 171 [Nested=inside_sync] sync GetTextAfterOffset(uint64_t aID, int32_t aOffset, int32_t aBoundaryType) 172 returns(nsString aText, int32_t aStartOffset, int32_t aEndOffset); 173 [Nested=inside_sync] sync GetTextAtOffset(uint64_t aID, int32_t aOffset, int32_t aBoundaryType) 174 returns(nsString aText, int32_t aStartOffset, int32_t aEndOffset); 175 176 [Nested=inside_sync] sync GetTextBeforeOffset(uint64_t aID, int32_t aOffset, int32_t aBoundaryType) 177 returns(nsString aText, int32_t aStartOffset, int32_t aEndOffset); 178 [Nested=inside_sync] sync CharAt(uint64_t aID, int32_t aOffset) returns(uint16_t aChar); 179 180 [Nested=inside_sync] sync TextAttributes(uint64_t aID, bool aIncludeDefAttrs, int32_t aOffset) 181 returns(AccAttributes aAttributes, int32_t aStartOffset, int32_t aEndOffset); 182 [Nested=inside_sync] sync DefaultTextAttributes(uint64_t aID) returns(AccAttributes aAttributes); 183 184 [Nested=inside_sync] sync TextBounds(uint64_t aID, int32_t aStartOffset, int32_t aEndOffset, 185 uint32_t aCoordType) 186 returns(nsIntRect aRetVal); 187 [Nested=inside_sync] sync CharBounds(uint64_t aID, int32_t aOffset, uint32_t aCoordType) 188 returns(nsIntRect aRetVal); 189 190 [Nested=inside_sync] sync OffsetAtPoint(uint64_t aID, int32_t aX, int32_t aY, uint32_t aCoordType) 191 returns(int32_t aRetVal); 192 193 [Nested=inside_sync] sync SelectionBoundsAt(uint64_t aID, int32_t aSelectionNum) 194 returns(bool aSucceeded, nsString aData, int32_t aStartOffset, int32_t aEndOffset); 195 [Nested=inside_sync] sync SetSelectionBoundsAt(uint64_t aID, int32_t aSelectionNum, 196 int32_t aStartOffset, int32_t aEndOffset) 197 returns(bool aSucceeded); 198 [Nested=inside_sync] sync AddToSelection(uint64_t aID, int32_t aStartOffset, int32_t aEndOffset) 199 returns(bool aSucceeded); 200 [Nested=inside_sync] sync RemoveFromSelection(uint64_t aID, int32_t aSelectionNum) 201 returns(bool aSucceeded); 202 203 async ScrollSubstringTo(uint64_t aID, int32_t aStartOffset, int32_t aEndOffset, 204 uint32_t aScrollType); 205 async ScrollSubstringToPoint(uint64_t aID, 206 int32_t aStartOffset, 207 int32_t aEndOffset, 208 uint32_t aCoordinateType, 209 int32_t aX, int32_t aY); 210 211 [Nested=inside_sync] sync Text(uint64_t aID) returns(nsString aText); 212 [Nested=inside_sync] sync ReplaceText(uint64_t aID, nsString aText); 213 [Nested=inside_sync] sync InsertText(uint64_t aID, nsString aText, int32_t aPosition) 214 returns(bool aValid); 215 [Nested=inside_sync] sync CopyText(uint64_t aID, int32_t aStartPos, int32_t aEndPos) 216 returns(bool aValid); 217 [Nested=inside_sync] sync CutText(uint64_t aID, int32_t aStartPos, int32_t aEndPos) 218 returns(bool aValid); 219 [Nested=inside_sync] sync DeleteText(uint64_t aID, int32_t aStartPos, int32_t aEndPos) 220 returns(bool aValid); 221 [Nested=inside_sync] sync PasteText(uint64_t aID, int32_t aPosition) 222 returns(bool aValid); 223 224 [Nested=inside_sync] sync ImagePosition(uint64_t aID, uint32_t aCoordType) returns(IntPoint aRetVal); 225 [Nested=inside_sync] sync ImageSize(uint64_t aID) returns(IntSize aRetVal); 226 227 [Nested=inside_sync] sync StartOffset(uint64_t aID) returns(uint32_t aRetVal, bool aOk); 228 [Nested=inside_sync] sync EndOffset(uint64_t aID) returns(uint32_t aRetVal, bool aOk); 229 [Nested=inside_sync] sync IsLinkValid(uint64_t aID) returns(bool aRetVal); 230 [Nested=inside_sync] sync AnchorCount(uint64_t aID) returns(uint32_t aRetVal, bool aOk); 231 [Nested=inside_sync] sync AnchorURIAt(uint64_t aID, uint32_t aIndex) returns(nsCString aURI, bool aOk); 232 [Nested=inside_sync] sync AnchorAt(uint64_t aID, uint32_t aIndex) returns(uint64_t aIDOfAnchor, bool aOk); 233 234 [Nested=inside_sync] sync LinkCount(uint64_t aID) returns(uint32_t aCount); 235 [Nested=inside_sync] sync LinkAt(uint64_t aID, uint32_t aIndex) returns(uint64_t aIDOfLink, bool aOk); 236 [Nested=inside_sync] sync LinkIndexOf(uint64_t aID, uint64_t aLinkID) returns(int32_t aIndex); 237 [Nested=inside_sync] sync LinkIndexAtOffset(uint64_t aID, uint32_t aOffset) returns(int32_t aIndex); 238 239 [Nested=inside_sync] sync TableOfACell(uint64_t aID) returns(uint64_t aTableID, bool aOk); 240 [Nested=inside_sync] sync ColIdx(uint64_t aID) returns(uint32_t aIndex); 241 [Nested=inside_sync] sync RowIdx(uint64_t aID) returns(uint32_t aIndex); 242 [Nested=inside_sync] sync GetPosition(uint64_t aID) returns(uint32_t aRow, uint32_t aCol); 243 [Nested=inside_sync] sync ColExtent(uint64_t aID) returns(uint32_t aExtent); 244 [Nested=inside_sync] sync RowExtent(uint64_t aID) returns(uint32_t aExtent); 245 [Nested=inside_sync] sync GetColRowExtents(uint64_t aID) 246 returns(uint32_t aCol, uint32_t aRow, uint32_t aColExtent, uint32_t aRowExtent); 247 [Nested=inside_sync] sync ColHeaderCells(uint64_t aID) returns(uint64_t[] aCells); 248 [Nested=inside_sync] sync RowHeaderCells(uint64_t aID) returns(uint64_t[] aCells); 249 [Nested=inside_sync] sync IsCellSelected(uint64_t aID) returns(bool aSelected); 250 251 [Nested=inside_sync] sync TableCaption(uint64_t aID) returns(uint64_t aCaptionID, bool aOk); 252 [Nested=inside_sync] sync TableSummary(uint64_t aID) returns(nsString aSummary); 253 [Nested=inside_sync] sync TableColumnCount(uint64_t aID) returns(uint32_t aColCount); 254 [Nested=inside_sync] sync TableRowCount(uint64_t aID) returns(uint32_t aRowCount); 255 [Nested=inside_sync] sync TableCellAt(uint64_t aID, uint32_t aRow, uint32_t aCol) returns(uint64_t aCellID, bool aOk); 256 [Nested=inside_sync] sync TableCellIndexAt(uint64_t aID, uint32_t aRow, uint32_t aCol) returns(int32_t aIndex); 257 [Nested=inside_sync] sync TableColumnIndexAt(uint64_t aID, uint32_t aCellIndex) returns(int32_t aCol); 258 [Nested=inside_sync] sync TableRowIndexAt(uint64_t aID, uint32_t aCellIndex) returns(int32_t aRow); 259 [Nested=inside_sync] sync TableRowAndColumnIndicesAt(uint64_t aID, uint32_t aCellIndex) returns(int32_t aRow, int32_t aCol); 260 [Nested=inside_sync] sync TableColumnExtentAt(uint64_t aID, uint32_t aRow, uint32_t aCol) returns(uint32_t aExtent); 261 [Nested=inside_sync] sync TableRowExtentAt(uint64_t aID, uint32_t aRow, uint32_t aCol) returns(uint32_t aExtent); 262 [Nested=inside_sync] sync TableColumnDescription(uint64_t aID, uint32_t aCol) returns(nsString aDescription); 263 [Nested=inside_sync] sync TableRowDescription(uint64_t aID, uint32_t aRow) returns(nsString aDescription); 264 [Nested=inside_sync] sync TableColumnSelected(uint64_t aID, uint32_t aCol) returns(bool aSelected); 265 [Nested=inside_sync] sync TableRowSelected(uint64_t aID, uint32_t aRow) returns(bool aSelected); 266 [Nested=inside_sync] sync TableCellSelected(uint64_t aID, uint32_t aRow, uint32_t aCol) returns(bool aSelected); 267 [Nested=inside_sync] sync TableSelectedCellCount(uint64_t aID) returns(uint32_t aSelectedCells); 268 [Nested=inside_sync] sync TableSelectedColumnCount(uint64_t aID) returns(uint32_t aSelectedColumns); 269 [Nested=inside_sync] sync TableSelectedRowCount(uint64_t aID) returns(uint32_t aSelectedRows); 270 [Nested=inside_sync] sync TableSelectedCells(uint64_t aID) returns(uint64_t[] aCellIDs); 271 [Nested=inside_sync] sync TableSelectedCellIndices(uint64_t aID) returns(uint32_t[] aCellIndeces); 272 [Nested=inside_sync] sync TableSelectedColumnIndices(uint64_t aID) returns(uint32_t[] aColumnIndeces); 273 [Nested=inside_sync] sync TableSelectedRowIndices(uint64_t aID) returns(uint32_t[] aRowIndeces); 274 [Nested=inside_sync] sync TableSelectColumn(uint64_t aID, uint32_t aCol); 275 [Nested=inside_sync] sync TableSelectRow(uint64_t aID, uint32_t aRow); 276 [Nested=inside_sync] sync TableUnselectColumn(uint64_t aID, uint32_t aCol); 277 [Nested=inside_sync] sync TableUnselectRow(uint64_t aID, uint32_t aRow); 278 [Nested=inside_sync] sync TableIsProbablyForLayout(uint64_t aID) returns(bool aForLayout); 279 [Nested=inside_sync] sync AtkTableColumnHeader(uint64_t aID, int32_t aCol) 280 returns(uint64_t aHeaderID, bool aOk); 281 [Nested=inside_sync] sync AtkTableRowHeader(uint64_t aID, int32_t aRow) 282 returns(uint64_t aHeaderID, bool aOk); 283 284 [Nested=inside_sync] sync SelectedItems(uint64_t aID) returns(uint64_t[] aSelectedItemIDs); 285 [Nested=inside_sync] sync SelectedItemCount(uint64_t aID) returns(uint32_t aCount); 286 [Nested=inside_sync] sync GetSelectedItem(uint64_t aID, uint32_t aIndex) returns(uint64_t aSelected, bool aOk); 287 [Nested=inside_sync] sync IsItemSelected(uint64_t aID, uint32_t aIndex) returns(bool aSelected); 288 [Nested=inside_sync] sync AddItemToSelection(uint64_t aID, uint32_t aIndex) returns(bool aSuccess); 289 [Nested=inside_sync] sync RemoveItemFromSelection(uint64_t aID, uint32_t aIndex) returns(bool aSuccess); 290 [Nested=inside_sync] sync SelectAll(uint64_t aID) returns(bool aSuccess); 291 [Nested=inside_sync] sync UnselectAll(uint64_t aID) returns(bool aSuccess); 292 293 async TakeSelection(uint64_t aID); 294 async SetSelected(uint64_t aID, bool aSelected); 295 296 [Nested=inside_sync] sync DoAction(uint64_t aID, uint8_t aIndex) returns(bool aSuccess); 297 [Nested=inside_sync] sync ActionCount(uint64_t aID) returns(uint8_t aCount); 298 [Nested=inside_sync] sync ActionDescriptionAt(uint64_t aID, uint8_t aIndex) returns(nsString aDescription); 299 [Nested=inside_sync] sync ActionNameAt(uint64_t aID, uint8_t aIndex) returns(nsString aName); 300 [Nested=inside_sync] sync AccessKey(uint64_t aID) returns(uint32_t aKey, uint32_t aModifierMask); 301 [Nested=inside_sync] sync KeyboardShortcut(uint64_t aID) returns(uint32_t aKey, uint32_t aModifierMask); 302 [Nested=inside_sync] sync AtkKeyBinding(uint64_t aID) returns(nsString aResult); 303 304 [Nested=inside_sync] sync CurValue(uint64_t aID) returns(double aValue); 305 [Nested=inside_sync] sync SetCurValue(uint64_t aID, double aValue) returns(bool aRetVal); 306 [Nested=inside_sync] sync MinValue(uint64_t aID) returns(double aValue); 307 [Nested=inside_sync] sync MaxValue(uint64_t aID) returns(double aValue); 308 [Nested=inside_sync] sync Step(uint64_t aID) returns(double aStep); 309 310 async TakeFocus(uint64_t aID); 311 [Nested=inside_sync] sync FocusedChild(uint64_t aID) 312 returns(nullable PDocAccessible aResultDoc, uint64_t aResultID); 313 314 [Nested=inside_sync] sync Language(uint64_t aID) returns(nsString aLocale); 315 [Nested=inside_sync] sync DocType(uint64_t aID) returns(nsString aType); 316 [Nested=inside_sync] sync Title(uint64_t aID) returns(nsString aTitle); 317 [Nested=inside_sync] sync URL(uint64_t aID) returns(nsString aURL); 318 [Nested=inside_sync] sync MimeType(uint64_t aID) returns(nsString aMime); 319 [Nested=inside_sync] sync URLDocTypeMimeType(uint64_t aID) returns(nsString aURL, nsString aDocType, nsString aMimeType); 320 321 [Nested=inside_sync] sync ChildAtPoint(uint64_t aID, int32_t aX, int32_t aY, uint32_t aWhich) 322 returns(nullable PDocAccessible aResultDoc, uint64_t aResultID); 323 324 [Nested=inside_sync] sync Extents(uint64_t aID, bool aNeedsScreenCoords) 325 returns(int32_t aX, int32_t aY, int32_t aWidth, int32_t aHeight); 326 [Nested=inside_sync] sync ExtentsInCSSPixels(uint64_t aID) 327 returns(int32_t aX, int32_t aY, int32_t aWidth, int32_t aHeight); 328 [Nested=inside_sync] sync DOMNodeID(uint64_t aID) returns(nsString aDOMNodeID); 329}; 330 331} 332} 333