summaryrefslogtreecommitdiffstats
path: root/accessible/ipc/win/PDocAccessible.ipdl
blob: ac961f4ba47f602e681f675b8cefb44b2a2aa855 (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
/* -*- 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::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";
using mozilla::a11y::CacheUpdateType from "mozilla/a11y/IPCTypes.h";
[RefCounted] using mozilla::a11y::AccAttributes from "mozilla/a11y/IPCTypes.h";
using mozilla::WindowsHandle from "mozilla/ipc/IPCTypes.h";
using mozilla::LayoutDeviceIntRect from "Units.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]
sync 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 aIsAtEndOfLine,
                       bool aIsSelectionCollapsed, int32_t aGranularity);
  async TextChangeEvent(uint64_t aID, nsString aStr, int32_t aStart, uint32_t aLen,
                        bool aIsInsert, bool aFromUser);
  sync SyncTextChangeEvent(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 VirtualCursorChangeEvent(uint64_t aID,
                                 uint64_t aOldPosition,
                                 int32_t aOldStartOffset, int32_t aOldEndOffset,
                                 uint64_t aPosition,
                                 int32_t aStartOffset, int32_t aEndOffset,
                                 int16_t aReason, int16_t aBoundaryType,
                                 bool aFromUservcEvent);
  async ScrollingEvent(uint64_t aID, uint64_t aType,
                       uint32_t aScrollX, uint32_t aScrollY,
                       uint32_t aMaxScrollX, uint32_t aMaxScrollY);
  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:
  /*
   * Called as a result of focus shifting from chrome to content
   * elements through keyboard navigation.
   */
  async RestoreFocus();

  async TakeFocus(uint64_t aID);
  async TakeSelection(uint64_t aID);
  async SetSelected(uint64_t aID, bool aSelected);
  async ScrollTo(uint64_t aID, uint32_t aScrollType);

  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 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);

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

  async DoActionAsync(uint64_t aID, uint8_t aIndex);

  async SetCaretOffset(uint64_t aID, int32_t aOffset);

  async SetCurValue(uint64_t aID, double aValue);

  async __delete__();
};

}
}