/* -*- Mode: IDL; 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 "nsIDOMHTMLElement.idl"

interface nsIControllers;
interface nsIDOMValidityState;

/**
 * The nsIDOMHTMLTextAreaElement interface is the interface to a
 * [X]HTML textarea element.
 *
 * This interface is trying to follow the DOM Level 2 HTML specification:
 * http://www.w3.org/TR/DOM-Level-2-HTML/
 *
 * with changes from the work-in-progress WHATWG HTML specification:
 * http://www.whatwg.org/specs/web-apps/current-work/
 */

[scriptable, uuid(7a4aeb2e-fcf3-443e-b002-ca1c8ea322e9)]
interface nsIDOMHTMLTextAreaElement : nsISupports
{
           attribute boolean               autofocus;
           attribute unsigned long         cols;
           attribute boolean               disabled;
  readonly attribute nsIDOMHTMLFormElement form;
           attribute long                  maxLength;
           attribute DOMString             name;
           attribute DOMString             placeholder;
           attribute boolean               readOnly;
           attribute boolean               required;
           attribute unsigned long         rows;
  /**
   * Reflects the wrap content attribute. Possible values are "soft", "hard" and
   * "off". "soft" is the default.
   */
  [Null(Stringify)]
           attribute DOMString             wrap;

  readonly attribute DOMString             type;
           attribute DOMString             defaultValue;
           attribute DOMString             value;
  readonly attribute long                  textLength;

  // The following lines are part of the constraint validation API, see:
  // http://www.whatwg.org/specs/web-apps/current-work/#the-constraint-validation-api
  readonly attribute boolean               willValidate;
  readonly attribute nsIDOMValidityState   validity;
  readonly attribute DOMString             validationMessage;
  boolean checkValidity();
  void setCustomValidity(in DOMString error);

  void select();
           attribute long                  selectionStart;
           attribute long                  selectionEnd;
  void setSelectionRange(in long selectionStart, in long selectionEnd, [optional] in DOMString direction);
           attribute DOMString             selectionDirection;


  // Mozilla extensions
  // Please make sure to update the HTMLTextAreaElement Web IDL interface to
  // mirror the list of Mozilla extensions here when changing it.
  readonly attribute nsIControllers   controllers;
};
