Index: chrome/renderer/render_view_unittest_mac.mm |
=================================================================== |
--- chrome/renderer/render_view_unittest_mac.mm (revision 57231) |
+++ chrome/renderer/render_view_unittest_mac.mm (working copy) |
@@ -1,135 +0,0 @@ |
-// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/string16.h" |
-#include "chrome/common/native_web_keyboard_event.h" |
-#include "chrome/common/render_messages.h" |
-#include "chrome/test/render_view_test.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-#include <Cocoa/Cocoa.h> |
-#include <Carbon/Carbon.h> // for the kVK_* constants. |
- |
-NSEvent* CmdDeadKeyEvent(NSEventType type, unsigned short code) { |
- UniChar uniChar = 0; |
- switch(code) { |
- case kVK_UpArrow: |
- uniChar = NSUpArrowFunctionKey; |
- break; |
- case kVK_DownArrow: |
- uniChar = NSDownArrowFunctionKey; |
- break; |
- default: |
- CHECK(false); |
- } |
- NSString* s = [NSString stringWithFormat:@"%C", uniChar]; |
- |
- return [NSEvent keyEventWithType:type |
- location:NSMakePoint(0, 0) |
- modifierFlags:NSCommandKeyMask |
- timestamp:0.0 |
- windowNumber:0 |
- context:nil |
- characters:s |
- charactersIgnoringModifiers:s |
- isARepeat:NO |
- keyCode:code]; |
-} |
- |
-// Test that cmd-up/down scrolls the page exactly if it is not intercepted by |
-// javascript. |
-TEST_F(RenderViewTest, MacTestCmdUp) { |
- // Some preprocessor trickery so that we can have literal html in our source, |
- // makes it easier to copy html to and from an html file for testing (the |
- // preprocessor will remove the newlines at the line ends, turning this into |
- // a single long line). |
- #define HTML(s) #s |
- const char* kRawHtml = HTML( |
- <html> |
- <head><title></title> |
- <script type='text/javascript' language='javascript'> |
- function OnKeyEvent(ev) { |
- var result = document.getElementById(ev.type); |
- result.innerText = (ev.which || ev.keyCode) + ',' + |
- ev.shiftKey + ',' + |
- ev.ctrlKey + ',' + |
- ev.metaKey + ',' + |
- ev.altKey; |
- return %s; /* Replace with "return true;" when testing in an html file. */ |
- } |
- function OnScroll(ev) { |
- var result = document.getElementById("scroll"); |
- result.innerText = window.pageYOffset; |
- return true; |
- } |
- </script> |
- <style type="text/css"> |
- p { border-bottom:5000px solid black; } /* enforce vertical scroll bar */ |
- </style> |
- </head> |
- <body |
- onscroll='return OnScroll(event);' |
- onkeydown='return OnKeyEvent(event);'> |
- <div id='keydown' contenteditable='true'> </div> |
- <div id='scroll' contenteditable='true'> </div> |
- <p>p1 |
- <p>p2 |
- </body> |
- </html> |
- ); |
- #undef HTML |
- |
- const int kMaxOutputCharacters = 1024; |
- string16 output; |
- char htmlBuffer[2048]; |
- |
- NSEvent* arrowDownKeyDown = CmdDeadKeyEvent(NSKeyDown, kVK_DownArrow); |
- NSEvent* arrowUpKeyDown = CmdDeadKeyEvent(NSKeyDown, kVK_UpArrow); |
- |
- // First test when javascript does not eat keypresses -- should scroll. |
- sprintf(htmlBuffer, kRawHtml, "true"); |
- view_->set_send_content_state_immediately(true); |
- LoadHTML(htmlBuffer); |
- render_thread_.sink().ClearMessages(); |
- |
- const char* kArrowDownScrollDown = |
- "40,false,false,true,false\n1936\np1\n\np2"; |
- view_->OnSetEditCommandsForNextKeyEvent( |
- EditCommands(1, EditCommand("moveToEndOfDocument", ""))); |
- SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); |
- output = GetMainFrame()->contentAsText(kMaxOutputCharacters); |
- EXPECT_EQ(kArrowDownScrollDown, UTF16ToASCII(output)); |
- |
- const char* kArrowUpScrollUp = |
- "38,false,false,true,false\n0\np1\n\np2"; |
- view_->OnSetEditCommandsForNextKeyEvent( |
- EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); |
- SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); |
- output = GetMainFrame()->contentAsText(kMaxOutputCharacters); |
- EXPECT_EQ(kArrowUpScrollUp, UTF16ToASCII(output)); |
- |
- |
- // Now let javascript eat the key events -- no scrolling should happen |
- sprintf(htmlBuffer, kRawHtml, "false"); |
- view_->set_send_content_state_immediately(true); |
- LoadHTML(htmlBuffer); |
- render_thread_.sink().ClearMessages(); |
- |
- const char* kArrowDownNoScroll = |
- "40,false,false,true,false\np1\n\np2"; |
- view_->OnSetEditCommandsForNextKeyEvent( |
- EditCommands(1, EditCommand("moveToEndOfDocument", ""))); |
- SendNativeKeyEvent(NativeWebKeyboardEvent(arrowDownKeyDown)); |
- output = GetMainFrame()->contentAsText(kMaxOutputCharacters); |
- EXPECT_EQ(kArrowDownNoScroll, UTF16ToASCII(output)); |
- |
- const char* kArrowUpNoScroll = |
- "38,false,false,true,false\np1\n\np2"; |
- view_->OnSetEditCommandsForNextKeyEvent( |
- EditCommands(1, EditCommand("moveToBeginningOfDocument", ""))); |
- SendNativeKeyEvent(NativeWebKeyboardEvent(arrowUpKeyDown)); |
- output = GetMainFrame()->contentAsText(kMaxOutputCharacters); |
- EXPECT_EQ(kArrowUpNoScroll, UTF16ToASCII(output)); |
-} |
- |