Bug 1343037 part 15. Implement nsTextEditorState::GetSelectionDirection. r=ehsan

MozReview-Commit-ID: 1bLLYhjmlff
This commit is contained in:
Boris Zbarsky 2017-03-09 14:44:06 -05:00
Родитель c97142b029
Коммит 64343d8606
4 изменённых файлов: 34 добавлений и 41 удалений

Просмотреть файл

@ -6497,20 +6497,6 @@ HTMLInputElement::GetSelectionRange(int32_t* aSelectionStart,
state->GetSelectionRange(aSelectionStart, aSelectionEnd, aRv);
}
static void
DirectionToName(nsITextControlFrame::SelectionDirection dir, nsAString& aDirection)
{
if (dir == nsITextControlFrame::eNone) {
aDirection.AssignLiteral("none");
} else if (dir == nsITextControlFrame::eForward) {
aDirection.AssignLiteral("forward");
} else if (dir == nsITextControlFrame::eBackward) {
aDirection.AssignLiteral("backward");
} else {
NS_NOTREACHED("Invalid SelectionDirection value");
}
}
void
HTMLInputElement::GetSelectionDirection(nsAString& aDirection, ErrorResult& aRv)
{
@ -6521,13 +6507,7 @@ HTMLInputElement::GetSelectionDirection(nsAString& aDirection, ErrorResult& aRv)
nsTextEditorState* state = GetEditorState();
MOZ_ASSERT(state, "SupportsTextSelection came back true!");
nsITextControlFrame::SelectionDirection dir =
state->GetSelectionDirection(aRv);
if (aRv.Failed()) {
return;
}
DirectionToName(dir, aDirection);
state->GetSelectionDirectionString(aDirection, aRv);
}
void

Просмотреть файл

@ -736,29 +736,10 @@ HTMLTextAreaElement::GetSelectionRange(int32_t* aSelectionStart,
return mState.GetSelectionRange(aSelectionStart, aSelectionEnd, aRv);
}
static void
DirectionToName(nsITextControlFrame::SelectionDirection dir, nsAString& aDirection)
{
if (dir == nsITextControlFrame::eNone) {
aDirection.AssignLiteral("none");
} else if (dir == nsITextControlFrame::eForward) {
aDirection.AssignLiteral("forward");
} else if (dir == nsITextControlFrame::eBackward) {
aDirection.AssignLiteral("backward");
} else {
NS_NOTREACHED("Invalid SelectionDirection value");
}
}
void
HTMLTextAreaElement::GetSelectionDirection(nsAString& aDirection, ErrorResult& aError)
{
nsITextControlFrame::SelectionDirection dir =
mState.GetSelectionDirection(aError);
if (aError.Failed()) {
return;
}
DirectionToName(dir, aDirection);
mState.GetSelectionDirectionString(aDirection, aError);
}
void

Просмотреть файл

@ -1762,6 +1762,32 @@ nsTextEditorState::SetSelectionEnd(const mozilla::dom::Nullable<uint32_t>& aEnd,
SetSelectionRange(start, end, dir, aRv);
}
static void
DirectionToName(nsITextControlFrame::SelectionDirection dir, nsAString& aDirection)
{
if (dir == nsITextControlFrame::eNone) {
NS_WARNING("We don't actually support this... how did we get it?");
aDirection.AssignLiteral("none");
} else if (dir == nsITextControlFrame::eForward) {
aDirection.AssignLiteral("forward");
} else if (dir == nsITextControlFrame::eBackward) {
aDirection.AssignLiteral("backward");
} else {
NS_NOTREACHED("Invalid SelectionDirection value");
}
}
void
nsTextEditorState::GetSelectionDirectionString(nsAString& aDirection,
ErrorResult& aRv)
{
nsITextControlFrame::SelectionDirection dir = GetSelectionDirection(aRv);
if (aRv.Failed()) {
return;
}
DirectionToName(dir, aDirection);
}
static nsITextControlFrame::SelectionDirection
DirectionStringToSelectionDirection(const nsAString& aDirection)
{

Просмотреть файл

@ -310,6 +310,12 @@ public:
void SetSelectionEnd(const mozilla::dom::Nullable<uint32_t>& aEnd,
mozilla::ErrorResult& aRv);
// Get the selection direction as a string. This implements the
// https://html.spec.whatwg.org/multipage/forms.html#dom-textarea/input-selectiondirection
// getter.
void GetSelectionDirectionString(nsAString& aDirection,
mozilla::ErrorResult& aRv);
// Set the selection direction. This basically implements the
// https://html.spec.whatwg.org/multipage/forms.html#dom-textarea/input-selectiondirection
// setter.