Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Side by Side Diff: third_party/WebKit/Source/core/editing/iterators/TextIterator.cpp

Issue 2614883007: Change computed style enums to be prefixed with 'k'. (Closed)
Patch Set: Rebase on ToT. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All
3 * rights reserved. 3 * rights reserved.
4 * Copyright (C) 2005 Alexey Proskuryakov. 4 * Copyright (C) 2005 Alexey Proskuryakov.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 m_handledFirstLetter = false; 525 m_handledFirstLetter = false;
526 m_firstLetterText = nullptr; 526 m_firstLetterText = nullptr;
527 527
528 // how would this ever be? 528 // how would this ever be?
529 if (m_textState.positionNode()) 529 if (m_textState.positionNode())
530 return; 530 return;
531 } 531 }
532 } 532 }
533 533
534 static bool hasVisibleTextNode(LayoutText* layoutObject) { 534 static bool hasVisibleTextNode(LayoutText* layoutObject) {
535 if (layoutObject->style()->visibility() == EVisibility::Visible) 535 if (layoutObject->style()->visibility() == EVisibility::kVisible)
536 return true; 536 return true;
537 537
538 if (!layoutObject->isTextFragment()) 538 if (!layoutObject->isTextFragment())
539 return false; 539 return false;
540 540
541 LayoutTextFragment* fragment = toLayoutTextFragment(layoutObject); 541 LayoutTextFragment* fragment = toLayoutTextFragment(layoutObject);
542 if (!fragment->isRemainingTextLayoutObject()) 542 if (!fragment->isRemainingTextLayoutObject())
543 return false; 543 return false;
544 544
545 DCHECK(fragment->firstLetterPseudoElement()); 545 DCHECK(fragment->firstLetterPseudoElement());
546 LayoutObject* pseudoElementLayoutObject = 546 LayoutObject* pseudoElementLayoutObject =
547 fragment->firstLetterPseudoElement()->layoutObject(); 547 fragment->firstLetterPseudoElement()->layoutObject();
548 return pseudoElementLayoutObject && 548 return pseudoElementLayoutObject &&
549 pseudoElementLayoutObject->style()->visibility() == 549 pseudoElementLayoutObject->style()->visibility() ==
550 EVisibility::Visible; 550 EVisibility::kVisible;
551 } 551 }
552 552
553 template <typename Strategy> 553 template <typename Strategy>
554 bool TextIteratorAlgorithm<Strategy>::handleTextNode() { 554 bool TextIteratorAlgorithm<Strategy>::handleTextNode() {
555 if (excludesAutofilledValue()) { 555 if (excludesAutofilledValue()) {
556 TextControlElement* control = enclosingTextControl(m_node); 556 TextControlElement* control = enclosingTextControl(m_node);
557 // For security reason, we don't expose suggested value if it is 557 // For security reason, we don't expose suggested value if it is
558 // auto-filled. 558 // auto-filled.
559 if (control && control->isAutofilled()) 559 if (control && control->isAutofilled())
560 return true; 560 return true;
(...skipping 24 matching lines...) Expand all
585 handleTextNodeFirstLetter(toLayoutTextFragment(layoutObject)); 585 handleTextNodeFirstLetter(toLayoutTextFragment(layoutObject));
586 if (m_firstLetterText) { 586 if (m_firstLetterText) {
587 String firstLetter = m_firstLetterText->text(); 587 String firstLetter = m_firstLetterText->text();
588 emitText(textNode, m_firstLetterText, m_offset, 588 emitText(textNode, m_firstLetterText, m_offset,
589 m_offset + firstLetter.length()); 589 m_offset + firstLetter.length());
590 m_firstLetterText = nullptr; 590 m_firstLetterText = nullptr;
591 m_textBox = 0; 591 m_textBox = 0;
592 return false; 592 return false;
593 } 593 }
594 } 594 }
595 if (layoutObject->style()->visibility() != EVisibility::Visible && 595 if (layoutObject->style()->visibility() != EVisibility::kVisible &&
596 !ignoresStyleVisibility()) 596 !ignoresStyleVisibility())
597 return false; 597 return false;
598 int strLength = str.length(); 598 int strLength = str.length();
599 int end = (textNode == m_endContainer) ? m_endOffset : INT_MAX; 599 int end = (textNode == m_endContainer) ? m_endOffset : INT_MAX;
600 int runEnd = std::min(strLength, end); 600 int runEnd = std::min(strLength, end);
601 601
602 if (runStart >= runEnd) 602 if (runStart >= runEnd)
603 return true; 603 return true;
604 604
605 emitText(textNode, textNode->layoutObject(), runStart, runEnd); 605 emitText(textNode, textNode->layoutObject(), runStart, runEnd);
606 return true; 606 return true;
607 } 607 }
608 608
609 if (layoutObject->firstTextBox()) 609 if (layoutObject->firstTextBox())
610 m_textBox = layoutObject->firstTextBox(); 610 m_textBox = layoutObject->firstTextBox();
611 611
612 bool shouldHandleFirstLetter = 612 bool shouldHandleFirstLetter =
613 !m_handledFirstLetter && layoutObject->isTextFragment() && !m_offset; 613 !m_handledFirstLetter && layoutObject->isTextFragment() && !m_offset;
614 if (shouldHandleFirstLetter) 614 if (shouldHandleFirstLetter)
615 handleTextNodeFirstLetter(toLayoutTextFragment(layoutObject)); 615 handleTextNodeFirstLetter(toLayoutTextFragment(layoutObject));
616 616
617 if (!layoutObject->firstTextBox() && str.length() > 0 && 617 if (!layoutObject->firstTextBox() && str.length() > 0 &&
618 !shouldHandleFirstLetter) { 618 !shouldHandleFirstLetter) {
619 if (layoutObject->style()->visibility() != EVisibility::Visible && 619 if (layoutObject->style()->visibility() != EVisibility::kVisible &&
620 !ignoresStyleVisibility()) 620 !ignoresStyleVisibility())
621 return false; 621 return false;
622 m_lastTextNodeEndedWithCollapsedSpace = 622 m_lastTextNodeEndedWithCollapsedSpace =
623 true; // entire block is collapsed space 623 true; // entire block is collapsed space
624 return true; 624 return true;
625 } 625 }
626 626
627 if (m_firstLetterText) 627 if (m_firstLetterText)
628 layoutObject = m_firstLetterText; 628 layoutObject = m_firstLetterText;
629 629
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
691 691
692 return runStart; 692 return runStart;
693 } 693 }
694 694
695 template <typename Strategy> 695 template <typename Strategy>
696 void TextIteratorAlgorithm<Strategy>::handleTextBox() { 696 void TextIteratorAlgorithm<Strategy>::handleTextBox() {
697 LayoutText* layoutObject = m_firstLetterText 697 LayoutText* layoutObject = m_firstLetterText
698 ? m_firstLetterText 698 ? m_firstLetterText
699 : toLayoutText(m_node->layoutObject()); 699 : toLayoutText(m_node->layoutObject());
700 700
701 if (layoutObject->style()->visibility() != EVisibility::Visible && 701 if (layoutObject->style()->visibility() != EVisibility::kVisible &&
702 !ignoresStyleVisibility()) { 702 !ignoresStyleVisibility()) {
703 m_textBox = nullptr; 703 m_textBox = nullptr;
704 } else { 704 } else {
705 String str = layoutObject->text(); 705 String str = layoutObject->text();
706 unsigned start = m_offset; 706 unsigned start = m_offset;
707 unsigned end = (m_node == m_endContainer) 707 unsigned end = (m_node == m_endContainer)
708 ? static_cast<unsigned>(m_endOffset) 708 ? static_cast<unsigned>(m_endOffset)
709 : INT_MAX; 709 : INT_MAX;
710 while (m_textBox) { 710 while (m_textBox) {
711 unsigned textBoxStart = m_textBox->start(); 711 unsigned textBoxStart = m_textBox->start();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 nextTextBox->getLineLayoutItem().isEqual(layoutObject)); 760 nextTextBox->getLineLayoutItem().isEqual(layoutObject));
761 761
762 if (runStart < runEnd) { 762 if (runStart < runEnd) {
763 // Handle either a single newline character (which becomes a space), 763 // Handle either a single newline character (which becomes a space),
764 // or a run of characters that does not include a newline. 764 // or a run of characters that does not include a newline.
765 // This effectively translates newlines to spaces without copying the 765 // This effectively translates newlines to spaces without copying the
766 // text. 766 // text.
767 if (str[runStart] == '\n') { 767 if (str[runStart] == '\n') {
768 // We need to preserve new lines in case of PreLine. 768 // We need to preserve new lines in case of PreLine.
769 // See bug crbug.com/317365. 769 // See bug crbug.com/317365.
770 if (layoutObject->style()->whiteSpace() == EWhiteSpace::PreLine) 770 if (layoutObject->style()->whiteSpace() == EWhiteSpace::kPreLine)
771 spliceBuffer('\n', m_node, 0, runStart, runStart); 771 spliceBuffer('\n', m_node, 0, runStart, runStart);
772 else 772 else
773 spliceBuffer(spaceCharacter, m_node, 0, runStart, runStart + 1); 773 spliceBuffer(spaceCharacter, m_node, 0, runStart, runStart + 1);
774 m_offset = runStart + 1; 774 m_offset = runStart + 1;
775 } else { 775 } else {
776 size_t subrunEnd = str.find('\n', runStart); 776 size_t subrunEnd = str.find('\n', runStart);
777 if (subrunEnd == kNotFound || subrunEnd > runEnd) { 777 if (subrunEnd == kNotFound || subrunEnd > runEnd) {
778 subrunEnd = runEnd; 778 subrunEnd = runEnd;
779 runStart = restoreCollapsedLeadingSpace(runStart); 779 runStart = restoreCollapsedLeadingSpace(runStart);
780 subrunEnd = restoreCollapsedTrailingSpace(nextTextBox, subrunEnd); 780 subrunEnd = restoreCollapsedTrailingSpace(nextTextBox, subrunEnd);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 825
826 if (!layoutObject->isRemainingTextLayoutObject()) 826 if (!layoutObject->isRemainingTextLayoutObject())
827 return; 827 return;
828 828
829 FirstLetterPseudoElement* firstLetterElement = 829 FirstLetterPseudoElement* firstLetterElement =
830 layoutObject->firstLetterPseudoElement(); 830 layoutObject->firstLetterPseudoElement();
831 if (!firstLetterElement) 831 if (!firstLetterElement)
832 return; 832 return;
833 833
834 LayoutObject* pseudoLayoutObject = firstLetterElement->layoutObject(); 834 LayoutObject* pseudoLayoutObject = firstLetterElement->layoutObject();
835 if (pseudoLayoutObject->style()->visibility() != EVisibility::Visible && 835 if (pseudoLayoutObject->style()->visibility() != EVisibility::kVisible &&
836 !ignoresStyleVisibility()) 836 !ignoresStyleVisibility())
837 return; 837 return;
838 838
839 LayoutObject* firstLetter = pseudoLayoutObject->slowFirstChild(); 839 LayoutObject* firstLetter = pseudoLayoutObject->slowFirstChild();
840 DCHECK(firstLetter); 840 DCHECK(firstLetter);
841 841
842 m_remainingTextBox = m_textBox; 842 m_remainingTextBox = m_textBox;
843 m_textBox = toLayoutText(firstLetter)->firstTextBox(); 843 m_textBox = toLayoutText(firstLetter)->firstTextBox();
844 m_sortedTextBoxes.clear(); 844 m_sortedTextBoxes.clear();
845 m_firstLetterText = toLayoutText(firstLetter); 845 m_firstLetterText = toLayoutText(firstLetter);
(...skipping 13 matching lines...) Expand all
859 return true; 859 return true;
860 return false; 860 return false;
861 } 861 }
862 862
863 template <typename Strategy> 863 template <typename Strategy>
864 bool TextIteratorAlgorithm<Strategy>::handleReplacedElement() { 864 bool TextIteratorAlgorithm<Strategy>::handleReplacedElement() {
865 if (m_fullyClippedStack.top()) 865 if (m_fullyClippedStack.top())
866 return false; 866 return false;
867 867
868 LayoutObject* layoutObject = m_node->layoutObject(); 868 LayoutObject* layoutObject = m_node->layoutObject();
869 if (layoutObject->style()->visibility() != EVisibility::Visible && 869 if (layoutObject->style()->visibility() != EVisibility::kVisible &&
870 !ignoresStyleVisibility()) 870 !ignoresStyleVisibility())
871 return false; 871 return false;
872 872
873 if (emitsObjectReplacementCharacter()) { 873 if (emitsObjectReplacementCharacter()) {
874 spliceBuffer(objectReplacementCharacter, Strategy::parent(*m_node), m_node, 874 spliceBuffer(objectReplacementCharacter, Strategy::parent(*m_node), m_node,
875 0, 1); 875 0, 1);
876 return true; 876 return true;
877 } 877 }
878 878
879 if (m_behavior & TextIteratorCollapseTrailingSpace) { 879 if (m_behavior & TextIteratorCollapseTrailingSpace) {
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
1076 // now. 1076 // now.
1077 if (!m_startOffset) 1077 if (!m_startOffset)
1078 return false; 1078 return false;
1079 1079
1080 // If this node is unrendered or invisible the VisiblePosition checks below 1080 // If this node is unrendered or invisible the VisiblePosition checks below
1081 // won't have much meaning. 1081 // won't have much meaning.
1082 // Additionally, if the range we are iterating over contains huge sections of 1082 // Additionally, if the range we are iterating over contains huge sections of
1083 // unrendered content, we would create VisiblePositions on every call to this 1083 // unrendered content, we would create VisiblePositions on every call to this
1084 // function without this check. 1084 // function without this check.
1085 if (!m_node->layoutObject() || 1085 if (!m_node->layoutObject() ||
1086 m_node->layoutObject()->style()->visibility() != EVisibility::Visible || 1086 m_node->layoutObject()->style()->visibility() != EVisibility::kVisible ||
1087 (m_node->layoutObject()->isLayoutBlockFlow() && 1087 (m_node->layoutObject()->isLayoutBlockFlow() &&
1088 !toLayoutBlock(m_node->layoutObject())->size().height() && 1088 !toLayoutBlock(m_node->layoutObject())->size().height() &&
1089 !isHTMLBodyElement(*m_node))) 1089 !isHTMLBodyElement(*m_node)))
1090 return false; 1090 return false;
1091 1091
1092 // The startPos.isNotNull() check is needed because the start could be before 1092 // The startPos.isNotNull() check is needed because the start could be before
1093 // the body, and in that case we'll get null. We don't want to put in newlines 1093 // the body, and in that case we'll get null. We don't want to put in newlines
1094 // at the start in that case. 1094 // at the start in that case.
1095 // The currPos.isNotNull() check is needed because positions in non-HTML 1095 // The currPos.isNotNull() check is needed because positions in non-HTML
1096 // content (like SVG) do not have visible positions, and we don't want to emit 1096 // content (like SVG) do not have visible positions, and we don't want to emit
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 String plainText(const EphemeralRangeInFlatTree& range, 1443 String plainText(const EphemeralRangeInFlatTree& range,
1444 TextIteratorBehaviorFlags behavior) { 1444 TextIteratorBehaviorFlags behavior) {
1445 return createPlainText<EditingInFlatTreeStrategy>(range, behavior); 1445 return createPlainText<EditingInFlatTreeStrategy>(range, behavior);
1446 } 1446 }
1447 1447
1448 template class CORE_TEMPLATE_EXPORT TextIteratorAlgorithm<EditingStrategy>; 1448 template class CORE_TEMPLATE_EXPORT TextIteratorAlgorithm<EditingStrategy>;
1449 template class CORE_TEMPLATE_EXPORT 1449 template class CORE_TEMPLATE_EXPORT
1450 TextIteratorAlgorithm<EditingInFlatTreeStrategy>; 1450 TextIteratorAlgorithm<EditingInFlatTreeStrategy>;
1451 1451
1452 } // namespace blink 1452 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698