diff options
Diffstat (limited to 'contexts/data/lib/closure-library/closure/goog/events/imehandler_test.html')
-rw-r--r-- | contexts/data/lib/closure-library/closure/goog/events/imehandler_test.html | 269 |
1 files changed, 0 insertions, 269 deletions
diff --git a/contexts/data/lib/closure-library/closure/goog/events/imehandler_test.html b/contexts/data/lib/closure-library/closure/goog/events/imehandler_test.html deleted file mode 100644 index deae616..0000000 --- a/contexts/data/lib/closure-library/closure/goog/events/imehandler_test.html +++ /dev/null @@ -1,269 +0,0 @@ -<!DOCTYPE html> -<html> -<!-- -Copyright 2010 The Closure Library Authors. All Rights Reserved. - -Use of this source code is governed by the Apache License, Version 2.0. -See the COPYING file for details. - ---> -<head> -<meta http-equiv="X-UA-Compatible" content="IE=edge"> -<title>JsUnit tests for goog.events.ImeHandler</title> -<script src="../base.js"></script> -<script> - -goog.require('goog.array'); -goog.require('goog.dom'); -goog.require('goog.events.ImeHandler'); -goog.require('goog.object'); -goog.require('goog.testing.PropertyReplacer'); -goog.require('goog.testing.events'); -goog.require('goog.testing.jsunit'); - - -</script> -</head> -<body> -<div id="sandbox"></div> -<div> -<b>Last 10 events:</b> -<div id="logger" style='padding: 0.5em;'> -</div> -<script type='text/javascript'> - -var sandbox = goog.dom.getElement('sandbox'); -var imeHandler; -var eventsFired; -var stubs = new goog.testing.PropertyReplacer(); -var eventTypes = goog.events.ImeHandler.EventType; - -function setUp() { -} - -function initImeHandler() { - goog.events.ImeHandler.USES_COMPOSITION_EVENTS = - goog.userAgent.GECKO || - (goog.userAgent.WEBKIT && goog.userAgent.isVersion(532)); - imeHandler = new goog.events.ImeHandler(sandbox); - eventsFired = []; - goog.events.listen( - imeHandler, - goog.object.getValues(goog.events.ImeHandler.EventType), - function(e) { - eventsFired.push(e.type); - }); -} - -function tearDown() { - imeHandler.dispose(); - imeHandler = null; - - stubs.reset(); -} - -function tearDownPage() { - // Set up a test bed. - sandbox.innerHTML = '<div contentEditable="true">hello world</div>'; - initImeHandler(); - - function unshiftEvent(e) { - last10Events.unshift(e.type + ':' + e.keyCode + ':' + - goog.string.htmlEscape(goog.dom.getTextContent(sandbox))); - last10Events.length = Math.min(last10Events.length, 10); - goog.dom.getElement('logger').innerHTML = last10Events.join('<br/>'); - } - - var last10Events = []; - goog.events.listen( - imeHandler, - goog.object.getValues(goog.events.ImeHandler.EventType), - unshiftEvent); - goog.events.listen( - sandbox, - ['keydown', 'textInput'], - unshiftEvent); -} - -function assertEventsFired(var_args) { - assertArrayEquals( - goog.array.clone(arguments), eventsFired); -} - -function fireInputEvent(type) { - return goog.testing.events.fireBrowserEvent( - new goog.testing.events.Event(type, sandbox)); -} - -function fireImeKeySequence() { - return fireKeySequence(goog.events.KeyCodes.WIN_IME); -} - -function fireKeySequence(keyCode) { - return ( - goog.testing.events.fireBrowserEvent( - new goog.testing.events.Event('textInput', sandbox)) & - goog.testing.events.fireKeySequence( - sandbox, keyCode)); -} - -function testHandleKeyDown_GeckoCompositionEvents() { - // This test verifies that our IME functions can dispatch IME events to - // InputHandler in the expected order on Gecko. - - // Set the userAgent used for this test to Firefox. - setUserAgent('GECKO'); - stubs.set(goog.userAgent, 'MAC', false); - initImeHandler(); - - fireInputEvent('compositionstart'); - assertImeMode(); - - fireInputEvent('compositionupdate'); - fireInputEvent('compositionupdate'); - - fireInputEvent('compositionend'); - - assertEventsFired( - eventTypes.START, eventTypes.UPDATE, eventTypes.UPDATE, eventTypes.END); - assertNotImeMode(); -} - -/** - * Verifies that our IME functions can dispatch IME events to the input handler - * in the expected order on Chrome. jsUnitFarm does not have Linux Chrome or - * Mac Chrome. So, we manually change the platform and run this test three - * times. - */ -function testChromeCompositionEventsLinux() { - runChromeCompositionEvents('LINUX'); -} - -function testChromeCompositionEventsMac() { - runChromeCompositionEvents('MAC'); -} - -function testChromeCompositionEventsWindows() { - runChromeCompositionEvents('WINDOWS'); -} - -function runChromeCompositionEvents(platform) { - setUserAgent('WEBKIT'); - setVersion(532); - stubs.set(goog.userAgent, platform, true); - initImeHandler(); - - fireImeKeySequence(); - - fireInputEvent('compositionstart'); - assertImeMode(); - - fireInputEvent('compositionupdate'); - fireInputEvent('compositionupdate'); - - fireInputEvent('compositionend'); - assertEventsFired( - eventTypes.START, eventTypes.UPDATE, eventTypes.UPDATE, eventTypes.END); - assertNotImeMode(); -} - -/** - * Ensures that the IME mode turn on/off correctly. - */ -function testHandlerKeyDownForIme_imeOnOff() { - setUserAgent('IE'); - initImeHandler(); - - // Send a WIN_IME keyDown event and see whether IME mode turns on. - fireImeKeySequence(); - assertImeMode(); - - // Send keyDown events which should not turn off IME mode and see whether - // IME mode holds on. - fireKeySequence(goog.events.KeyCodes.SHIFT); - assertImeMode(); - - fireKeySequence(goog.events.KeyCodes.CTRL); - assertImeMode(); - - // Send a keyDown event with keyCode = ENTER and see whether IME mode - // turns off. - fireKeySequence(goog.events.KeyCodes.ENTER); - assertNotImeMode(); - - assertEventsFired( - eventTypes.START, eventTypes.END); -} - -/** - * Ensures that IME mode turns off when keyup events which are involved - * in commiting IME text occurred in Safari. - */ -function testHandleKeyUpForSafari() { - setUserAgent('WEBKIT'); - setVersion(531); - initImeHandler(); - - fireImeKeySequence(); - assertImeMode(); - - fireKeySequence(goog.events.KeyCodes.ENTER); - assertNotImeMode(); -} - -/** - * SCIM on Linux will fire WIN_IME keycodes for random characters. - * Fortunately, all Linux-based browsers use composition events. - * This test just verifies that we ignore the WIN_IME keycodes. - */ -function testScimFiresWinImeKeycodesGeckoLinux() { - setUserAgent('GECKO'); - assertScimInputIgnored(); -} - -function testScimFiresWinImeKeycodesChromeLinux() { - setUserAgent('WEBKIT'); - setVersion(532); - assertScimInputIgnored(); -} - -function assertScimInputIgnored() { - initImeHandler(); - - fireImeKeySequence(); - assertNotImeMode(); - - fireInputEvent('compositionstart'); - assertImeMode(); - - fireImeKeySequence(); - assertImeMode(); - - fireInputEvent('compositionend'); - assertNotImeMode(); -} - -var userAgents = ['IE', 'GECKO', 'WEBKIT']; - -function setUserAgent(userAgent) { - for (var i = 0; i < userAgents.length; i++) { - stubs.set(goog.userAgent, userAgents[i], userAgents[i] == userAgent); - } -} - -function setVersion(version) { - goog.userAgent.VERSION = version; - goog.userAgent.isVersionCache_ = {}; -} - -function assertImeMode() { - assertTrue('Should be in IME mode.', imeHandler.isImeMode()); -} - -function assertNotImeMode() { - assertFalse('Should not be in IME mode.', imeHandler.isImeMode()); -} - -</script> -</body> -</html> |