accessible/public/nsIAccessNode.idl
author Jim Blandy <jimb@mozilla.org>
Wed, 18 Feb 2009 09:14:51 -0800
changeset 25144 00f309d0d507ad18969c99b1c558c213892587ba
parent 1751 94f87b2a4cb7aa0affbde32dfafa15c69011b807
child 39601 564a80675e32ecb9a6c0cc6692953e76ebbd8675
permissions -rw-r--r--
Bug 391488: Eliminate PTRDIFF macro; delete jssttddef.h. r=jimb Delete jsstddef.h, since its only remaining purpose is to make certain Win16-specific definitions; we don't support Win16 any more. In particular, we can just subtract pointers now, so the PTRDIFF macro is unnecessary noise. Most places get stddef.h via jstypes.h or some other header, so we can just delete #inclusions of jstddef.h. The exception is jskwgen.h, so there we explicitly include <stddef.h> instead.

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is
 * Netscape Communications Corporation.
 * Portions created by the Initial Developer are Copyright (C) 2003
 * the Initial Developer. All Rights Reserved.
 *
 * Original Author: Aaron Leventhal (aaronl@netscape.com)
 * Contributor(s):
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

#include "nsISupports.idl"

interface nsIDOMNode;
interface nsIAccessibleDocument;
interface nsIDOMCSSPrimitiveValue;

/**
 * An interface used by in-process accessibility clients
 * to get style, window, markup and other information about
 * a DOM node. When accessibility is active in Gecko,
 * every DOM node can have one nsIAccessNode for each
 * pres shell the DOM node is rendered in.
 * The nsIAccessNode implementations are instantiated lazily.
 * The nsIAccessNode tree for a given dom window
 * has a one to one relationship to the DOM tree.
 * If the DOM node for this access node is "accessible",
 * then a QueryInterface to nsIAccessible will succeed.
 *
 * @status UNDER_REVIEW
 */
[scriptable, uuid(71a3b4e7-e83d-45cf-a20e-9ce292bcf19f)]
interface nsIAccessNode : nsISupports
{
  /**
   * The DOM node this nsIAccessNode is associated with.
   */
  readonly attribute nsIDOMNode DOMNode;

  /**
   * The number of DOM children for the DOM node, which
   * matches the number of nsIAccessNode children for this
   * nsIAccessNode.
   */
  readonly attribute long numChildren;
  
  /**
   * Get the nth child of this node
   * @param childNum Zero-based child index
   * @return The nth nsIAccessNode child
   */
  nsIAccessNode getChildNodeAt(in long childNum);
  
  /**
   * The parent nsIAccessNode
   */
  readonly attribute nsIAccessNode parentNode;

  /**
   * The first nsIAccessNode child
   */
  readonly attribute nsIAccessNode firstChildNode;

  /**
   * The last nsIAccessNode child
   */
  readonly attribute nsIAccessNode lastChildNode;
  
  /**
   * The previous nsIAccessNode sibling
   */
  readonly attribute nsIAccessNode previousSiblingNode;

  /**
   * The next nsIAccessNode sibling
   */
  readonly attribute nsIAccessNode nextSiblingNode;

  /**
   * The nsIAccessibleDocument that this nsIAccessNode
   * resides in.
   */
  readonly attribute nsIAccessibleDocument accessibleDocument;
  
  /**
   * The innerHTML for the DOM node
   * This is a text string of all the markup inside the DOM
   * node, not including the start and end tag for the node.
   */
  readonly attribute DOMString innerHTML;

  /**
   * Makes an object visible on screen.
   *
   * @param scrollType - defines where the object should be placed on
   *                     the screen (see nsIAccessibleScrollType for
   *                     available constants).
   */
  void scrollTo(in unsigned long aScrollType);

  /**
   * Moves the top left of an object to a specified location.
   *
   * @param coordinateType - specifies whether the coordinates are relative to
   *                         the screen or the parent object (for available
   *                         constants refer to nsIAccessibleCoordinateType)
   * @param aX - defines the x coordinate
   * @param aY - defines the y coordinate
  */
  void scrollToPoint(in unsigned long aCoordinateType, in long aX, in long aY);

  /**
   * The OS window handle for the window this node
   * is being displayed in.
   */
  [noscript] readonly attribute voidPtr ownerWindow;
  
  /**
   * A unique ID calculated for this DOM node, for the 
   * purposes of caching and referencing this object.
   */
  [noscript] readonly attribute voidPtr uniqueID;

  /**
   * Retrieve the computed style value for this DOM node, if it is a DOM element.
   * Note: the meanings of width, height and other size measurements depend
   * on the version of CSS being used. Therefore, for bounds information, 
   * it is better to use nsIAccessible::accGetBounds.
   * @param pseudoElt The pseudo element to retrieve style for, or NULL
   *                  for general computed style information for this node.
   * @param propertyName Retrieve the computed style value for this property name,
   *                     for example "border-bottom".
   */
  DOMString getComputedStyleValue(in DOMString pseudoElt, in DOMString propertyName);

  /**
   * The method is similar to getComputedStyleValue() excepting that this one
   * returns nsIDOMCSSPrimitiveValue.
   */
  nsIDOMCSSPrimitiveValue getComputedStyleCSSValue(in DOMString pseudoElt,
                                                   in DOMString propertyName);

  /**
   * The language for the current DOM node, e.g. en, de, etc.
   */
  readonly attribute DOMString language;
};