/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. * * The origin of this IDL file is * https://wicg.github.io/sanitizer-api/#idl-index * * Copyright © 2020 the Contributors to the HTML Sanitizer API Specification, * published by the Web Platform Incubator Community Group under the W3C Community Contributor License Agreement (CLA). */ enum SanitizerPresets { "default" }; dictionary SetHTMLOptions { (Sanitizer or SanitizerConfig or SanitizerPresets) sanitizer = "default"; }; dictionary SetHTMLUnsafeOptions { // TODO: = {}; (Using optional to easily detect a missing sanitizer) [Pref="dom.security.sanitizer.enabled"] (Sanitizer or SanitizerConfig or SanitizerPresets) sanitizer; }; dictionary SanitizerElementNamespace { required DOMString name; DOMString? _namespace = "http://www.w3.org/1999/xhtml"; }; // Used by "elements" dictionary SanitizerElementNamespaceWithAttributes : SanitizerElementNamespace { sequence attributes; sequence removeAttributes; }; dictionary SanitizerAttributeNamespace { required DOMString name; DOMString? _namespace = null; }; dictionary SanitizerProcessingInstruction { required DOMString target; }; typedef (DOMString or SanitizerElementNamespace) SanitizerElement; typedef (DOMString or SanitizerElementNamespaceWithAttributes) SanitizerElementWithAttributes; typedef (DOMString or SanitizerProcessingInstruction) SanitizerPI; typedef (DOMString or SanitizerAttributeNamespace) SanitizerAttribute; dictionary SanitizerConfig { sequence elements; sequence removeElements; sequence replaceWithChildrenElements; [Pref="dom.security.sanitizer.processing-instructions"] sequence processingInstructions; [Pref="dom.security.sanitizer.processing-instructions"] sequence removeProcessingInstructions; sequence attributes; sequence removeAttributes; boolean comments; boolean dataAttributes; boolean javascriptURLs; }; [Exposed=Window, Pref="dom.security.sanitizer.enabled"] interface Sanitizer { [Throws, UseCounter] constructor(optional (SanitizerConfig or SanitizerPresets) configuration = "default"); // Query configuration: SanitizerConfig get(); // Modify a Sanitizer’s lists and fields: boolean allowElement(SanitizerElementWithAttributes element); boolean removeElement(SanitizerElement element); boolean replaceElementWithChildren(SanitizerElement element); [Pref="dom.security.sanitizer.processing-instructions"] boolean allowProcessingInstruction(SanitizerPI pi); [Pref="dom.security.sanitizer.processing-instructions"] boolean removeProcessingInstruction(SanitizerPI pi); boolean allowAttribute(SanitizerAttribute attribute); boolean removeAttribute(SanitizerAttribute attribute); boolean setComments(boolean allow); boolean setDataAttributes(boolean allow); boolean setJavascriptURLs(boolean allow); // Remove markup that executes script. May modify multiple lists: [UseCounter] boolean removeUnsafe(); };