Index: third_party/WebKit/Source/core/editing/InlineBoxTraversal.cpp |
diff --git a/third_party/WebKit/Source/core/editing/InlineBoxTraversal.cpp b/third_party/WebKit/Source/core/editing/InlineBoxTraversal.cpp |
index f85c063f9600c5516641a6243309a8fe79ddfda5..fccec0eae520758a21e2c8fac23f8c3b457762bb 100644 |
--- a/third_party/WebKit/Source/core/editing/InlineBoxTraversal.cpp |
+++ b/third_party/WebKit/Source/core/editing/InlineBoxTraversal.cpp |
@@ -47,6 +47,16 @@ struct TraverseRightIgnoringLineBreak { |
}; |
template <typename TraversalStrategy> |
+InlineBox* FindBidiRun(const InlineBox& start, unsigned bidi_level) { |
+ for (InlineBox* runner = TraversalStrategy::Forward(start); runner; |
+ runner = TraversalStrategy::Forward(*runner)) { |
+ if (runner->BidiLevel() <= bidi_level) |
+ return runner; |
+ } |
+ return nullptr; |
+} |
+ |
+template <typename TraversalStrategy> |
InlineBox* FindBoudnaryOfBidiRun(const InlineBox& start, unsigned bidi_level) { |
InlineBox* result = const_cast<InlineBox*>(&start); |
for (InlineBox* runner = TraversalStrategy::Forward(start); runner; |
@@ -73,6 +83,16 @@ InlineBox* FindBoudnaryOfEntireBidiRun(const InlineBox& start, |
} // namespace |
+InlineBox* InlineBoxTraversal::FindLeftBidiRun(const InlineBox& box, |
+ unsigned bidi_level) { |
+ return FindBidiRun<TraverseLeft>(box, bidi_level); |
+} |
+ |
+InlineBox* InlineBoxTraversal::FindRightBidiRun(const InlineBox& box, |
+ unsigned bidi_level) { |
+ return FindBidiRun<TraverseRight>(box, bidi_level); |
+} |
+ |
InlineBox* InlineBoxTraversal::FindLeftBoundaryOfBidiRunIgnoringLineBreak( |
const InlineBox& inline_box, |
unsigned bidi_level) { |