DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (1aeaa33a64f9)

VCS Links

Line Code
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 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* 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 "nsISelection.idl"

interface nsRange;
interface nsIDOMNode;
interface nsISelectionListener;
interface nsIContent;
interface nsINode;

%{C++
class nsIFrame;
struct nsPoint;
struct ScrollAxis;
#include "nsDirection.h"
#include "nsIPresShell.h" // TODO: Remove this include
#include "nsTArrayForwardDeclare.h"
#include "mozilla/EventForwards.h"
%}

[ptr] native nsIFrame(nsIFrame);
[ptr] native RangeArray(nsTArray<nsRange*>);
[ref] native nsPointRef(nsPoint);
native nsDirection(nsDirection);
native ScrollAxis(nsIPresShell::ScrollAxis);

[scriptable, builtinclass, uuid(0c9f4f74-ee7e-4fe9-be6b-0ba856368178)]
interface nsISelectionPrivate : nsISupports
 {
    const short ENDOFPRECEDINGLINE=0;
    const short STARTOFNEXTLINE=1;

    attribute boolean interlinePosition;
    [noscript] attribute nsIContent ancestorLimiter;

    DOMString  toStringWithFormat(in string formatType, in unsigned long flags, in int32_t wrapColumn);
    void  addSelectionListener(in nsISelectionListener newListener);
    void  removeSelectionListener(in nsISelectionListener listenerToRemove);

    /* Table selection stuff
       We should probably move this and table-related
       items in nsFrameSelection  to a
       new nsITableSelection interface
    */
    const long TABLESELECTION_NONE     = 0;
    const long TABLESELECTION_CELL     = 1;
    const long TABLESELECTION_ROW      = 2;
    const long TABLESELECTION_COLUMN   = 3;
    const long TABLESELECTION_TABLE    = 4;
    const long TABLESELECTION_ALLCELLS = 5;

    /** Test if supplied range points to a single table element:
      *    Result is one of above constants. "None" means
      *    a table element isn't selected.
      */
    [noscript] long getTableSelectionType(in nsIDOMRange range);

    /* canCacheFrameOffset
     * Frame Offset cache can be used just during calling nsEditor::EndPlaceHolderTransaction.
     * EndPlaceHolderTransaction will give rise to reflow/refreshing view/scroll, and call times
     * of nsTextFrame::GetPointFromOffset whose return value is to be cached.
     * see bugs 35296 and 199412
     */
    [noscript] attribute boolean canCacheFrameOffset;

    /* GetCachedOffsetForFrame
     * Returns cached value for nsTextFrame::GetPointFromOffset.
     */
    [noscript] void getCachedFrameOffset(in nsIFrame aFrame, in int32_t inOffset, in nsPointRef aPoint);

    /**
     * Get the direction of the selection.
     */
    [noscript, notxpcom] nsDirection getSelectionDirection();
    [noscript, notxpcom] void setSelectionDirection(in nsDirection aDirection);

    /**
     * Returns the type of the selection (see nsISelectionController for
     * available constants).
     */
    readonly attribute short type;

    /**
     * Return array of ranges intersecting with the given DOM interval.
     */
    void GetRangesForInterval(
        in nsIDOMNode beginNode, in int32_t beginOffset,
        in nsIDOMNode endNode, in int32_t endOffset,
        in boolean allowAdjacent,
        out uint32_t resultCount,
        [retval, array, size_is(resultCount)] out nsIDOMRange results);

    [noscript] void GetRangesForIntervalArray(
        in nsINode beginNode, in int32_t beginOffset,
        in nsINode endNode, in int32_t endOffset,
        in boolean allowAdjacent,
        in RangeArray results);

    /**
     * Scrolls a region of the selection, so that it is visible in
     * the scrolled view.
     *
     * @param aRegion - the region inside the selection to scroll into view
     *                  (see selection region constants defined in
     *                   nsISelectionController).
     * @param aIsSynchronous - when true, scrolls the selection into view
     *                         before returning. If false, posts a request which
     *                         is processed at some point after the method returns.
     * @param aVPercent - how to align the frame vertically.
     * @param aHPercent - how to align the frame horizontally.
     */
    void scrollIntoView(in short aRegion, in boolean aIsSynchronous,
                        in int16_t aVPercent,
                        in int16_t aHPercent);

    /**
     * Scrolls a region of the selection, so that it is visible in
     * the scrolled view.
     *
     * @param aRegion - the region inside the selection to scroll into view
     *                  (see selection region constants defined in
     *                   nsISelectionController).
     * @param aIsSynchronous - when true, scrolls the selection into view
     *                         before returning. If false, posts a request which
     *                         is processed at some point after the method returns.
     * @param aVertical - how to align the frame vertically and when.
     *                    See nsIPresShell.h:ScrollAxis for details.
     * @param aHorizontal - how to align the frame horizontally and when.
     *                    See nsIPresShell.h:ScrollAxis for details.
     */
    [noscript] void scrollIntoViewInternal(in short aRegion,
                                           in boolean aIsSynchronous,
                                           in ScrollAxis aVertical,
                                           in ScrollAxis aHorizontal);

    /**
     * Modifies the cursor Bidi level after a change in keyboard direction
     * @param langRTL is PR_TRUE if the new language is right-to-left or
     *                PR_FALSE if the new language is left-to-right.
     */
    [noscript] void selectionLanguageChange(in boolean langRTL);

    /**
     * setColors() sets custom colors for the selection.
     * Currently, this is supported only when the selection type is SELECTION_FIND.
     * Otherwise, throws an exception.
     *
     * @param aForegroundColor     The foreground color of the selection.
     *                             If this is "currentColor", foreground color
     *                             isn't changed by this selection.
     * @param aBackgroundColor     The background color of the selection.
     *                             If this is "transparent", background color is
     *                             never painted.
     * @param aAltForegroundColor  The alternative foreground color of the
     *                             selection.
     *                             If aBackgroundColor doesn't have sufficient
     *                             contrast with its around or foreground color
     *                             if "currentColor" is specified, alternative
     *                             colors are used if it have higher contrast.
     * @param aAltBackgroundColor  The alternative background color of the
     *                             selection.
     */
    void setColors(in DOMString aForegroundColor,
                   in DOMString aBackgroundColor,
                   in DOMString aAltForegroundColor,
                   in DOMString aAltBackgroundColor);

    /**
     * resetColors() forget the customized colors which were set by setColors().
     */
    void resetColors();
};