/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * 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 the Mozilla browser.
 * 
 * The Initial Developer of the Original Code is Netscape
 * Communications Corporation. Portions created by Netscape are
 * Copyright (C) 1999 Netscape Communications Corporation. All
 * Rights Reserved.
 * 
 * Original Author: Eric Vaughan (evaughan@netscape.com)
 * 
 * Contributor(s): 
 */

#include "nsISupports.idl"
#include "domstubs.idl"
#include "nsIAtom.idl"
#include "domstubs.idl"
#include "nsIAccessible.idl"

[scriptable, uuid(68D9720A-0984-42b6-A3F5-8237ED925727)]
interface nsIAccessibilityService : nsISupports
{
  nsIAccessible createRootAccessible(in nsISupports aPresContext, in nsISupports aFrame);
  nsIAccessible createHTMLSelectAccessible(in nsIAtom aAccessible, in nsIDOMNode aNode, in nsISupports aPresShell);
  nsIAccessible createHTMLCheckboxAccessible(in nsISupports aFrame);
  nsIAccessible createHTMLRadioButtonAccessible(in nsISupports aFrame);
  nsIAccessible createHTMLButtonAccessible(in nsISupports aFrame);
  nsIAccessible createHTML4ButtonAccessible(in nsISupports aFrame);
  nsIAccessible createHTMLTextAccessible(in nsISupports aFrame);
  nsIAccessible createHTMLImageAccessible(in nsISupports aFrame);
  nsIAccessible createHTMLAreaAccessible(in nsISupports aPresShell, in nsIDOMNode aDOMNode, in nsIAccessible aAccParent);
  nsIAccessible createHTMLTableAccessible(in nsISupports aFrame);
  nsIAccessible createHTMLTableCellAccessible(in nsISupports aFrame);
  nsIAccessible createHTMLTextFieldAccessible(in nsISupports aFrame);
  nsIAccessible createHTMLIFrameAccessible(in nsIDOMNode aNode, in nsISupports aPresContext);
};


%{ C++

// for component registration
// {DE401C37-9A7F-4278-A6F8-3DE2833989EF}
#define NS_ACCESSIBILITY_SERVICE_CID \
{ 0xde401c37, 0x9a7f, 0x4278, { 0xa6, 0xf8, 0x3d, 0xe2, 0x83, 0x39, 0x89, 0xef } }

extern nsresult
NS_NewAccessibilityService(nsIAccessibilityService** aResult);
%}
