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

Unified Diff: Source/core/rendering/RenderText.cpp

Issue 23983002: Expose InlineTextBoxes in the accessibility tree. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Remove unused include Created 7 years, 3 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: Source/core/rendering/RenderText.cpp
diff --git a/Source/core/rendering/RenderText.cpp b/Source/core/rendering/RenderText.cpp
index b5f82e123980b614f1bd6358c6570710238ff02c..267fdc31f52ad0877923a0cb32c0175b60666718 100644
--- a/Source/core/rendering/RenderText.cpp
+++ b/Source/core/rendering/RenderText.cpp
@@ -1863,4 +1863,69 @@ void RenderText::momentarilyRevealLastTypedCharacter(unsigned lastTypedCharacter
secureTextTimer->restartWithNewText(lastTypedCharacterOffset);
}
+RenderText::AbstractInlineTextBox* RenderText::firstInlineTextBox() const
+{
+ return m_firstTextBox;
+}
+
+RenderText::AbstractInlineTextBox* RenderText::nextInlineTextBox(RenderText::AbstractInlineTextBox* inlineTextBox) const
+{
+ return inlineTextBox->nextTextBox();
+}
+
+LayoutRect RenderText::inlineTextBoxBounds(RenderText::AbstractInlineTextBox* inlineTextBox) const
+{
+ FloatRect boundaries = inlineTextBox->calculateBoundaries();
+ return localToAbsoluteQuad(boundaries).enclosingBoundingBox();
+}
+
+unsigned RenderText::inlineTextBoxStart(RenderText::AbstractInlineTextBox* inlineTextBox) const
+{
+ return inlineTextBox->start();
+}
+
+unsigned RenderText::inlineTextBoxLen(RenderText::AbstractInlineTextBox* inlineTextBox) const
+{
+ return inlineTextBox->len();
+}
+
+RenderText::AbstractInlineTextBoxDirection RenderText::inlineTextBoxDirection(RenderText::AbstractInlineTextBox* inlineTextBox) const
+{
+ if (style()->isHorizontalWritingMode())
+ return (inlineTextBox->isRTL() ? AbstractInlineTextBoxDirectionRL : AbstractInlineTextBoxDirectionLR);
+ return (inlineTextBox->isRTL() ? AbstractInlineTextBoxDirectionBT : AbstractInlineTextBoxDirectionTB);
+}
+
+void RenderText::inlineTextBoxCharacterWidths(RenderText::AbstractInlineTextBox* inlineTextBox, Vector<float>& widths) const
+{
+ inlineTextBox->characterWidths(widths);
+}
+
+void RenderText::inlineTextBoxWordBoundaries(RenderText::AbstractInlineTextBox* inlineTextBox, Vector<WordBoundaries>& words) const
+{
+ int start = inlineTextBox->start();
+ int len = inlineTextBox->len();
+ TextBreakIterator* iterator = wordBreakIterator(text(), start, len);
+ int pos = textBreakFirst(iterator);
+ while (pos >= 0 && pos < len) {
+ pos = textBreakNext(iterator);
+ if (isWordTextBreak(iterator))
+ words.append(WordBoundaries(textBreakPrevious(iterator), textBreakNext(iterator)));
+ }
+}
+
+String RenderText::inlineTextBoxText(RenderText::AbstractInlineTextBox* inlineTextBox) const
+{
+ unsigned start = inlineTextBox->start();
+ unsigned len = inlineTextBox->len();
+ if (Node* node = this->node()) {
+ RefPtr<Range> range = Range::create(node->document());
+ range->setStart(node, start, IGNORE_EXCEPTION);
+ range->setEnd(node, start + len, IGNORE_EXCEPTION);
+ return plainText(range.get(), TextIteratorIgnoresStyleVisibility);
+ }
+
+ return text().substring(start, len);
+}
+
} // namespace WebCore

Powered by Google App Engine
This is Rietveld 408576698