зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1779269 - Fix AccessibleCaret's display on disabled form controls. r=emilio,webdriver-reviewers,whimboo
A disabled form controls cannot be focused, and its frame selection is different from the one for not-editable content. Use GetLastFocusedFrameSelection() (added in Bug 253870) to get the correct frame selection that is visible to the user. Add some basic tests for disabled <textarea> such as long pressing to select, dragging, etc. They should behave the same as normal <textarea>. Differential Revision: https://phabricator.services.mozilla.com/D151800
This commit is contained in:
Родитель
dd5a5ef58d
Коммит
b331e396e5
|
@ -820,23 +820,9 @@ already_AddRefed<nsFrameSelection> AccessibleCaretManager::GetFrameSelection()
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsFocusManager* fm = nsFocusManager::GetFocusManager();
|
|
||||||
MOZ_ASSERT(fm);
|
|
||||||
|
|
||||||
nsIContent* focusedContent = fm->GetFocusedElement();
|
|
||||||
if (!focusedContent) {
|
|
||||||
// For non-editable content
|
|
||||||
return mPresShell->FrameSelection();
|
|
||||||
}
|
|
||||||
|
|
||||||
nsIFrame* focusFrame = focusedContent->GetPrimaryFrame();
|
|
||||||
if (!focusFrame) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent us from touching the nsFrameSelection associated with other
|
// Prevent us from touching the nsFrameSelection associated with other
|
||||||
// PresShell.
|
// PresShell.
|
||||||
RefPtr<nsFrameSelection> fs = focusFrame->GetFrameSelection();
|
RefPtr<nsFrameSelection> fs = mPresShell->GetLastFocusedFrameSelection();
|
||||||
if (!fs || fs->GetPresShell() != mPresShell) {
|
if (!fs || fs->GetPresShell() != mPresShell) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,7 @@ class AccessibleCaretSelectionModeTestCase(MarionetteTestCase):
|
||||||
_input_size_id = "input-size"
|
_input_size_id = "input-size"
|
||||||
_textarea_id = "textarea"
|
_textarea_id = "textarea"
|
||||||
_textarea2_id = "textarea2"
|
_textarea2_id = "textarea2"
|
||||||
|
_textarea_disabled_id = "textarea-disabled"
|
||||||
_textarea_one_line_id = "textarea-one-line"
|
_textarea_one_line_id = "textarea-one-line"
|
||||||
_textarea_rtl_id = "textarea-rtl"
|
_textarea_rtl_id = "textarea-rtl"
|
||||||
_contenteditable_id = "contenteditable"
|
_contenteditable_id = "contenteditable"
|
||||||
|
@ -170,6 +171,7 @@ class AccessibleCaretSelectionModeTestCase(MarionetteTestCase):
|
||||||
|
|
||||||
@parameterized(_input_id, el_id=_input_id)
|
@parameterized(_input_id, el_id=_input_id)
|
||||||
@parameterized(_textarea_id, el_id=_textarea_id)
|
@parameterized(_textarea_id, el_id=_textarea_id)
|
||||||
|
@parameterized(_textarea_disabled_id, el_id=_textarea_disabled_id)
|
||||||
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
||||||
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
||||||
@parameterized(_content_id, el_id=_content_id)
|
@parameterized(_content_id, el_id=_content_id)
|
||||||
|
@ -193,6 +195,7 @@ class AccessibleCaretSelectionModeTestCase(MarionetteTestCase):
|
||||||
|
|
||||||
@parameterized(_input_id, el_id=_input_id)
|
@parameterized(_input_id, el_id=_input_id)
|
||||||
@parameterized(_textarea_id, el_id=_textarea_id)
|
@parameterized(_textarea_id, el_id=_textarea_id)
|
||||||
|
@parameterized(_textarea_disabled_id, el_id=_textarea_disabled_id)
|
||||||
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
||||||
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
||||||
@parameterized(_content_id, el_id=_content_id)
|
@parameterized(_content_id, el_id=_content_id)
|
||||||
|
@ -226,6 +229,7 @@ class AccessibleCaretSelectionModeTestCase(MarionetteTestCase):
|
||||||
|
|
||||||
@parameterized(_input_id, el_id=_input_id)
|
@parameterized(_input_id, el_id=_input_id)
|
||||||
@parameterized(_textarea_id, el_id=_textarea_id)
|
@parameterized(_textarea_id, el_id=_textarea_id)
|
||||||
|
@parameterized(_textarea_disabled_id, el_id=_textarea_disabled_id)
|
||||||
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
||||||
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
||||||
@parameterized(_content_id, el_id=_content_id)
|
@parameterized(_content_id, el_id=_content_id)
|
||||||
|
@ -263,6 +267,7 @@ class AccessibleCaretSelectionModeTestCase(MarionetteTestCase):
|
||||||
|
|
||||||
@parameterized(_input_id, el_id=_input_id)
|
@parameterized(_input_id, el_id=_input_id)
|
||||||
@parameterized(_textarea_id, el_id=_textarea_id)
|
@parameterized(_textarea_id, el_id=_textarea_id)
|
||||||
|
@parameterized(_textarea_disabled_id, el_id=_textarea_disabled_id)
|
||||||
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
||||||
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
||||||
@parameterized(_content_id, el_id=_content_id)
|
@parameterized(_content_id, el_id=_content_id)
|
||||||
|
@ -395,6 +400,7 @@ class AccessibleCaretSelectionModeTestCase(MarionetteTestCase):
|
||||||
|
|
||||||
@parameterized(_input_id, el_id=_input_id)
|
@parameterized(_input_id, el_id=_input_id)
|
||||||
@parameterized(_textarea_id, el_id=_textarea_id)
|
@parameterized(_textarea_id, el_id=_textarea_id)
|
||||||
|
@parameterized(_textarea_disabled_id, el_id=_textarea_disabled_id)
|
||||||
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
@parameterized(_textarea_rtl_id, el_id=_textarea_rtl_id)
|
||||||
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
@parameterized(_contenteditable_id, el_id=_contenteditable_id)
|
||||||
@parameterized(_content_id, el_id=_content_id)
|
@parameterized(_content_id, el_id=_content_id)
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
<br>
|
<br>
|
||||||
<div>
|
<div>
|
||||||
<textarea id="textarea" rows="4" cols="8">ABC DEF GHI JKL MNO PQR</textarea>
|
<textarea id="textarea" rows="4" cols="8">ABC DEF GHI JKL MNO PQR</textarea>
|
||||||
|
<textarea id="textarea-disabled" rows="4" cols="8" disabled>ABC DEF GHI JKL MNO PQR</textarea>
|
||||||
<textarea id="textarea-one-line" rows="4" cols="12">ABC DEF GHI</textarea>
|
<textarea id="textarea-one-line" rows="4" cols="12">ABC DEF GHI</textarea>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче