Bug 1352799 - Part 2. Add test for changing maxlength dynamically. r=masayuki draft
authorMakoto Kato <m_kato@ga2.so-net.ne.jp>
Thu, 20 Apr 2017 10:23:38 +0900
changeset 574085 ba09b6577f043ffd7dcec028d6aa667b8be8f6a6
parent 574080 797f318ad8d42ffd058b225ff327004060d5cc1c
child 627480 a2f9497d30e2ac7e2eb316a0e50afca557f7ea99
push id57582
push userbmo:m_kato@ga2.so-net.ne.jp
push dateMon, 08 May 2017 10:07:38 +0000
reviewersmasayuki
bugs1352799
milestone55.0a1
Bug 1352799 - Part 2. Add test for changing maxlength dynamically. r=masayuki MozReview-Commit-ID: 4DiE33eyBar
editor/libeditor/tests/mochitest.ini
editor/libeditor/tests/test_bug1352799.html
--- a/editor/libeditor/tests/mochitest.ini
+++ b/editor/libeditor/tests/mochitest.ini
@@ -227,16 +227,17 @@ skip-if = toolkit == 'android'
 skip-if = toolkit == 'android' # bug 1315898
 [test_bug1314790.html]
 [test_bug1315065.html]
 [test_bug1316302.html]
 [test_bug1318312.html]
 [test_bug1328023.html]
 [test_bug1330796.html]
 [test_bug1332876.html]
+[test_bug1352799.html]
 [test_bug1355792.html]
 
 [test_CF_HTML_clipboard.html]
 subsuite = clipboard
 [test_composition_event_created_in_chrome.html]
 [test_contenteditable_focus.html]
 [test_documentCharacterSet.html]
 [test_dom_input_event_on_htmleditor.html]
new file mode 100644
--- /dev/null
+++ b/editor/libeditor/tests/test_bug1352799.html
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1352799
+-->
+<head>
+  <title>Test for Bug 1352799</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>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1352799">Mozilla Bug 1352799</a>
+<p id="display"></p>
+<div id="content">
+<div id="input-container" style="display: none;">
+<input id="input" maxlength="1">
+</div>
+</div>
+<pre id="test">
+<script type="application/javascript">
+
+/** Test for Bug 1352799 **/
+SimpleTest.waitForExplicitFinish();
+SimpleTest.waitForFocus(() => {
+  var input = document.getElementById("input");
+
+  var inputcontainer = document.getElementById('input-container');
+  input.setAttribute('maxlength', 2);
+  inputcontainer.style.display = 'block';
+
+  input.focus();
+
+  synthesizeKey('1', {});
+  synthesizeKey('2', {});
+  synthesizeKey('3', {});
+
+  is(input.value, '12', 'value should be 12 with maxlength = 2');
+
+  input.value = '';
+  inputcontainer.style.display = 'none';
+
+  window.setTimeout(() => {
+    input.setAttribute('maxlength', 4);
+    inputcontainer.style.display = 'block';
+
+    input.focus();
+
+    synthesizeKey('4', {});
+    synthesizeKey('5', {});
+    synthesizeKey('6', {});
+    synthesizeKey('7', {});
+    synthesizeKey('8', {});
+
+    is(input.value, '4567', 'value should be 4567 with maxlength = 4');
+
+    inputcontainer.style.display = 'none';
+
+    window.setTimeout(() => {
+      input.setAttribute('maxlength', 2);
+      inputcontainer.style.display = 'block';
+
+      input.focus();
+
+      synthesizeKey('1', {});
+      synthesizeKey('2', {});
+
+      todo_is(input.value, '45', 'value should be 45 with maxlength = 2');
+
+      input.value = '';
+      inputcontainer.style.display = 'none';
+
+      window.setTimeout(() => {
+        input.removeAttribute('maxlength');
+        inputcontainer.style.display = 'block';
+
+        input.focus();
+
+        synthesizeKey('1', {});
+        synthesizeKey('2', {});
+        synthesizeKey('3', {});
+        synthesizeKey('4', {});
+        synthesizeKey('5', {});
+        synthesizeKey('6', {});
+        synthesizeKey('7', {});
+        synthesizeKey('8', {});
+
+        is(input.value, '12345678', 'value should be 12345678 without maxlength');
+
+        SimpleTest.finish();
+      }, 0);
+    }, 0);
+  }, 0);
+});
+</script>
+</pre>
+</body>
+</html>