/* * Copyright (C) 2004 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #pragma once #include "ExceptionOr.h" #include "FloatSize.h" #include "FragmentScriptingPermission.h" #include "HTMLInterchange.h" #include #include #include namespace WebCore { class ArchiveResource; class ContainerNode; class Document; class DocumentFragment; class Element; class Frame; class HTMLElement; class Node; class Page; class QualifiedName; class VisibleSelection; struct PresentationSize; struct SimpleRange; void replaceSubresourceURLs(Ref&&, HashMap&&); void removeSubresourceURLAttributes(Ref&&, WTF::Function shouldRemoveURL); std::unique_ptr createPageForSanitizingWebContent(); enum class MSOListQuirks : bool { CheckIfNeeded, Disabled }; String sanitizeMarkup(const String&, MSOListQuirks = MSOListQuirks::Disabled, std::optional> fragmentSanitizer = std::nullopt); String sanitizedMarkupForFragmentInDocument(Ref&&, Document&, MSOListQuirks, const String& originalMarkup); WEBCORE_EXPORT Ref createFragmentFromText(const SimpleRange& context, const String& text); WEBCORE_EXPORT Ref createFragmentFromMarkup(Document&, const String& markup, const String& baseURL, ParserContentPolicy = AllowScriptingContent); ExceptionOr> createFragmentForInnerOuterHTML(Element&, const String& markup, ParserContentPolicy); RefPtr createFragmentForTransformToFragment(Document&, const String& sourceString, const String& sourceMIMEType); Ref createFragmentForImageAndURL(Document&, const String&, PresentationSize preferredSize); ExceptionOr> createContextualFragment(Element&, const String& markup, ParserContentPolicy); bool isPlainTextMarkup(Node*); // These methods are used by HTMLElement & ShadowRoot to replace the children with respected fragment/text. ExceptionOr replaceChildrenWithFragment(ContainerNode&, Ref&&); enum class ResolveURLs : uint8_t { No, Yes, YesExcludingLocalFileURLsForPrivacy }; enum class ConvertBlocksToInlines : uint8_t { No, Yes }; enum class SerializeComposedTree : uint8_t { No, Yes }; WEBCORE_EXPORT String serializePreservingVisualAppearance(const SimpleRange&, Vector* = nullptr, AnnotateForInterchange = AnnotateForInterchange::No, ConvertBlocksToInlines = ConvertBlocksToInlines::No, ResolveURLs = ResolveURLs::No); String serializePreservingVisualAppearance(const VisibleSelection&, ResolveURLs = ResolveURLs::No, SerializeComposedTree = SerializeComposedTree::No, Vector* = nullptr); enum class SerializedNodes : uint8_t { SubtreeIncludingNode, SubtreesOfChildren }; enum class SerializationSyntax : uint8_t { HTML, XML }; WEBCORE_EXPORT String serializeFragment(const Node&, SerializedNodes, Vector* = nullptr, ResolveURLs = ResolveURLs::No, Vector* tagNamesToSkip = nullptr, SerializationSyntax = SerializationSyntax::HTML); String urlToMarkup(const URL&, const String& title); WEBCORE_EXPORT String documentTypeString(const Document&); }