summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/forms/range/range-drag.html
blob: b1e38639c8f93e0ddca729876c98de7c016ea712 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../js/resources/js-test-pre.js"></script>
</head>
<body>
<p id="description">Test for dragging operations of &lt;input type=range&gt;</p>
<div id="console"></div>
<script>

var changeEventCounter = 0;
function handleChange() {
    changeEventCounter++;
}
var lastChangeEventCounter = changeEventCounter;

function dragMouseFromCenter() {
    var centerX = input.offsetLeft + input.offsetWidth / 2;
    var centerY = input.offsetTop + input.offsetHeight / 2;
    eventSender.mouseMoveTo(centerX, centerY);
    eventSender.mouseDown();
    eventSender.mouseMoveTo(input.offsetLeft + input.offsetWidth, centerY);
    eventSender.mouseUp();
}

function dragMouseFromEdge() {
    var centerY = input.offsetTop + input.offsetHeight / 2;

    eventSender.mouseMoveTo(input.offsetLeft + 1, centerY);
    eventSender.mouseDown();
    eventSender.mouseMoveTo(input.offsetLeft + input.offsetWidth, centerY);
    eventSender.mouseUp();
}

function testInput(dragsFromEdge) {
    if (!window.eventSender)
        return;

    var dragMouse = dragsFromEdge ? dragMouseFromEdge : dragMouseFromCenter;

    debug('readOnly=false, disabled=false');
    input.valueAsNumber = 50;
    lastChangeEventCounter = changeEventCounter;
    dragMouse();
    shouldBe('input.value', '"100"');
    shouldBeGreaterThanOrEqual('changeEventCounter', 'lastChangeEventCounter + 1');

    debug('readOnly=true');
    input.disabled = false;
    input.readOnly = true;
    input.valueAsNumber = 50;
    lastChangeEventCounter = changeEventCounter;
    dragMouse();
    shouldBe('input.value', '"50"');
    shouldBe('lastChangeEventCounter', 'changeEventCounter');

    debug('disabled=true');
    input.readOnly = false;
    input.disabled = true;
    input.valueAsNumber = 50;
    lastChangeEventCounter = changeEventCounter;
    dragMouse();
    shouldBe('input.value', '"50"');
    shouldBe('lastChangeEventCounter', 'changeEventCounter');
}

var parent = document.createElement('div');
document.body.appendChild(parent);
parent.innerHTML = '<input type=range id=range1 min=0 max=100 value=50>' +
'<input type=range id=range2 min=0 max=100 value=50>';

debug('Tests for range dragging from center.');
var input = document.getElementById('range1');
input.onchange = handleChange;
input.focus();
testInput(false);
debug('');

debug('Tests for range dragging from edge');
var input = document.getElementById('range2');
input.onchange = handleChange;
input.focus();
testInput(true);
debug('');
</script>
<script src="../../js/resources/js-test-post.js"></script>
</body>
</html>