/* -*- 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"

interface nsIAccessiblePivot;
interface mozIDOMWindowProxy;

webidl BrowsingContext;
webidl Document;

/**
 * An interface for in-process accessibility clients
 * that wish to retrieve information about a document.
 * When accessibility is turned on in Gecko,
 * there is an nsIAccessibleDocument for each document
 * whether it is XUL, HTML or whatever.
 * You can QueryInterface to nsIAccessibleDocument from the nsIAccessible for
 * the root node of a document or you can get one from
 * nsIAccessible::GetDocument().
 */
[scriptable, builtinclass, uuid(5cad5f91-fcce-40e7-913e-4671701d19b4)]
interface nsIAccessibleDocument : nsISupports
{
  /**
   * The URL of the document
   */
  readonly attribute AString URL;

  /**
   * The title of the document, as specified in the document.
   */
  readonly attribute AString title;

  /**
   * The mime type of the document
   */
  readonly attribute AString mimeType;

  /**
   * The doc type of the document, as specified in the document.
   */
  readonly attribute AString docType;

  /**
   * The Document interface associated with this document.
   */
  readonly attribute Document DOMDocument;

  /**
   * The nsIDOMWindow that the document resides in.
   */
  readonly attribute mozIDOMWindowProxy window;

  /**
   * Return the parent document accessible.
   */
  readonly attribute nsIAccessibleDocument parentDocument;

  /**
   * Return the count of child document accessibles.
   */
  readonly attribute unsigned long childDocumentCount;

  /**
   * Return the child document accessible at the given index.
   */
  nsIAccessibleDocument getChildDocumentAt(in unsigned long index);

  /**
   * The BrowsingContext of this document.
   */
  readonly attribute BrowsingContext browsingContext;
};
