summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/general/test_bug1170911.html
blob: af0e71576fccae06f936e8dc6beac59672fe1d96 (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
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1012662
-->
<head>
  <title>Test for Bug 1170911</title>
  <script src="/tests/SimpleTest/SimpleTest.js"></script>
  <script src="/tests/SimpleTest/EventUtils.js"></script>
  <script src="/tests/SimpleTest/WindowSnapshot.js"></script>
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1170911">Mozilla Bug 1170911</a>
<p id="display"></p>

<div id="content">
  <textarea>textarea text</textarea>
</div>

<pre id="test">
<script>
const TEXTAREA = document.querySelector('textarea');
const TEXTAREA_VALUE = TEXTAREA.value;

function doTest() {
  is(document.queryCommandSupported("copy"), false,
     "Copy support should have been disabled");
  is(document.queryCommandSupported("cut"), false,
     "Cut support should have been disabled");

  document.addEventListener("keydown", tryCopy);
  sendString("Q");
}

function tryCopy(evt) {
  evt.preventDefault();
  document.removeEventListener("keydown", tryCopy);
  TEXTAREA.setSelectionRange(0, TEXTAREA_VALUE.length);
  TEXTAREA.focus();

  SimpleTest.waitForClipboard(null, function () {
      is(document.queryCommandEnabled("copy"), false,
        "Copy should not be allowed when dom.allow_cut_copy is off");
      is(document.execCommand("copy"), false,
        "Copy should not be executed when dom.allow_cut_copy is off");
      is(TEXTAREA.value, TEXTAREA_VALUE,
        "Content in the textarea shouldn't be changed");
      TEXTAREA.value = TEXTAREA_VALUE;
    },
    /* success fn */ SimpleTest.finish,
    /* failure fn */ function () {
      document.addEventListener("keydown", tryCut);
      sendString("Q");
    },
    /* flavor */ undefined,
    /* timeout */ undefined,
    /* expect failure */ true);
}

function tryCut(evt) {
  evt.preventDefault();
  document.removeEventListener("keydown", tryCut);
  TEXTAREA.setSelectionRange(0, TEXTAREA_VALUE.length);
  TEXTAREA.focus();

  SimpleTest.waitForClipboard(null, function () {
      is(document.queryCommandEnabled("cut"), false,
        "Cut should not be allowed when dom.allow_cut_copy is off");
      is(document.execCommand("cut"), false,
        "Cut should not be executed when dom.allow_cut_copy is off");
      is(TEXTAREA.value, TEXTAREA_VALUE,
        "Content in the textarea shouldn't be changed");
    },
    /* success fn */ SimpleTest.finish,
    /* failure fn */ SimpleTest.finish,
    /* flavor */ undefined,
    /* timeout */ undefined,
    /* expect failure */ true);
}

SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(() => {
  SpecialPowers.pushPrefEnv({"set": [["dom.allow_cut_copy", false]]}, doTest);
});

</script>
</pre>
</body>
</html>