// 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.

[
  CustomConstructor,
] interface Element : ParentNode {
  readonly attribute DOMString tagName;

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

  sequence<Attr> getAttributes();

  readonly attribute ShadowRoot shadowRoot;

  // 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);
  void focus();
  void blur();
  attribute long tabIndex;
  readonly attribute DOMTokenList classList;
  [RaisesException] ShadowRoot ensureShadowRoot();

  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;
};
