| Index: Source/core/editing/StyledMarkupAccumulator.cpp
|
| diff --git a/Source/core/editing/StyledMarkupAccumulator.cpp b/Source/core/editing/StyledMarkupAccumulator.cpp
|
| deleted file mode 100644
|
| index 05a9408b2f6408dc4af1babbf4d48fc2d50a2477..0000000000000000000000000000000000000000
|
| --- a/Source/core/editing/StyledMarkupAccumulator.cpp
|
| +++ /dev/null
|
| @@ -1,228 +0,0 @@
|
| -/*
|
| - * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
|
| - * Copyright (C) 2008, 2009, 2010, 2011 Google Inc. All rights reserved.
|
| - * Copyright (C) 2011 Igalia S.L.
|
| - * Copyright (C) 2011 Motorola Mobility. 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.
|
| - */
|
| -
|
| -#include "config.h"
|
| -#include "core/editing/StyledMarkupAccumulator.h"
|
| -
|
| -#include "core/css/StylePropertySet.h"
|
| -#include "core/dom/Text.h"
|
| -#include "core/editing/EditingUtilities.h"
|
| -#include "core/editing/iterators/TextIterator.h"
|
| -#include "wtf/text/StringBuilder.h"
|
| -
|
| -namespace blink {
|
| -
|
| -namespace {
|
| -
|
| -size_t totalLength(const Vector<String>& strings)
|
| -{
|
| - size_t length = 0;
|
| - for (const auto& string : strings)
|
| - length += string.length();
|
| - return length;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -using namespace HTMLNames;
|
| -
|
| -StyledMarkupAccumulator::StyledMarkupAccumulator(EAbsoluteURLs shouldResolveURLs, const TextOffset& start, const TextOffset& end, const PassRefPtrWillBeRawPtr<Document> document, EAnnotateForInterchange shouldAnnotate, ConvertBlocksToInlines convertBlocksToInlines)
|
| - : m_formatter(shouldResolveURLs)
|
| - , m_start(start)
|
| - , m_end(end)
|
| - , m_document(document)
|
| - , m_shouldAnnotate(shouldAnnotate)
|
| - , m_convertBlocksToInlines(convertBlocksToInlines)
|
| -{
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendEndTag(const Element& element)
|
| -{
|
| - appendEndMarkup(m_result, element);
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendStartMarkup(Node& node)
|
| -{
|
| - m_formatter.appendStartMarkup(m_result, node, nullptr);
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendEndMarkup(StringBuilder& result, const Element& element)
|
| -{
|
| - m_formatter.appendEndMarkup(result, element);
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendText(Text& text)
|
| -{
|
| - const String& str = text.data();
|
| - unsigned length = str.length();
|
| - unsigned start = 0;
|
| - if (m_end.isNotNull()) {
|
| - if (text == m_end.text())
|
| - length = m_end.offset();
|
| - }
|
| - if (m_start.isNotNull()) {
|
| - if (text == m_start.text()) {
|
| - start = m_start.offset();
|
| - length -= start;
|
| - }
|
| - }
|
| - MarkupFormatter::appendCharactersReplacingEntities(m_result, str, start, length, m_formatter.entityMaskForText(text));
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendTextWithInlineStyle(Text& text, PassRefPtrWillBeRawPtr<EditingStyle> inlineStyle)
|
| -{
|
| - if (inlineStyle) {
|
| - // wrappingStyleForSerialization should have removed -webkit-text-decorations-in-effect
|
| - ASSERT(propertyMissingOrEqualToNone(inlineStyle->style(), CSSPropertyWebkitTextDecorationsInEffect));
|
| - ASSERT(m_document);
|
| -
|
| - m_result.appendLiteral("<span style=\"");
|
| - MarkupFormatter::appendAttributeValue(m_result, inlineStyle->style()->asText(), m_document->isHTMLDocument());
|
| - m_result.appendLiteral("\">");
|
| - }
|
| - if (!shouldAnnotate()) {
|
| - appendText(text);
|
| - } else {
|
| - const bool useRenderedText = !enclosingElementWithTag(firstPositionInNode(&text), selectTag);
|
| - String content = useRenderedText ? renderedText(text) : stringValueForRange(text);
|
| - StringBuilder buffer;
|
| - MarkupFormatter::appendCharactersReplacingEntities(buffer, content, 0, content.length(), EntityMaskInPCDATA);
|
| - m_result.append(convertHTMLTextToInterchangeFormat(buffer.toString(), text));
|
| - }
|
| - if (inlineStyle)
|
| - m_result.append("</span>");
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendElementWithInlineStyle(const Element& element, PassRefPtrWillBeRawPtr<EditingStyle> style)
|
| -{
|
| - appendElementWithInlineStyle(m_result, element, style);
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendElementWithInlineStyle(StringBuilder& out, const Element& element, PassRefPtrWillBeRawPtr<EditingStyle> style)
|
| -{
|
| - const bool documentIsHTML = element.document().isHTMLDocument();
|
| - m_formatter.appendOpenTag(out, element, nullptr);
|
| - AttributeCollection attributes = element.attributes();
|
| - for (const auto& attribute : attributes) {
|
| - // We'll handle the style attribute separately, below.
|
| - if (attribute.name() == styleAttr)
|
| - continue;
|
| - m_formatter.appendAttribute(out, element, attribute, nullptr);
|
| - }
|
| - if (style && !style->isEmpty()) {
|
| - out.appendLiteral(" style=\"");
|
| - MarkupFormatter::appendAttributeValue(out, style->style()->asText(), documentIsHTML);
|
| - out.append('\"');
|
| - }
|
| - m_formatter.appendCloseTag(out, element);
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendElement(const Element& element)
|
| -{
|
| - appendElement(m_result, element);
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendElement(StringBuilder& out, const Element& element)
|
| -{
|
| - m_formatter.appendOpenTag(out, element, nullptr);
|
| - AttributeCollection attributes = element.attributes();
|
| - for (const auto& attribute : attributes)
|
| - m_formatter.appendAttribute(out, element, attribute, nullptr);
|
| - m_formatter.appendCloseTag(out, element);
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::wrapWithStyleNode(StylePropertySet* style)
|
| -{
|
| - // wrappingStyleForSerialization should have removed -webkit-text-decorations-in-effect
|
| - ASSERT(propertyMissingOrEqualToNone(style, CSSPropertyWebkitTextDecorationsInEffect));
|
| - ASSERT(m_document);
|
| -
|
| - StringBuilder openTag;
|
| - openTag.appendLiteral("<div style=\"");
|
| - MarkupFormatter::appendAttributeValue(openTag, style->asText(), m_document->isHTMLDocument());
|
| - openTag.appendLiteral("\">");
|
| - m_reversedPrecedingMarkup.append(openTag.toString());
|
| -
|
| - m_result.append("</div>");
|
| -}
|
| -
|
| -String StyledMarkupAccumulator::takeResults()
|
| -{
|
| - StringBuilder result;
|
| - result.reserveCapacity(totalLength(m_reversedPrecedingMarkup) + m_result.length());
|
| -
|
| - for (size_t i = m_reversedPrecedingMarkup.size(); i > 0; --i)
|
| - result.append(m_reversedPrecedingMarkup[i - 1]);
|
| -
|
| - result.append(m_result);
|
| -
|
| - // We remove '\0' characters because they are not visibly rendered to the user.
|
| - return result.toString().replace(0, "");
|
| -}
|
| -
|
| -String StyledMarkupAccumulator::renderedText(Text& textNode)
|
| -{
|
| - int startOffset = 0;
|
| - int endOffset = textNode.length();
|
| - if (m_start.text() == textNode)
|
| - startOffset = m_start.offset();
|
| - if (m_end.text() == textNode)
|
| - endOffset = m_end.offset();
|
| - return plainText(EphemeralRange(Position(&textNode, startOffset), Position(&textNode, endOffset)));
|
| -}
|
| -
|
| -String StyledMarkupAccumulator::stringValueForRange(const Text& node)
|
| -{
|
| - if (m_start.isNull())
|
| - return node.data();
|
| -
|
| - String str = node.data();
|
| - if (m_start.text() == node)
|
| - str.truncate(m_end.offset());
|
| - if (m_end.text() == node)
|
| - str.remove(0, m_start.offset());
|
| - return str;
|
| -}
|
| -
|
| -bool StyledMarkupAccumulator::shouldAnnotate() const
|
| -{
|
| - return m_shouldAnnotate == AnnotateForInterchange;
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::pushMarkup(const String& str)
|
| -{
|
| - m_reversedPrecedingMarkup.append(str);
|
| -}
|
| -
|
| -void StyledMarkupAccumulator::appendInterchangeNewline()
|
| -{
|
| - DEFINE_STATIC_LOCAL(const String, interchangeNewlineString, ("<br class=\"" AppleInterchangeNewline "\">"));
|
| - m_result.append(interchangeNewlineString);
|
| -}
|
| -
|
| -} // namespace blink
|
|
|