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

Unified Diff: third_party/WebKit/LayoutTests/editing/selection/selection-no-focus-change.html

Issue 2709983005: Selection API: Do not change focus by Selection functions. (Closed)
Patch Set: . Created 3 years, 10 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: third_party/WebKit/LayoutTests/editing/selection/selection-no-focus-change.html
diff --git a/third_party/WebKit/LayoutTests/editing/selection/selection-no-focus-change.html b/third_party/WebKit/LayoutTests/editing/selection/selection-no-focus-change.html
new file mode 100644
index 0000000000000000000000000000000000000000..86b2d84de0698d8d6579b56ad9a8407b7cc8d550
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/editing/selection/selection-no-focus-change.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<body>
+<script src="../../resources/testharness.js"></script>
+<script src="../../resources/testharnessreport.js"></script>
+<script src="../assert_selection.js"></script>
+<script>
+test(() => {
+ let sample = assert_selection(
+ '<input><div contenteditable="true"></div>',
+ (selection) => {
+ selection.document.querySelector('input').focus();
+ selection.extend(selection.document.querySelector('div'), 0);
+ },
+ '<input><div contenteditable="true">|</div>',
+ {removeSampleIfSucceeded: false});
+ assert_equals(sample.document.activeElement, sample.document.querySelector('input'));
+}, 'extend() should not change focus.');
+
+test(() => {
+ let sample = assert_selection(
+ '<input><div contenteditable="true"></div>',
+ (selection) => {
+ selection.document.querySelector('input').focus();
+ selection.collapse(selection.document.querySelector('div'), 0);
+ },
+ '<input><div contenteditable="true">|</div>',
+ {removeSampleIfSucceeded: false});
+ assert_equals(sample.document.activeElement, sample.document.querySelector('input'));
+}, 'collapse() should not change focus.');
+
+test(() => {
+ let sample = assert_selection(
+ '<div contenteditable="true">^abc|</div>',
+ (selection) => {
+ selection.document.querySelector('div').blur();
+ selection.collapseToStart();
+ },
+ '<div contenteditable="true">|abc</div>',
+ {removeSampleIfSucceeded: false});
+ assert_not_equals(sample.document.activeElement, sample.document.querySelector('div'));
+}, 'collapseToStart() should not change focus.');
+
+test(() => {
+ let sample = assert_selection(
+ '<div contenteditable="true">^abc|</div>',
+ (selection) => {
+ selection.document.querySelector('div').blur();
+ selection.collapseToEnd();
+ },
+ '<div contenteditable="true">abc|</div>',
+ {removeSampleIfSucceeded: false});
+ assert_not_equals(sample.document.activeElement, sample.document.querySelector('div'));
+}, 'collapseToEnd() should not change focus.');
+
+test(() => {
+ let sample = assert_selection(
+ '<div contenteditable="true">^abc|</div>',
+ (selection) => {
+ let target = selection.document.querySelector('div');
+ target.blur();
+ selection.setBaseAndExtent(target.firstChild, 1, target.firstChild, 2);
+ },
+ '<div contenteditable="true">a^b|c</div>',
+ {removeSampleIfSucceeded: false});
+ assert_not_equals(sample.document.activeElement, sample.document.querySelector('div'));
+}, 'setBaseAndExtent() should not change focus.');
+
+test(() => {
+ let sample = assert_selection(
+ '<div contenteditable="true">a|bc</div>',
+ (selection) => {
+ let target = selection.document.querySelector('div');
+ target.blur();
+ selection.selectAllChildren(target);
+ },
+ '<div contenteditable="true">^abc|</div>',
+ {removeSampleIfSucceeded: false});
+ assert_not_equals(sample.document.activeElement, sample.document.querySelector('div'));
+}, 'selectAllChildren() should not change focus.');
+
+test(() => {
+ let sample = assert_selection(
+ '<div contenteditable="true">|abc</div>',
+ (selection) => {
+ let target = selection.document.querySelector('div');
+ selection.modify('move', 'forward', 'character');
+ },
+ '<div contenteditable="true">a|bc</div>',
+ {removeSampleIfSucceeded: false});
+ assert_not_equals(sample.document.activeElement, sample.document.querySelector('div'));
+}, 'modify() should not change focus.');
+
+test(() => {
+ let sample = assert_selection(
+ '<div contenteditable="true">abc</div>',
+ (selection) => {
+ selection.removeAllRanges();
+ let target = selection.document.querySelector('div');
+ let range = selection.document.createRange();
+ range.setStart(target, 1);
+ selection.addRange(range);
+ },
+ '<div contenteditable="true">abc|</div>',
+ {removeSampleIfSucceeded: false});
+ assert_not_equals(sample.document.activeElement, sample.document.querySelector('div'));
+}, 'addRange() should not change focus.');
+
+test(() => {
+ let sample = assert_selection(
+ '<div contenteditable="true">a|bc</div>',
+ (selection) => {
+ let target = selection.document.querySelector('div');
+ target.focus();
+ selection.removeAllRanges();
+ },
+ '<div contenteditable="true">abc</div>',
+ {removeSampleIfSucceeded: false});
+ assert_equals(sample.document.activeElement, sample.document.querySelector('div'));
+}, 'removeAllRanges() should not change focus.');
+
+// modify
+</script>
+</body>

Powered by Google App Engine
This is Rietveld 408576698