// 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 Node {
  Node cloneNode([Named] optional boolean deep = true);

  readonly attribute ParentNode owner;
  readonly attribute ParentNode parentNode;
  readonly attribute Element parentElement;

  readonly attribute Node nextSibling;
  readonly attribute Node previousSibling;
  readonly attribute Element nextElementSibling;
  readonly attribute Element previousElementSibling;

  [RaisesException, ImplementedAs=newInsertBefore] void insertBefore(sequence<Node> nodes);
  [RaisesException, ImplementedAs=newInsertAfter] void insertAfter(sequence<Node> nodes);
  [RaisesException] void replaceWith(sequence<Node> nodes);

  [RaisesException] void remove();

  [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString textContent;
};
