Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(643)

Unified Diff: content/browser/renderer_host/render_widget_host_view_mac_unittest.mm

Issue 1458203003: MacKeyboard: Don't generate keypress for non-printable char (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and use new ShutdownAndDestroyWidget() method Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_mac.mm ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
diff --git a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
index fabae00266bcfc367d5ef0016299e17a3263e3af..db7b5e7ed7ddb538de63da5c4c59b7911d2ea33f 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac_unittest.mm
@@ -93,6 +93,22 @@ namespace content {
namespace {
+std::string GetInputMessageTypes(MockRenderProcessHost* process) {
+ std::string result;
+ for (size_t i = 0; i < process->sink().message_count(); ++i) {
+ const IPC::Message* message = process->sink().GetMessageAt(i);
+ EXPECT_EQ(InputMsg_HandleInputEvent::ID, message->type());
+ InputMsg_HandleInputEvent::Param params;
+ EXPECT_TRUE(InputMsg_HandleInputEvent::Read(message, &params));
+ const blink::WebInputEvent* event = base::get<0>(params);
+ if (i != 0)
+ result += " ";
+ result += WebInputEventTraits::GetName(event->type);
+ }
+ process->sink().ClearMessages();
+ return result;
+}
+
id MockGestureEvent(NSEventType type, double magnification) {
id event = [OCMockObject mockForClass:[NSEvent class]];
NSPoint locationInWindow = NSMakePoint(0, 0);
@@ -331,6 +347,52 @@ TEST_F(RenderWidgetHostViewMacTest, AcceleratorDestroy) {
observer.Wait();
}
+// Test that NSEvent of private use character won't generate keypress event
+// http://crbug.com/459089
+TEST_F(RenderWidgetHostViewMacTest, FilterNonPrintableCharacter) {
+ TestBrowserContext browser_context;
+ MockRenderProcessHost* process_host =
+ new MockRenderProcessHost(&browser_context);
+ process_host->Init();
+ MockRenderWidgetHostDelegate delegate;
+ int32 routing_id = process_host->GetNextRoutingID();
+ MockRenderWidgetHostImpl* host =
+ new MockRenderWidgetHostImpl(&delegate, process_host, routing_id);
+ RenderWidgetHostViewMac* view = new RenderWidgetHostViewMac(host, false);
+
+ // Simulate ctrl+F12, will produce a private use character but shouldn't
+ // fire keypress event
+ process_host->sink().ClearMessages();
+ EXPECT_EQ(0U, process_host->sink().message_count());
+ [view->cocoa_view() keyEvent:
+ cocoa_test_event_utils::KeyEventWithKeyCode(
+ 0x7B, 0xF70F, NSKeyDown, NSControlKeyMask)];
+ EXPECT_EQ(1U, process_host->sink().message_count());
+ EXPECT_EQ("RawKeyDown", GetInputMessageTypes(process_host));
+
+ // Simulate ctrl+delete, will produce a private use character but shouldn't
+ // fire keypress event
+ process_host->sink().ClearMessages();
+ EXPECT_EQ(0U, process_host->sink().message_count());
+ [view->cocoa_view() keyEvent:
+ cocoa_test_event_utils::KeyEventWithKeyCode(
+ 0x2E, 0xF728, NSKeyDown, NSControlKeyMask)];
+ EXPECT_EQ(1U, process_host->sink().message_count());
+ EXPECT_EQ("RawKeyDown", GetInputMessageTypes(process_host));
+
+ // Simulate a printable char, should generate keypress event
+ process_host->sink().ClearMessages();
+ EXPECT_EQ(0U, process_host->sink().message_count());
+ [view->cocoa_view() keyEvent:
+ cocoa_test_event_utils::KeyEventWithKeyCode(
+ 0x58, 'x', NSKeyDown, NSControlKeyMask)];
+ EXPECT_EQ(2U, process_host->sink().message_count());
+ EXPECT_EQ("RawKeyDown Char", GetInputMessageTypes(process_host));
+
+ // Clean up.
+ host->ShutdownAndDestroyWidget(true);
+}
+
TEST_F(RenderWidgetHostViewMacTest, GetFirstRectForCharacterRangeCaretCase) {
const base::string16 kDummyString = base::UTF8ToUTF16("hogehoge");
const size_t kDummyOffset = 0;
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_mac.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698