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

[
  ImplementedAs=ContainerNode,
] interface ParentNode : Node {
  readonly attribute Node firstChild;
  readonly attribute Node lastChild;
  readonly attribute Element firstElementChild;
  readonly attribute Element lastElementChild;

  sequence<Node> getChildNodes();
  sequence<Element> getChildElements();

  [RaisesException] void append(sequence<Node> nodes);
  [RaisesException] Node appendChild(Node node);
  [RaisesException] void prepend(sequence<Node> nodes);
  [RaisesException] Node prependChild(Node node);

  void removeChildren();
  [RaisesException] Node setChild(Node node);
  [RaisesException] void setChildren(sequence<Node> nodes);

  // TODO(abarth): Remove when we have the selector object.
  [RaisesException] Element querySelector(DOMString selectors);
  [RaisesException] sequence<Element> querySelectorAll(DOMString selectors);
};
