summaryrefslogtreecommitdiffstats
path: root/accessible/ipc/PDocAccessible.ipdl
blob: d43fad823e55a1dcebb597c00a98e8ee25656f24 (plain)
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
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

include protocol PBrowser;

include DocAccessibleTypes;

include "mozilla/GfxMessageUtils.h";

using mozilla::LayoutDeviceIntRect from "Units.h";
using mozilla::LayoutDeviceIntPoint from "Units.h";
using mozilla::LayoutDeviceIntSize from "Units.h";
using mozilla::a11y::role from "mozilla/a11y/IPCTypes.h";
using mozilla::a11y::AccType from "mozilla/a11y/IPCTypes.h";
using mozilla::a11y::AccGenericType from "mozilla/a11y/IPCTypes.h";
[RefCounted] using mozilla::a11y::AccAttributes from "mozilla/a11y/IPCTypes.h";
using mozilla::a11y::CacheUpdateType from "mozilla/a11y/IPCTypes.h";
using mozilla::gfx::Matrix4x4 from "mozilla/gfx/Matrix.h";

namespace mozilla {
namespace a11y {

struct AccessibleData
{
  uint64_t ID;
  role Role;
  uint64_t ParentID;
  uint32_t IndexInParent;
  AccType Type;
  AccGenericType GenericTypes;
  uint8_t RoleMapEntryIndex;
  nullable AccAttributes CacheFields;
};

struct TextRangeData
{
  uint64_t StartID;
  uint64_t EndID;
  int32_t StartOffset;
  int32_t EndOffset;
};

[ManualDealloc, ChildImpl=virtual, ParentImpl=virtual]
protocol PDocAccessible
{
  manager PBrowser;

parent:
  async Shutdown();

  /*
   * Notify the parent process the document in the child process is firing an
   * event.
   */
  async Event(uint64_t aID, uint32_t type);
  async ShowEvent(AccessibleData[] aNewTree, bool aEventSuppressed,
                  bool aComplete, bool aFromuser);
  async HideEvent(uint64_t aRootID, bool aFromUser);
  async StateChangeEvent(uint64_t aID, uint64_t aState, bool aEnabled);
  async CaretMoveEvent(uint64_t aID,
                       LayoutDeviceIntRect aCaretRect,
                       int32_t aOffset,
                       bool aIsSelectionCollapsed, bool aIsAtEndOfLine,
                       int32_t aGranularity, bool aFromUser);
  async TextChangeEvent(uint64_t aID, nsString aStr, int32_t aStart, uint32_t aLen,
                        bool aIsInsert, bool aFromUser);
  async SelectionEvent(uint64_t aID, uint64_t aWidgetID, uint32_t aType);
  async RoleChangedEvent(role aRole, uint8_t aRoleMapEntryIndex);
  async FocusEvent(uint64_t aID, LayoutDeviceIntRect aCaretRect);
  async ScrollingEvent(uint64_t aID, uint64_t aType,
                       uint32_t aScrollX, uint32_t aScrollY,
                       uint32_t aMaxScrollX, uint32_t aMaxScrollY);
#ifndef XP_WIN
  async AnnouncementEvent(uint64_t aID,
                          nsString aAnnouncement,
                          uint16_t aPriority);
#endif
  async TextSelectionChangeEvent(uint64_t aID, TextRangeData[] aSelection);

  /*
   * Tell the parent document to bind the existing document as a new child
   * document.
   */
  async BindChildDoc(PDocAccessible aChildDoc, uint64_t aID);

  /*
   * Cache The World
   */
  async Cache(CacheUpdateType aUpdateType, CacheData[] aData);

  /*
   * Lists of accessibles that either gained or lost a selected state.
   */
  async SelectedAccessiblesChanged(uint64_t[] aSelectedIDs, uint64_t[] aUnselectedIDs);

  /*
   * Tell the parent process that the given Accessibles are about to be moved
   * via subsequent hide and show events.
   */
  async AccessiblesWillMove(uint64_t[] aIDs);

child:
  async __delete__();

  /*
   * Called as a result of focus shifting from chrome to content
   * elements through keyboard navigation.
   */
  async RestoreFocus();

  // LocalAccessible
  async ScrollTo(uint64_t aID, uint32_t aScrollType);
  async ScrollToPoint(uint64_t aID, uint32_t aScrollType, int32_t aX,
                      int32_t aY);
#ifndef XP_WIN
  async Announce(uint64_t aID, nsString aAnnouncement, uint16_t aPriority);
#endif

  // AccessibleText

  async SetCaretOffset(uint64_t aID, int32_t aOffset);

  async SetTextSelection(uint64_t aStartID, int32_t aStartOffset,
                     uint64_t aEndID, int32_t aEndOffset,
                     int32_t aSelectionNum);
  async RemoveTextSelection(uint64_t aID, int32_t aSelectionNum);

  async ScrollTextLeafRangeIntoView(uint64_t aStartID, int32_t aStartOffset,
                                    uint64_t aEndID, int32_t aEndOffset,
                                    uint32_t aScrollType);
  async ScrollSubstringToPoint(uint64_t aID,
                               int32_t aStartOffset,
                               int32_t aEndOffset,
                               uint32_t aCoordinateType,
                               int32_t aX, int32_t aY);

  async ReplaceText(uint64_t aID, nsString aText);
  async InsertText(uint64_t aID, nsString aText, int32_t aPosition);
  async CopyText(uint64_t aID, int32_t aStartPos, int32_t aEndPos);
  async CutText(uint64_t aID, int32_t aStartPos, int32_t aEndPos);
  async DeleteText(uint64_t aID, int32_t aStartPos, int32_t aEndPos);
  async PasteText(uint64_t aID, int32_t aPosition);

  async TakeSelection(uint64_t aID);
  async SetSelected(uint64_t aID, bool aSelected);

  async DoActionAsync(uint64_t aID, uint8_t aIndex);

  async SetCurValue(uint64_t aID, double aValue);

  async TakeFocus(uint64_t aID);

  /*
   * Verify the cache. Used for testing purposes.
   */
  async VerifyCache(uint64_t aID, uint64_t aCacheDomain, nullable AccAttributes aFields);

};

}
}