gecko-dev/dom/webidl/Range.webidl
Masayuki Nakano a959abd5c5 Bug 1318312 part.2 Mark Selection as "called by JS" when every Selection API which may cause changing selection is called by JS r=smaug
Selection needs to be able to distinguish if every selection change is caused by JS (i.e., via Selection API) or the others.

This patch maps some methods of Range and Selection to *JS().  Each of them marks its instance as "used by JS" and calls corresponding method.

With this change, Selection::NotifySelectionListeners() can move focus only when it's caused by Selection API.

MozReview-Commit-ID: 1GoLHiIJ10Y

--HG--
extra : rebase_source : 02d497f9e55b3325a2e01c3041cadb90881dccb8
2017-03-10 16:55:12 +09:00

100 lines
3.0 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/.
*
* The origin of this IDL file is
* http://dom.spec.whatwg.org/#range
* http://domparsing.spec.whatwg.org/#dom-range-createcontextualfragment
* http://dvcs.w3.org/hg/csswg/raw-file/tip/cssom-view/Overview.html#extensions-to-the-range-interface
*
* Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
* liability, trademark and document use rules apply.
*/
[Constructor]
interface Range {
[Throws]
readonly attribute Node startContainer;
[Throws]
readonly attribute unsigned long startOffset;
[Throws]
readonly attribute Node endContainer;
[Throws]
readonly attribute unsigned long endOffset;
readonly attribute boolean collapsed;
[Throws]
readonly attribute Node commonAncestorContainer;
[Throws, BinaryName="setStartJS"]
void setStart(Node refNode, unsigned long offset);
[Throws, BinaryName="setEndJS"]
void setEnd(Node refNode, unsigned long offset);
[Throws, BinaryName="setStartBeforeJS"]
void setStartBefore(Node refNode);
[Throws, BinaryName="setStartAfterJS"]
void setStartAfter(Node refNode);
[Throws, BinaryName="setEndBeforeJS"]
void setEndBefore(Node refNode);
[Throws, BinaryName="setEndAfterJS"]
void setEndAfter(Node refNode);
[BinaryName="collapseJS"]
void collapse(optional boolean toStart = false);
[Throws, BinaryName="selectNodeJS"]
void selectNode(Node refNode);
[Throws, BinaryName="selectNodeContentsJS"]
void selectNodeContents(Node refNode);
const unsigned short START_TO_START = 0;
const unsigned short START_TO_END = 1;
const unsigned short END_TO_END = 2;
const unsigned short END_TO_START = 3;
[Throws]
short compareBoundaryPoints(unsigned short how, Range sourceRange);
[Throws]
void deleteContents();
[Throws]
DocumentFragment extractContents();
[Throws]
DocumentFragment cloneContents();
[Throws]
void insertNode(Node node);
[Throws]
void surroundContents(Node newParent);
Range cloneRange();
void detach();
[Throws]
boolean isPointInRange(Node node, unsigned long offset);
[Throws]
short comparePoint(Node node, unsigned long offset);
[Throws]
boolean intersectsNode(Node node);
stringifier;
};
// http://domparsing.spec.whatwg.org/#dom-range-createcontextualfragment
partial interface Range {
[Throws]
DocumentFragment createContextualFragment(DOMString fragment);
};
// http://dvcs.w3.org/hg/csswg/raw-file/tip/cssom-view/Overview.html#extensions-to-the-range-interface
partial interface Range {
DOMRectList? getClientRects();
DOMRect getBoundingClientRect();
};
dictionary ClientRectsAndTexts {
required DOMRectList rectList;
required sequence<DOMString> textList;
};
partial interface Range {
[ChromeOnly, Throws]
ClientRectsAndTexts getClientRectsAndTexts();
};