forked from mirrors/gecko-dev
The text input of the multi-select combobox of Slack has the following structure: ``` <div contenteditable style="display:flex"> <span class="c-multi_select_input__space"> </span> <span class="c-multi_select_input__filter_query">text which you typed</span> <span class="c-multi_select_input__space" contenteditable="false"> <span> </div> ``` When you do "Select All", they adjust selection to start from start of the text container `<span>` (i.e., `.c-multi_select_input__filter_query`). Then, typing new character deletes selection first. At this time, in the legacy mode, `AutoDeleteRangesHandler::ExtendOrShrinkRangeToDelete` does not extend the deleting range because `<span>` is an inline element. However, in the new mode, it extends the range because the `<span>` is a block since it's a flex-item, and selection starts from current block boundary. Then, deleting range starts before the text container. Finally, Gecko removes the text container and the following non-editable `<span>`. Therefore, typing text will be inserted as a child of the flex container which is the editing host. Finally, Slack restores the previous structure and collapse selection to end of the text. Currently, Chrome does same thing for normal blocks without flex/gird container. However, doing i in `AutoDeleteRangesHandler::ExtendOrShrinkRangeToDelete` causes a lot of regressions. Therefore, this patch tries to avoid only the bug in Slack. (I think that we need to redesign the deletion handler to fix it.) Differential Revision: https://phabricator.services.mozilla.com/D195955 |
||
|---|---|---|
| .. | ||
| awsy | ||
| condprofile | ||
| config | ||
| crashtest | ||
| docs | ||
| extensions | ||
| firefox-ui | ||
| geckodriver | ||
| gtest | ||
| jsshell | ||
| marionette | ||
| mochitest | ||
| modules | ||
| mozbase | ||
| mozharness | ||
| perfdocs | ||
| performance | ||
| profiles | ||
| raptor | ||
| runtimes | ||
| specialpowers | ||
| talos | ||
| test | ||
| tools | ||
| tps | ||
| web-platform | ||
| webcompat | ||
| webdriver | ||
| xpcshell | ||
| addtest.py | ||
| cppunittest.ini | ||
| mach_commands.py | ||
| moz.build | ||
| parse_build_tests_ccov.py | ||
| README.txt | ||
| remotecppunittests.py | ||
| runcppunittests.py | ||
| skipfails.py | ||
| testinfo.py | ||
| testsuite-targets.mk | ||
Common testing tools for mozilla codebase projects, test suite definitions for automated test runs, tests that don't fit anywhere else, and other fun stuff