// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

interface Element : ParentNode {
  readonly attribute DOMString tagName;

  boolean hasAttribute(DOMString name);
  [TreatReturnedNullStringAs=Null] DOMString getAttribute(DOMString name);
  [RaisesException] void setAttribute(DOMString name, optional DOMString? value);
  void removeAttribute(DOMString name);

  sequence<Attr> getAttributes();

  void setNeedsLayout();
  void layout();

  // TODO(abarth): Move to Node.
  readonly attribute CSSStyleDeclaration style;

  // TODO(abarth): Remove these when we implement more of the system.
  [RaisesException] boolean matches(DOMString selectors);
  readonly attribute DOMTokenList classList;

  ClientRect getBoundingClientRect();
  readonly attribute long offsetLeft;
  readonly attribute long offsetTop;
  readonly attribute long offsetWidth;
  readonly attribute long offsetHeight;
  readonly attribute Element offsetParent;
  readonly attribute long clientLeft;
  readonly attribute long clientTop;
  readonly attribute long clientWidth;
  readonly attribute long clientHeight;

  attribute double x;
  attribute double y;
  attribute double width;
  attribute double height;
  attribute double minContentWidth; // Intrinsic width if all wrappable points wrap.
  attribute double maxContentWidth; // Intrinsic width if no wrappable points wrap.
  readonly attribute double alphabeticBaseline; // Distance from top to alphabetic baseline of first line
  readonly attribute double ideographicBaseline; // Distance from top to ideographic baseline of first line

  void paint(Canvas canvas);
};
