summaryrefslogtreecommitdiff
path: root/Source/WebKit/chromium/src/WebAccessibilityObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/chromium/src/WebAccessibilityObject.cpp')
-rw-r--r--Source/WebKit/chromium/src/WebAccessibilityObject.cpp52
1 files changed, 39 insertions, 13 deletions
diff --git a/Source/WebKit/chromium/src/WebAccessibilityObject.cpp b/Source/WebKit/chromium/src/WebAccessibilityObject.cpp
index f559715d9..a3dd824cc 100644
--- a/Source/WebKit/chromium/src/WebAccessibilityObject.cpp
+++ b/Source/WebKit/chromium/src/WebAccessibilityObject.cpp
@@ -580,12 +580,44 @@ unsigned WebAccessibilityObject::selectionStart() const
return m_private->selectedTextRange().start;
}
+unsigned WebAccessibilityObject::selectionEndLineNumber() const
+{
+ if (isDetached())
+ return 0;
+
+ VisiblePosition position = m_private->visiblePositionForIndex(selectionEnd());
+ int lineNumber = m_private->lineForPosition(position);
+ if (lineNumber < 0)
+ return 0;
+ return lineNumber;
+}
+
+unsigned WebAccessibilityObject::selectionStartLineNumber() const
+{
+ if (isDetached())
+ return 0;
+
+ VisiblePosition position = m_private->visiblePositionForIndex(selectionStart());
+ int lineNumber = m_private->lineForPosition(position);
+ if (lineNumber < 0)
+ return 0;
+ return lineNumber;
+}
+
void WebAccessibilityObject::setFocused(bool on) const
{
if (!isDetached())
m_private->setFocused(on);
}
+void WebAccessibilityObject::setSelectedTextRange(int selectionStart, int selectionEnd) const
+{
+ if (isDetached())
+ return;
+
+ m_private->setSelectedTextRange(PlainTextRange(selectionStart, selectionEnd - selectionStart));
+}
+
WebString WebAccessibilityObject::stringValue() const
{
if (isDetached())
@@ -731,21 +763,15 @@ bool WebAccessibilityObject::lineBreaks(WebVector<int>& result) const
if (isDetached())
return false;
- int textLength = m_private->textLength();
- if (!textLength)
- return false;
+ Vector<int> lineBreaksVector;
+ m_private->lineBreaks(lineBreaksVector);
- VisiblePosition pos = m_private->visiblePositionForIndex(textLength);
- int lineBreakCount = m_private->lineForPosition(pos);
- if (lineBreakCount <= 0)
- return false;
+ size_t vectorSize = lineBreaksVector.size();
+ WebVector<int> lineBreaksWebVector(vectorSize);
+ for (size_t i = 0; i< vectorSize; i++)
+ lineBreaksWebVector[i] = lineBreaksVector[i];
+ result.swap(lineBreaksWebVector);
- WebVector<int> lineBreaks(static_cast<size_t>(lineBreakCount));
- for (int i = 0; i < lineBreakCount; i++) {
- PlainTextRange range = m_private->doAXRangeForLine(i);
- lineBreaks[i] = range.start + range.length;
- }
- result.swap(lineBreaks);
return true;
}