summaryrefslogtreecommitdiffstats
path: root/layout/base/tests/test_bug370436.html
blob: a3e8471bb7f5de9327fecef5b0f5d3b60c9e021f (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
89
90
91
92
93
<!DOCTYPE HTML>
<html>
<!--
  https://bugzilla.mozilla.org/show_bug.cgi?id=370436
-->
<head>
  <title>Test for Bug 370436</title>
  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
  <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>

<script class="testbody" type="application/javascript">
<!--
words = new Array()

function expandStringOffsetToWord(data, offset)
{
  if (data == undefined) return "";

  var m1 = data.substr(0, offset).match(/\w+$/) || "";
  var m2 = data.substr(offset).match(/^\w+/) || "";
  return m1 + m2;
}

function onContextMenu(e)
{
  var node = SpecialPowers.wrap(e).rangeParent;
  var offset = e.rangeOffset;

  var word = expandStringOffsetToWord(node.data, offset);
  words.push(word);
}

function startTest()
{
  ta = document.getElementById('blah');
  ta.focus();
  ta.selectionStart = ta.selectionEnd = ta.value.length;

// Note: This test, intentionally or by accident, relies on sending button '0'
// with contextMenu, which triggers some key-equiv stuff in
// PresShell::AdjustContextMenuKeyEvent.
var mouseParams = { type: 'contextmenu', button: 0 };

  /* Put cursor at start and middle of "sheep" */
  synthesizeKey("VK_UP", {})
  synthesizeMouse(ta, 0, 0, mouseParams);
  synthesizeKey("VK_RIGHT", {})
  synthesizeMouse(ta, 0, 0, mouseParams);
  synthesizeKey("VK_RIGHT", {})
  synthesizeMouse(ta, 0, 0, mouseParams);

  /* Put cursor at the end of "hello" */
  synthesizeKey("VK_UP", {})
  synthesizeMouse(ta, 0, 0, mouseParams);
  synthesizeKey("VK_RIGHT", {})
  synthesizeKey("VK_RIGHT", {})
  synthesizeKey("VK_RIGHT", {})
  synthesizeMouse(ta, 0, 0, mouseParams);
  synthesizeKey("VK_RIGHT", {})
  synthesizeMouse(ta, 0, 0, mouseParams);

  /* Put cursor on "welcome" */
  synthesizeKey("VK_UP", {})
  synthesizeMouse(ta, 0, 0, mouseParams);

  is(words.pop(), "welcome", "Word 1 selected correctly");
  is(words.pop(), "world"  , "Word 2 selected correctly");
  is(words.pop(), "hello"  , "Word 3 selected correctly");
  is(words.pop(), "hello"  , "Word 4 selected correctly");
  is(words.pop(), "sheep"  , "Word 5 selected correctly");
  is(words.pop(), "sheep"  , "Word 6 selected correctly");
  is(words.pop(), "sheep"  , "Word 7 selected correctly");

  SimpleTest.finish();
}

SimpleTest.waitForExplicitFinish()
SimpleTest.waitForFocus(startTest)
-->
</script>

<p><a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=370436">Mozilla Bug 370436</a></p>

<textarea id="blah" rows="10" cols="80" oncontextmenu="onContextMenu(event); return false;">
welcome
hello world
sheep
</textarea>
</body>
</html>