/* -*- Mode: C++; 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/. */

#include "nsISupports.idl"

/**
 * nsIAccessibleProvider interface is used to link element and accessible
   object. For that XBL binding of element should implement the interface.
 */

[scriptable, uuid(f7e531b6-bc29-4d3d-8c91-60fc2b71eb40)]
interface nsIAccessibleProvider : nsISupports
{
  /**
   * Constants set of common use.
   */

  /** Do not create an accessible for this object
   * This is useful if an ancestor binding already implements nsIAccessibleProvider,
   * but no accessible is desired for the inheriting binding
   */
  const long NoAccessible = 0;

  /** For elements that spawn a new document. For example now it is used by
    <xul:iframe>, <xul:browser> and <xul:editor>. */
  const long OuterDoc = 0x00000001;

  /**
   * Constants set is used by XUL controls.
   */

  const long XULAlert = 0x00001001;
  const long XULButton = 0x00001002;
  const long XULCheckbox = 0x00001003;
  const long XULColorPicker = 0x00001004;
  const long XULColorPickerTile = 0x00001005;
  const long XULCombobox = 0x00001006;
  const long XULDropmarker = 0x00001007;
  const long XULGroupbox = 0x00001008;
  const long XULImage = 0x00001009;
  const long XULLink = 0x0000100A;
  const long XULListbox = 0x0000100B;
  const long XULListCell = 0x00001026;
  const long XULListHead = 0x00001024;
  const long XULListHeader = 0x00001025;
  const long XULListitem = 0x0000100C;
  const long XULMenubar = 0x0000100D;
  const long XULMenuitem = 0x0000100E;
  const long XULMenupopup = 0x0000100F;
  const long XULMenuSeparator = 0x00001010;
  const long XULPane    = 0x00001011;
  const long XULProgressMeter = 0x00001012;
  const long XULScale = 0x00001013;
  const long XULStatusBar = 0x00001014;
  const long XULRadioButton = 0x00001015;
  const long XULRadioGroup = 0x00001016;

  /** Used for XUL tab element */
  const long XULTab = 0x00001017;
  /** Used for XUL tabs element, a container for tab elements */
  const long XULTabs = 0x00001018;
  /** Used for XUL deck frame */
  const long XULDeck = 0x00001019;

  const long XULText             = 0x0000101A;
  const long XULTextBox          = 0x0000101B;
  const long XULThumb            = 0x0000101C;
  const long XULTree             = 0x0000101D;
  const long XULTreeColumns      = 0x0000101E;
  const long XULTreeColumnItem   = 0x0000101F;
  const long XULToolbar          = 0x00001020;
  const long XULToolbarSeparator = 0x00001021;
  const long XULTooltip          = 0x00001022;
  const long XULToolbarButton    = 0x00001023;

  /**
   * Return one of constants declared above.
   */
  readonly attribute long accessibleType;
};
