Chromium Code Reviews| Index: Source/core/editing/ReplaceSelectionCommand.cpp |
| diff --git a/Source/core/editing/ReplaceSelectionCommand.cpp b/Source/core/editing/ReplaceSelectionCommand.cpp |
| index 896c57d5bda63276ab218c75d64ed7ceb6d69823..ff95f762f4f00f5aee2e906e09d7f1eff6edd1af 100644 |
| --- a/Source/core/editing/ReplaceSelectionCommand.cpp |
| +++ b/Source/core/editing/ReplaceSelectionCommand.cpp |
| @@ -48,6 +48,7 @@ |
| #include "core/editing/markup.h" |
| #include "core/events/BeforeTextInsertedEvent.h" |
| #include "core/frame/LocalFrame.h" |
| +#include "core/frame/UseCounter.h" |
| #include "core/html/HTMLElement.h" |
| #include "core/html/HTMLInputElement.h" |
| #include "core/rendering/RenderObject.h" |
| @@ -289,6 +290,7 @@ void ReplacementFragment::removeInterchangeNodes(Node* container) |
| Node* node = container->firstChild(); |
| while (node) { |
| if (isInterchangeNewlineNode(node)) { |
| + UseCounter::count(node->document(), UseCounter::EditingAppleInterchangeNewline); |
|
Yuta Kitamura
2014/06/12 07:55:23
You add some count() calls in predicate functions
yosin_UTC9
2014/06/12 08:46:06
You're right. I move count() call to predicate.
|
| m_hasInterchangeNewlineAtStart = true; |
| removeNode(node); |
| break; |
| @@ -302,6 +304,7 @@ void ReplacementFragment::removeInterchangeNodes(Node* container) |
| node = container->lastChild(); |
| while (node) { |
| if (isInterchangeNewlineNode(node)) { |
| + UseCounter::count(node->document(), UseCounter::EditingAppleInterchangeNewline); |
| m_hasInterchangeNewlineAtEnd = true; |
| removeNode(node); |
| break; |
| @@ -418,7 +421,10 @@ bool ReplaceSelectionCommand::shouldMergeEnd(bool selectionEndWasEndOfParagraph) |
| static bool isMailPasteAsQuotationNode(const Node* node) |
| { |
| - return node && node->hasTagName(blockquoteTag) && toElement(node)->getAttribute(classAttr) == ApplePasteAsQuotation; |
| + if (!node || !node->hasTagName(blockquoteTag) || toElement(node)->getAttribute(classAttr) != ApplePasteAsQuotation) |
| + return false; |
| + UseCounter::count(node->document(), UseCounter::EditingApplePasteAsQuotation); |
| + return true; |
| } |
| static bool isHeaderElement(const Node* a) |
| @@ -532,6 +538,7 @@ void ReplaceSelectionCommand::removeRedundantStylesAndKeepStyleSpanInline(Insert |
| // WebKit used to not add display: inline and float: none on copy. |
| // Keep this code around for backward compatibility |
| if (isLegacyAppleStyleSpan(element)) { |
| + UseCounter::count(document(), UseCounter::EditingAppleStyleSpanClass); |
| if (!element->firstChild()) { |
| insertedNodes.willRemoveNodePreservingChildren(*element); |
| removeNodePreservingChildren(element); |
| @@ -728,6 +735,7 @@ static bool handleStyleSpansBeforeInsertion(ReplacementFragment& fragment, const |
| if (!isLegacyAppleStyleSpan(topNode)) |
| return false; |
| + UseCounter::count(topNode->document(), UseCounter::EditingAppleStyleSpanClass); |
| Node* wrappingStyleSpan = topNode; |
| RefPtrWillBeRawPtr<EditingStyle> styleAtInsertionPos = EditingStyle::create(insertionPos.parentAnchoredEquivalent()); |
| String styleText = styleAtInsertionPos->style()->asText(); |
| @@ -757,6 +765,7 @@ void ReplaceSelectionCommand::handleStyleSpans(InsertedNodes& insertedNodes) |
| // so search for the top level style span instead of assuming it's at the top. |
| for (Node* node = insertedNodes.firstNodeInserted(); node; node = NodeTraversal::next(*node)) { |
| if (isLegacyAppleStyleSpan(node)) { |
| + UseCounter::count(document(), UseCounter::EditingAppleStyleSpanClass); |
| wrappingStyleSpan = toHTMLElement(node); |
| break; |
| } |
| @@ -866,10 +875,18 @@ static bool isInlineNodeWithStyle(const Node* node) |
| // one of our internal classes. |
| const HTMLElement* element = toHTMLElement(node); |
| const AtomicString& classAttributeValue = element->getAttribute(classAttr); |
| - if (classAttributeValue == AppleTabSpanClass |
| - || classAttributeValue == AppleConvertedSpace |
| - || classAttributeValue == ApplePasteAsQuotation) |
| + if (classAttributeValue == AppleTabSpanClass) { |
| + UseCounter::count(node->document(), UseCounter::EditingAppleTabSpanClass); |
| return true; |
| + } |
| + if (classAttributeValue == AppleConvertedSpace) { |
| + UseCounter::count(node->document(), UseCounter::EditingAppleConvertedSpace); |
| + return true; |
| + } |
| + if (classAttributeValue == ApplePasteAsQuotation) { |
| + UseCounter::count(node->document(), UseCounter::EditingApplePasteAsQuotation); |
| + return true; |
| + } |
| return EditingStyle::elementIsStyledSpanOrHTMLEquivalent(element); |
| } |
| @@ -1075,9 +1092,11 @@ void ReplaceSelectionCommand::doApply() |
| Node* blockStart = enclosingBlock(insertionPos.deprecatedNode()); |
| if ((isListElement(refNode.get()) || (isLegacyAppleStyleSpan(refNode.get()) && isListElement(refNode->firstChild()))) |
| - && blockStart && blockStart->renderer()->isListItem()) |
| + && blockStart && blockStart->renderer()->isListItem()) { |
| + if (isLegacyAppleStyleSpan(refNode.get())) |
| + UseCounter::count(document(), UseCounter::EditingAppleStyleSpanClass); |
| refNode = insertAsListItems(toHTMLElement(refNode), blockStart, insertionPos, insertedNodes); |
| - else { |
| + } else { |
| insertNodeAt(refNode, insertionPos); |
| insertedNodes.respondToNodeInsertion(*refNode); |
| } |