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

Side by Side Diff: third_party/WebKit/LayoutTests/editing/selection/shift-click.html

Issue 2966473002: Convert editing/selection/shift-click.html to use assert_selection() (Closed)
Patch Set: 2017-07-03T15:30:45 Rebase Created 3 years, 5 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 unified diff | Download patch
OLDNEW
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> 1 <!doctype html>
2 <html> 2 <script src="../../resources/testharness.js"></script>
3 <head> 3 <script src="../../resources/testharnessreport.js"></script>
4 <script src="../../resources/js-test.js"></script> 4 <script src="../assert_selection.js"></script>
5 <script src="resources/js-test-selection-shared.js"></script> 5 <script>
6 </head> 6 // TODO(editing-dev): Once http://crbug.com/736253 fixed, we should use
7 <body> 7 // |chrome.pointerActionSequence()| instead of |eventSender|.
8 <p id="description"></p> 8 const kSample = [
9 <div id="console"></div> 9 '<div id="first">one <span id="start"></span>two three</div>',
10 <script src="script-tests/shift-click.js"></script> 10 '<div id="second">four <span id="end"></span>five six</div>',
11 </body> 11 ].join('');
12 </html> 12
13 function doTest(behavior) {
14 assert_exists(window, 'eventSender', 'This test requires eventSender.');
15 assert_exists(window, 'internals', 'This test requires internals.');
16
17 function doDrag(selection) {
18 const document = selection.document;
19 const start = document.getElementById('start');
20 const end = document.getElementById('end');
21
22 // Reset selection granularity
23 eventSender.leapForward(1000);
24 eventSender.mouseMoveTo(0, 0);
25 eventSender.mouseDown();
26 eventSender.leapForward(1000);
27
28 // Double-click select to get around eventSender bug where it won't select
29 // text just using single-click.
30 eventSender.mouseMoveTo(selection.computeLeft(start),
31 selection.computeTop(start));
32 eventSender.mouseDown();
33 eventSender.mouseUp();
34 eventSender.mouseDown();
35 eventSender.mouseMoveTo(selection.computeLeft(end),
36 selection.computeTop(end));
37 eventSender.mouseUp();
38 }
39
40 function doShiftClick(selection, target, offsetX) {
41 const document = selection.document;
42 const parent = target.parentNode;
43 eventSender.mouseMoveTo(selection.computeLeft(target) + offsetX,
44 selection.computeTop(target));
45 eventSender.mouseDown(0, ['shiftKey']);
46 eventSender.mouseUp(0, ['shiftKey']);
47 }
48
49 internals.settings.setEditingBehavior(behavior);
50
51 assert_selection(
52 kSample,
53 selection => doDrag(selection),
54 [
55 '<div id="first">one <span id="start"></span>^two three</div>',
56 '<div id="second">four <span id="end"></span>five| six</div>',
57 ].join(''),
58 `${behavior}-1: Drag start to end`);
59
60 assert_selection(
61 kSample,
62 selection => {
63 const second = selection.document.getElementById('second');
64 doDrag(selection);
65 doShiftClick(selection, second, second.offsetWidth);
66 },
67 [
68 '<div id="first">one <span id="start"></span>^two three</div>',
69 '<div id="second">four <span id="end"></span>five six|</div>',
70 ].join(''),
71 `${behavior}-2: Shift click second`);
72
73 assert_selection(
74 kSample,
75 selection => {
76 const end = selection.document.getElementById('end');
77 const second = selection.document.getElementById('second');
78 doDrag(selection);
79 doShiftClick(selection, second, second.offsetWidth);
80 doShiftClick(selection, end, 0);
81 },
82 [
83 '<div id="first">one <span id="start"></span>^two three</div>',
84 '<div id="second">four <span id="end"></span>five| six</div>',
85 ].join(''),
86 `${behavior}-3: Shift click end`);
87
88 // These two fail on Mac due https://bugs.webkit.org/show_bug.cgi?id=36256
89 // In the first shiftClick call, the space after five is selected and
90 // shouldn't be. In the second shiftClick call, "six" is selected and
91 // shouldn't be.
92 assert_selection(
93 kSample,
94 selection => {
95 const end = selection.document.getElementById('end');
96 const first = selection.document.getElementById('first');
97 const second = selection.document.getElementById('second');
98 doDrag(selection);
99 doShiftClick(selection, second, second.offsetWidth);
100 doShiftClick(selection, end, 0);
101 doShiftClick(selection, first, 0);
102 },
103 behavior === 'mac'
104 ? [
105 '<div id="first">|one <span id="start"></span>two three</div>',
106 '<div id="second">four <span id="end"></span>five ^six</div>',
107 ].join('')
108 : [
109 '<div id="first">|one <span id="start"></span>two^ three</div>',
110 '<div id="second">four <span id="end"></span>five six</div>',
111 ].join(''),
112 `${behavior}-4: Shift click first`);
113
114 assert_selection(
115 kSample,
116 selection => {
117 const end = selection.document.getElementById('end');
118 const first = selection.document.getElementById('first');
119 const second = selection.document.getElementById('second');
120 const start = selection.document.getElementById('start');
121 doDrag(selection);
122 doShiftClick(selection, second, second.offsetWidth);
123 doShiftClick(selection, end, 0);
124 doShiftClick(selection, first, 0);
125 doShiftClick(selection, start, 0);
126 },
127 behavior === 'mac'
128 ? [
129 '<div id="first">one <span id="start"></span>|two three</div>',
130 '<div id="second">four <span id="end"></span>five six^</div>',
131 ].join('')
132 : [
133 '<div id="first">one <span id="start"></span>^two| three</div>',
134 '<div id="second">four <span id="end"></span>five six</div>',
135 ].join(''),
136 `${behavior}-5: Shift click start`);
137 }
138
139 for (const behavior of ['mac', 'win']) {
140 test(() => doTest(behavior),
141 `${behavior}: Expand selection with Shift+Click`);
142 }
143 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698