<!DOCTYPE html>
<html>
    <head>
        <title id='desc'> TextEvent: inputMode with DOM_INPUT_METHOD_KEYBOARD </title>
        <script type="text/javascript">
            var PassTest = function()
            {
                document.getElementById("testresult").firstChild.data = "PASS";
            }

            var FailTest = function()
            {
                document.getElementById("testresult").firstChild.data = "FAIL";
            }

            var EVENT = "textInput";
            var TARGET;

            function TestEvent(evt)
            {
                TARGET.removeEventListener(EVENT, TestEvent, true);

                if ((0x01 == evt.inputMode) && ("a" == evt.data))
                {
                    PassTest();
                }
                else
                {
                    FailTest();
                }
            }

            window.onload = function()
            {
                try
                {
                    TARGET = document.getElementById("target");
                    TARGET.addEventListener(EVENT, TestEvent, true);
                }
                catch(ex)
                {
                    FailTest();
                }
            }
        </script>
    </head>
    <body>
        <h3>DOM Events</h3>
        <h4>
            Test Description: TextEvent.inputMode is DOM_INPUT_METHOD_KEYBOARD (0x01)
            when the text string was input through a keyboard.
        </h4>

        <span id="parent">
            <input id="target" type="text" />
        </span>
        <p id="manualsteps">
            Steps:
            <ol>
                <li> Type 'a' in the above texbox using keyboard
            </ol>
        </p>
        <p>Test passes if the word "PASS" appears below after following the above steps.</p>
        <div>Test result: </div>
        <div id='testresult'>FAIL</div>
    </body>
</html>