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

Side by Side Diff: content/test/data/android/input/input_forms.html

Issue 2475773003: Fix some flaky event tests in ImeTest (Closed)
Patch Set: Address aelias@'s review Created 4 years, 1 month 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
« no previous file with comments | « content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <html> 1 <html>
2 <head> 2 <head>
3 <meta name="viewport" content="width=device-width" /> 3 <meta name="viewport" content="width=device-width" />
4 </head> 4 </head>
5 <body> 5 <body>
6 <form action="about:blank"> 6 <form action="about:blank">
7 <input id="input_text" type="text" size="10"/> 7 <input id="input_text" type="text" size="10"/>
8 <br/> 8 <br/>
9 </form> 9 </form>
10 <form> 10 <form>
11 <br/> 11 <br/>
12 <input id="input_radio" type="radio" style="width:50px;height:50px" /> 12 <input id="input_radio" type="radio" style="width:50px;height:50px" />
13 <br/> 13 <br/>
14 <textarea id="textarea" rows="4" cols="20"></textarea> 14 <textarea id="textarea" rows="4" cols="20"></textarea>
15 <br/> 15 <br/>
16 <textarea id="textarea2" rows="4" cols="20" autocomplete="off"></textarea> 16 <textarea id="textarea2" rows="4" cols="20" autocomplete="off"></textarea>
17 <br/> 17 <br/>
18 <input id="input_number1" type="number" /><br/> 18 <input id="input_number1" type="number" /><br/>
19 <input id="input_number2" type="number" /><br/> 19 <input id="input_number2" type="number" /><br/>
20 <span id="plain_text">This is Plain Text One</span> 20 <span id="plain_text">This is Plain Text One</span>
21 </form> 21 </form>
22 22
23 <!-- We may trigger different sets of events for CONTENTEDITABLE and INPUT / TEXTAREA --> 23 <!-- We may trigger different sets of events for CONTENTEDITABLE and INPUT / TEXTAREA -->
24 <div id="contenteditable_event" contenteditable><b>ab</b>cd<i>ef<b>gh</b></i ></div> 24 <div id="contenteditable_event" contenteditable><b>ab</b>cd<i>ef<b>gh</b></i ></div>
25 <a id="link" href="about:blank">hello</a> 25 <a id="link" href="about:blank">hello</a>
26 26
27 <script> 27 <script>
28 var log = ""; 28 var selectionChangeEventLog = "";
29 var otherEventLog = "";
29 var mutationObserver = new MutationObserver(function(mutations) { 30 var mutationObserver = new MutationObserver(function(mutations) {
30 mutations.forEach(function(mutation) { 31 mutations.forEach(function(mutation) {
31 addEventLog(mutation.type, mutation.detail); 32 addEventLog(mutation.type, mutation.detail);
32 }); 33 });
33 }) 34 })
34 35
35 var mutationConfig = { attributes: false, childList: false, characterData: true }; 36 var mutationConfig = { attributes: false, childList: false, characterData: true };
36 37
37 function addEventLog(type, detail) { 38 function addOtherEventLog(type, detail) {
38 if (log.length > 0) { 39 if (otherEventLog.length > 0) {
39 log += ','; 40 otherEventLog += ',';
40 } 41 }
41 if (detail == null) { 42 if (detail == null) {
42 log += type; 43 otherEventLog += type;
43 } else { 44 } else {
44 log += type + '(' + detail + ')'; 45 otherEventLog += type + '(' + detail + ')';
45 } 46 }
46 } 47 }
47 48
49 function addSelectionChangeEventLog(type, detail) {
50 if (selectionChangeEventLog.length > 0) {
51 selectionChangeEventLog += ',';
52 }
53 if (detail == null) {
54 selectionChangeEventLog += type;
55 } else {
56 selectionChangeEventLog += type + '(' + detail + ')';
57 }
58 }
59
60 // selectionchange event is queued, so it races with the other events.
61 // crbug.com/628964
48 function getEventLogs() { 62 function getEventLogs() {
49 return log; 63 if (otherEventLog.length > 0 && selectionChangeEventLog.length > 0)
64 return otherEventLog + ',' + selectionChangeEventLog;
65 return otherEventLog + selectionChangeEventLog;
50 } 66 }
51 67
52 function clearEventLogs() { 68 function clearEventLogs() {
53 log = ''; 69 selectionChangeEventLog = '';
70 otherEventLog = '';
54 } 71 }
55 72
56 function addEventListener(element, event_name) { 73 function addEventListener(element, event_name) {
57 element.addEventListener(event_name, function (e) { addEventLog(event_name, e. data); }); 74 element.addEventListener(event_name, function (e) { addOtherEventLog(event_nam e, e.data); });
58 } 75 }
59 76
60 function addKeyEventListener(element, event_name) { 77 function addKeyEventListener(element, event_name) {
61 element.addEventListener(event_name, function (e) { addEventLog(event_name, e. keyCode); }); 78 element.addEventListener(event_name, function (e) { addOtherEventLog(event_nam e, e.keyCode); });
62 } 79 }
63 80
64 function addSelectionEventListener(event_name) { 81 function addSelectionEventListener(event_name) {
65 // Note that listeners added to the element are not effective for now. 82 // Note that listeners added to the element are not effective for now.
66 document.addEventListener(event_name, function (e) { addEventLog(event_name, e .data); }); 83 document.addEventListener(event_name, function (e) { addSelectionChangeEventLo g(event_name, e.data); });
67 } 84 }
68 85
69 function registerListenersAndObserver(element) { 86 function registerListenersAndObserver(element) {
70 addKeyEventListener(element, "keydown"); 87 addKeyEventListener(element, "keydown");
71 addKeyEventListener(element, "keypress"); 88 addKeyEventListener(element, "keypress");
72 addKeyEventListener(element, "keyup"); 89 addKeyEventListener(element, "keyup");
73 addEventListener(element, "compositionstart"); 90 addEventListener(element, "compositionstart");
74 addEventListener(element, "compositionupdate"); 91 addEventListener(element, "compositionupdate");
75 addEventListener(element, "compositionend"); 92 addEventListener(element, "compositionend");
76 addEventListener(element, "beforeedit"); 93 addEventListener(element, "beforeedit");
77 addEventListener(element, "edit"); 94 addEventListener(element, "edit");
78 addEventListener(element, "select"); 95 addEventListener(element, "select");
79 addEventListener(element, "change"); 96 addEventListener(element, "change");
80 addEventListener(element, "input"); 97 addEventListener(element, "input");
81 mutationObserver.observe(element, mutationConfig); 98 mutationObserver.observe(element, mutationConfig);
82 } 99 }
83 100
84 var inputText = document.getElementById("input_text"); 101 var inputText = document.getElementById("input_text");
85 var contenteditableEvent = document.getElementById("contenteditable_event"); 102 var contenteditableEvent = document.getElementById("contenteditable_event");
86 103
87 // SelectionEventListener should be outside registerListenersAndObserver() to av oid duplication. 104 // SelectionEventListener should be outside registerListenersAndObserver() to av oid duplication.
88 addSelectionEventListener("selectionchange"); 105 addSelectionEventListener("selectionchange");
89 106
90 registerListenersAndObserver(inputText); 107 registerListenersAndObserver(inputText);
91 registerListenersAndObserver(contenteditableEvent); 108 registerListenersAndObserver(contenteditableEvent);
92 </script> 109 </script>
93 110
94 </body> 111 </body>
95 </html> 112 </html>
OLDNEW
« no previous file with comments | « content/public/android/javatests/src/org/chromium/content/browser/input/ImeTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698