mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 05:41:12 +00:00
a959abd5c5
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
100 lines
3.0 KiB
Plaintext
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();
|
|
};
|