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

Unified Diff: third_party/WebKit/Source/core/editing/EditingStyleUtilities.cpp

Issue 2734043004: Move textDirectionForSelection in EditingStyleUtilities class to EditorCommand.cpp (Closed)
Patch Set: 2017-03-07T17:41:31 Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/editing/EditingStyleUtilities.cpp
diff --git a/third_party/WebKit/Source/core/editing/EditingStyleUtilities.cpp b/third_party/WebKit/Source/core/editing/EditingStyleUtilities.cpp
index 1c72d9b452487d87e062b1f1395fbc785e1379be..27fc66b4d13c28398441f7c4a80a75e2d6977cd8 100644
--- a/third_party/WebKit/Source/core/editing/EditingStyleUtilities.cpp
+++ b/third_party/WebKit/Source/core/editing/EditingStyleUtilities.cpp
@@ -157,117 +157,6 @@ EditingStyle* EditingStyleUtilities::createStyleAtSelectionStart(
return style;
}
-static bool isUnicodeBidiNestedOrMultipleEmbeddings(CSSValueID valueID) {
- return valueID == CSSValueEmbed || valueID == CSSValueBidiOverride ||
- valueID == CSSValueWebkitIsolate ||
- valueID == CSSValueWebkitIsolateOverride ||
- valueID == CSSValueWebkitPlaintext || valueID == CSSValueIsolate ||
- valueID == CSSValueIsolateOverride || valueID == CSSValuePlaintext;
-}
-
-WritingDirection EditingStyleUtilities::textDirectionForSelection(
- const VisibleSelection& selection,
- EditingStyle* typingStyle,
- bool& hasNestedOrMultipleEmbeddings) {
- hasNestedOrMultipleEmbeddings = true;
-
- if (selection.isNone())
- return NaturalWritingDirection;
-
- Position position = mostForwardCaretPosition(selection.start());
-
- Node* node = position.anchorNode();
- if (!node)
- return NaturalWritingDirection;
-
- Position end;
- if (selection.isRange()) {
- end = mostBackwardCaretPosition(selection.end());
-
- DCHECK(end.document());
- const EphemeralRange caretRange(position.parentAnchoredEquivalent(),
- end.parentAnchoredEquivalent());
- for (Node& n : caretRange.nodes()) {
- if (!n.isStyledElement())
- continue;
-
- CSSComputedStyleDeclaration* style =
- CSSComputedStyleDeclaration::create(&n);
- const CSSValue* unicodeBidi =
- style->getPropertyCSSValue(CSSPropertyUnicodeBidi);
- if (!unicodeBidi || !unicodeBidi->isIdentifierValue())
- continue;
-
- CSSValueID unicodeBidiValue =
- toCSSIdentifierValue(unicodeBidi)->getValueID();
- if (isUnicodeBidiNestedOrMultipleEmbeddings(unicodeBidiValue))
- return NaturalWritingDirection;
- }
- }
-
- if (selection.isCaret()) {
- WritingDirection direction;
- if (typingStyle && typingStyle->textDirection(direction)) {
- hasNestedOrMultipleEmbeddings = false;
- return direction;
- }
- node = selection.visibleStart().deepEquivalent().anchorNode();
- }
- DCHECK(node);
-
- // The selection is either a caret with no typing attributes or a range in
- // which no embedding is added, so just use the start position to decide.
- Node* block = enclosingBlock(node);
- WritingDirection foundDirection = NaturalWritingDirection;
-
- for (Node& runner : NodeTraversal::inclusiveAncestorsOf(*node)) {
- if (runner == block)
- break;
- if (!runner.isStyledElement())
- continue;
-
- Element* element = &toElement(runner);
- CSSComputedStyleDeclaration* style =
- CSSComputedStyleDeclaration::create(element);
- const CSSValue* unicodeBidi =
- style->getPropertyCSSValue(CSSPropertyUnicodeBidi);
- if (!unicodeBidi || !unicodeBidi->isIdentifierValue())
- continue;
-
- CSSValueID unicodeBidiValue =
- toCSSIdentifierValue(unicodeBidi)->getValueID();
- if (unicodeBidiValue == CSSValueNormal)
- continue;
-
- if (unicodeBidiValue == CSSValueBidiOverride)
- return NaturalWritingDirection;
-
- DCHECK(isEmbedOrIsolate(unicodeBidiValue)) << unicodeBidiValue;
- const CSSValue* direction =
- style->getPropertyCSSValue(CSSPropertyDirection);
- if (!direction || !direction->isIdentifierValue())
- continue;
-
- int directionValue = toCSSIdentifierValue(direction)->getValueID();
- if (directionValue != CSSValueLtr && directionValue != CSSValueRtl)
- continue;
-
- if (foundDirection != NaturalWritingDirection)
- return NaturalWritingDirection;
-
- // In the range case, make sure that the embedding element persists until
- // the end of the range.
- if (selection.isRange() && !end.anchorNode()->isDescendantOf(element))
- return NaturalWritingDirection;
-
- foundDirection = directionValue == CSSValueLtr
- ? LeftToRightWritingDirection
- : RightToLeftWritingDirection;
- }
- hasNestedOrMultipleEmbeddings = false;
- return foundDirection;
-}
-
bool EditingStyleUtilities::isTransparentColorValue(const CSSValue* cssValue) {
if (!cssValue)
return true;

Powered by Google App Engine
This is Rietveld 408576698