/* -*- 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); }; } }