2011-05-16  Jeremy Noble  <[email protected]>

        Reviewed by Darin Adler.

        Disable keyboard input (with exceptions) in full-screen mode.
        https://bugs.webkit.org/show_bug.cgi?id=60943

        * fullscreen/full-screen-keyboard-disabled-expected.txt: Added.
        * fullscreen/full-screen-keyboard-disabled.html: Added.
        * fullscreen/full-screen-keyboard-enabled-expected.txt: Added.
        * fullscreen/full-screen-keyboard-enabled.html: Added.
2011-05-16  Jeremy Noble  <[email protected]>

        Reviewed by Darin Adler.

        Disable keyboard input (with exceptions) in full-screen mode.
        https://bugs.webkit.org/show_bug.cgi?id=60943

        Tests: fullscreen/full-screen-keyboard-disabled.html
               fullscreen/full-screen-keyboard-enabled.html

        * page/EventHandler.cpp:
        (WebCore::EventHandler::isKeyEventAllowedInFullScreen): Added.  Implements the
            list of allowed keyboard events in the proposed API.
        (WebCore::EventHandler::keyEvent): Discard events which are not allowed in
            full-screen mode.
        * page/EventHandler.h:

git-svn-id: svn://svn.chromium.org/blink/trunk@86741 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/third_party/WebKit/LayoutTests/fullscreen/full-screen-keyboard-enabled.html b/third_party/WebKit/LayoutTests/fullscreen/full-screen-keyboard-enabled.html
new file mode 100644
index 0000000..e1726cb
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/fullscreen/full-screen-keyboard-enabled.html
@@ -0,0 +1,37 @@
+<body>
+<script src="full-screen-test.js"></script>
+<p>This tests that full screen mode does not allow alphanumeric key events.  Press space to continue, then press the 'a' key.
+<span></span>
+<script>
+    // Bail out early if the full screen API is not enabled or is missing:
+    if (Element.prototype.webkitRequestFullScreen == undefined) {
+        logResult(false, "Element.prototype.webkitRequestFullScreen == undefined");
+        endTest();
+    } else {
+        var callback;
+        var fullscreenChanged = function(event)
+        {
+            if (callback)
+                callback(event)
+        };
+        waitForEvent(document, 'webkitfullscreenchange', fullscreenChanged);
+
+        var spanEnteredFullScreen = function() {
+            callback = null;
+            testExpected("document.webkitIsFullScreen", true);
+            if (window.layoutTestController && eventSender.keyDown) {
+                waitForEvent(document, 'keypress', keyPressed);
+                eventSender.keyDown('a', []);
+            }
+        };
+        
+        var keyPressed = function(event) {
+            testExpected('event.keyCode', 97); // 'A'
+            endTest();
+        }
+        
+        var span = document.getElementsByTagName('span')[0];
+        callback = spanEnteredFullScreen;
+        runWithKeyDown(function(){span.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)});
+    }
+</script>