gecko-dev/dom/webidl/CaretStateChangedEvent.webidl
Makoto Kato 28844e8f80 Bug 1639087 - Add dragcaret event by accessible caret. r=TYLin,smaug
To support magnifying glass on GeckoView, I would like to add `dragcaret`
event and, clientX and clientX in CaretStateChangedEvent chrome event.

Actually, accessible caret fires `presscaret` and `releasecaret` when
accessbile caret is pressed or released. But when dragging this caret, no
chrome event is fired. Since magnifying glass listens to moving this caret,
I would like `dargcaret` for GeckoView.

Also, Users' dragging point is necessary to set better position of magnifying
glass windows. So I also want client point of dragging point on `presscaret`
and `dragcaret` event.

This event and properties are on layout.accessiblecaret.magnifier.enabled=true,
So this can be only for GeckoView.

Differential Revision: https://phabricator.services.mozilla.com/D137965
2022-04-08 05:11:48 +00:00

51 lines
1.6 KiB
Plaintext

/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
*/
enum CaretChangedReason {
"visibilitychange",
"updateposition",
"longpressonemptycontent",
"taponcaret",
"presscaret",
"releasecaret",
"scroll",
"dragcaret"
};
dictionary CaretStateChangedEventInit : EventInit {
boolean collapsed = true;
DOMRectReadOnly? boundingClientRect = null;
CaretChangedReason reason = "visibilitychange";
boolean caretVisible = false;
boolean caretVisuallyVisible = false;
boolean selectionVisible = false;
boolean selectionEditable = false;
DOMString selectedTextContent = "";
long clientX = 0;
long clientY = 0;
};
[ChromeOnly,
Exposed=Window]
interface CaretStateChangedEvent : Event {
constructor(DOMString type,
optional CaretStateChangedEventInit eventInit = {});
readonly attribute boolean collapsed;
/* The bounding client rect is relative to the visual viewport. */
readonly attribute DOMRectReadOnly? boundingClientRect;
readonly attribute CaretChangedReason reason;
readonly attribute boolean caretVisible;
readonly attribute boolean caretVisuallyVisible;
readonly attribute boolean selectionVisible;
readonly attribute boolean selectionEditable;
readonly attribute DOMString selectedTextContent;
[Pref="layout.accessiblecaret.magnifier.enabled"]
readonly attribute long clientX;
[Pref="layout.accessiblecaret.magnifier.enabled"]
readonly attribute long clientY;
};