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