blob: 41e05f71567d81207d5420b653b34441151a6f09 [file] [log] [blame]
/*
* Copyright (C) 2004 Apple Computer, 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 COMPUTER, 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 COMPUTER, 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.
*/
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_SERIALIZERS_SERIALIZATION_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_SERIALIZERS_SERIALIZATION_H_
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/css/css_property_names.h"
#include "third_party/blink/renderer/core/dom/parser_content_policy.h"
#include "third_party/blink/renderer/core/dom/shadow_root.h"
#include "third_party/blink/renderer/core/editing/forward.h"
#include "third_party/blink/renderer/core/editing/serializers/create_markup_options.h"
#include "third_party/blink/renderer/core/editing/serializers/html_interchange.h"
#include "third_party/blink/renderer/platform/heap/handle.h"
#include "third_party/blink/renderer/platform/wtf/forward.h"
namespace blink {
class ContainerNode;
class Document;
class DocumentFragment;
class Element;
class ExceptionState;
class Node;
class CSSPropertyValueSet;
enum ChildrenOnly { kIncludeNode, kChildrenOnly };
enum IncludeShadowRoots { kNoShadowRoots, kIncludeShadowRoots };
DocumentFragment* CreateFragmentFromText(const EphemeralRange& context,
const String& text);
DocumentFragment* CreateFragmentFromMarkup(
Document&,
const String& markup,
const String& base_url,
ParserContentPolicy = kAllowScriptingContent);
DocumentFragment* CreateFragmentFromMarkupWithContext(Document&,
const String& markup,
unsigned fragment_start,
unsigned fragment_end,
const String& base_url,
ParserContentPolicy);
DocumentFragment* CreateFragmentForInnerOuterHTML(const String&,
Element*,
ParserContentPolicy,
const char* method,
bool include_shadow_roots,
ExceptionState&);
DocumentFragment* CreateFragmentForTransformToFragment(
const String&,
const String& source_mime_type,
Document& output_doc);
DocumentFragment* CreateContextualFragment(const String&,
Element*,
ParserContentPolicy,
ExceptionState&);
bool IsPlainTextMarkup(Node*);
// These methods are used by HTMLElement & ShadowRoot to replace the
// children with respected fragment/text.
void ReplaceChildrenWithFragment(ContainerNode*,
DocumentFragment*,
ExceptionState&);
void ReplaceChildrenWithText(ContainerNode*, const String&, ExceptionState&);
using ClosedRootsSet = HeapHashSet<Member<ShadowRoot>>;
CORE_EXPORT String
CreateMarkup(const Node*,
ChildrenOnly = kIncludeNode,
AbsoluteURLs = kDoNotResolveURLs,
IncludeShadowRoots = kNoShadowRoots,
ClosedRootsSet include_closed_roots = ClosedRootsSet());
CORE_EXPORT String
CreateMarkup(const Position& start,
const Position& end,
const CreateMarkupOptions& options = CreateMarkupOptions());
CORE_EXPORT String
CreateMarkup(const PositionInFlatTree& start,
const PositionInFlatTree& end,
const CreateMarkupOptions& options = CreateMarkupOptions());
CORE_EXPORT DocumentFragment* CreateSanitizedFragmentFromMarkupWithContext(
Document&,
const String& raw_markup,
unsigned fragment_start,
unsigned fragment_end,
const String& base_url);
void MergeWithNextTextNode(Text*, ExceptionState&);
bool PropertyMissingOrEqualToNone(CSSPropertyValueSet*, CSSPropertyID);
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_SERIALIZERS_SERIALIZATION_H_