Index: chrome/test/data/keyevents_test.html |
=================================================================== |
--- chrome/test/data/keyevents_test.html (revision 0) |
+++ chrome/test/data/keyevents_test.html (revision 0) |
@@ -0,0 +1,165 @@ |
+<html><head> |
+<meta http-equiv="content-type" content="text/html; charset=utf-8"> |
+<script type="text/javascript"> |
+var defaultActions = { |
+ 'keydown': true, |
+ 'keypress': true, |
+ 'keyup': true, |
+ 'textInput': true, |
+}; |
+var keyEventResult = []; |
+var focusedElement = ""; |
+var lastFocusedElement = ""; |
+var testStarted = false; |
+var keyEventCount = 0; |
+ |
+function init() { |
+ document.addEventListener("keydown", handleEvent, false); |
+ document.addEventListener("keypress", handleEvent, false); |
+ document.addEventListener("keyup", handleEvent, false); |
+ document.addEventListener("textInput", handleEvent, false); |
+ window.addEventListener("blur", handleWindowBlur, false); |
+} |
+ |
+function log(text) { |
+ document.getElementById('log').innerHTML += text + '<br/>'; |
+} |
+ |
+function setDefaultAction(type, value) { |
+ defaultActions[type] = value; |
+ document.getElementById(type).checked = !value; |
+ return defaultActions[type]; |
+} |
+ |
+function startTest() { |
+ if (!testStarted) { |
+ clearResult(); |
+ testStarted = true; |
+ log("Start test."); |
+ return true; |
+ } |
+ return false; |
+} |
+ |
+function finishTest() { |
+ testStarted = false; |
+ window.domAutomationController.setAutomationId(0); |
+ window.domAutomationController.send("FINISHED"); |
+ log("Finish test."); |
+} |
+ |
+function handleEvent(e) { |
+ var prefixes = { |
+ 'keydown': 'D', |
+ 'keypress': 'P', |
+ 'keyup': 'U', |
+ 'textInput': 'T', |
+ }; |
+ |
+ var evt = e || window.event; |
+ var result = prefixes[evt.type] + ' '; |
+ if (evt.type == 'textInput') { |
+ result += evt.data; |
+ } else { |
+ // On Linux, the keydown event of a modifier key doesn't have the |
+ // corresponding modifier attribute set, while the keyup event does have, |
+ // eg. pressing and releasing ctrl may generate a keydown event with |
+ // ctrlKey=false and a keyup event with ctrlKey=true. |
+ // But Windows and Mac have opposite behavior than Linux. |
+ // To make the C++ testing code simpler, if it's a modifier key event, |
+ // then ignores the corresponding modifier attribute by setting it to true. |
+ var keyId = evt.keyIdentifier; |
+ result += (evt.keyCode + ' ' + evt.charCode + ' ' + |
+ (keyId == 'Control' ? true : evt.ctrlKey) + ' ' + |
+ (keyId == 'Shift' ? true : evt.shiftKey) + ' ' + |
+ (keyId == 'Alt' ? true : evt.altKey)); |
+ } |
+ keyEventResult.push(result); |
+ log(result); |
+ |
+ if (testStarted) { |
+ if (evt.type == "keydown") { |
+ ++keyEventCount; |
+ } else if (evt.type == "keyup") { |
+ --keyEventCount; |
+ if (keyEventCount == 0) |
+ finishTest(); |
+ } |
+ } |
+ |
+ if (!defaultActions[evt.type]) { |
+ if (evt.preventDefault) evt.preventDefault(); |
+ if (evt.stopPropagation) evt.stopPropagation(); |
+ } |
+ return defaultActions[evt.type]; |
+} |
+ |
+function handleWindowBlur() { |
+ if (testStarted) |
+ finishTest(); |
+} |
+ |
+function clearResult() { |
+ keyEventResult = []; |
+ testStarted = false; |
+ keyEventCount = 0; |
+ document.getElementById('log').innerHTML = ""; |
+ return true; |
+} |
+ |
+function setFocusedElement(id) { |
+ if (id == "" && focusedElement != "") { |
+ var elem = document.getElementById(focusedElement); |
+ if (elem) { |
+ elem.blur(); |
+ return true; |
+ } |
+ } else { |
+ var elem = document.getElementById(id); |
+ if (elem) { |
+ elem.focus(); |
+ return true; |
+ } |
+ } |
+ return false; |
+} |
+ |
+function onFocus(element) { |
+ focusedElement = element.id; |
+ log("Focus: " + focusedElement); |
+} |
+ |
+function onBlur(element) { |
+ focusedElement = ""; |
+ lastFocusedElement = element.id; |
+ log("Blur: " + element.id); |
+} |
+ |
+function onClick(element) { |
+ if (defaultActions[element.id] != undefined) |
+ defaultActions[element.id] = !element.checked; |
+} |
+</script> |
+</head> |
+<body onload="init()"> |
+ <input type="checkbox" id="keydown" onclick="onClick(this)">keydown</input> |
+ <input type="checkbox" id="keypress" onclick="onClick(this)">keypress</input> |
+ <input type="checkbox" id="keyup" onclick="onClick(this)">keyup</input> |
+ <input type="checkbox" id="textInput" onclick="onClick(this)">textInput</input> |
+ <br/> |
+ <input type="checkbox" id="1" accesskey='1' |
+ onfocus="onFocus(this)" onblur="onBlur(this)"/> |
+ <input type="checkbox" id="2" accesskey='2' |
+ onfocus="onFocus(this)" onblur="onBlur(this)"/> |
+ <input type="checkbox" id="3" accesskey='3' |
+ onfocus="onFocus(this)" onblur="onBlur(this)"/> |
+ <input type="checkbox" id="D" accesskey='D' |
+ onfocus="onFocus(this)" onblur="onBlur(this)"/> |
+ <input type="text" id="A" accesskey="A" |
+ onfocus="onFocus(this)" onblur="onBlur(this)"/> |
+ <input type="text" id="B" accesskey="B" |
+ onfocus="onFocus(this)" onblur="onBlur(this)"/> |
+ <button id="clear" accesskey='C' onclick="clearResult()">Clear</button> |
+ <p id="log"></p> |
+</body> |
+</html> |
Property changes on: chrome/test/data/keyevents_test.html |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |