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

Unified Diff: ui/views/widget/widget_unittest.cc

Issue 881163002: Fix a crash which occurs due to a CHECK firing in the HWNDMessageHandler::OnKeyEvent code path on W… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months 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
Index: ui/views/widget/widget_unittest.cc
diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
index 5556db5367fe9ce3f0effc9fa36e2b097143569a..4ad12053519e80f838f7d3fbf5347250f51b5dca 100644
--- a/ui/views/widget/widget_unittest.cc
+++ b/ui/views/widget/widget_unittest.cc
@@ -34,6 +34,10 @@
#include "ui/views/window/native_frame_view.h"
#if defined(OS_WIN)
+#include "ui/aura/window.h"
+#include "ui/aura/window_tree_host.h"
+#include "ui/base/view_prop.h"
+#include "ui/base/win/window_event_target.h"
#include "ui/views/win/hwnd_util.h"
#endif
@@ -3384,5 +3388,32 @@ TEST_F(WidgetTest, NonClientWindowValidAfterInit) {
widget->CloseNow();
}
+#if defined(OS_WIN)
+// This test validates that sending WM_CHAR/WM_SYSCHAR/WM_SYSDEADCHAR
+// messages via the WindowEventTarget interface implemented by the
+// HWNDMessageHandler class does not cause a crash due to an unprocessed
+// event
+TEST_F(WidgetTest, CharMessagesAsKeyboardMessagesDoesNotCrash) {
+ Widget widget;
+ Widget::InitParams params =
+ CreateParams(Widget::InitParams::TYPE_WINDOW);
+ params.native_widget = new PlatformDesktopNativeWidget(&widget);
+ params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
+ widget.Init(params);
+ widget.Show();
+
+ ui::WindowEventTarget* target =
+ reinterpret_cast<ui::WindowEventTarget*>(ui::ViewProp::GetValue(
+ widget.GetNativeWindow()->GetHost()->GetAcceleratedWidget(),
+ ui::WindowEventTarget::kWin32InputEventTarget));
+ EXPECT_NE(nullptr, target);
+ bool handled = false;
+ target->HandleKeyboardMessage(WM_CHAR, 0, 0, &handled);
+ target->HandleKeyboardMessage(WM_SYSCHAR, 0, 0, &handled);
+ target->HandleKeyboardMessage(WM_SYSDEADCHAR, 0, 0, &handled);
+ widget.CloseNow();
+}
+#endif
+
} // namespace test
} // namespace views

Powered by Google App Engine
This is Rietveld 408576698