// GENERATED CONTENT - DO NOT EDIT
// Content was automatically extracted by Reffy into reffy-reports
// (https://github.com/tidoust/reffy-reports)
// Source: DOM Parsing and Serialization (https://w3c.github.io/DOM-Parsing/)

[Constructor, Exposed=Window]
interface DOMParser {
  [NewObject] Document parseFromString(DOMString str, SupportedType type);
};

enum SupportedType {
  "text/html",
  "text/xml",
  "application/xml",
  "application/xhtml+xml",
  "image/svg+xml"
};

[Constructor, Exposed=Window]
interface XMLSerializer {
  DOMString serializeToString(Node root);
};

interface mixin InnerHTML {
  [CEReactions, TreatNullAs=EmptyString] attribute DOMString innerHTML;
};

Element includes InnerHTML;
ShadowRoot includes InnerHTML;

partial interface Element {
  [CEReactions, TreatNullAs=EmptyString] attribute DOMString outerHTML;
  [CEReactions] void insertAdjacentHTML(DOMString position, DOMString text);
};

partial interface Range {
  [CEReactions, NewObject] DocumentFragment createContextualFragment(DOMString fragment);
};
