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

Side by Side Diff: ui/views/widget/widget_interactive_uitest.cc

Issue 334933008: Enable setting capture to a non-toplevel widget when the widget is activated on Linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/path_service.h" 8 #include "base/path_service.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 986 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 // Send a mouse event to the RootWindow associated with |widget1|. Even though 997 // Send a mouse event to the RootWindow associated with |widget1|. Even though
998 // |widget2| has capture, |widget1| should still get the event. 998 // |widget2| has capture, |widget1| should still get the event.
999 ui::MouseEvent mouse_event(ui::ET_MOUSE_EXITED, gfx::Point(), gfx::Point(), 999 ui::MouseEvent mouse_event(ui::ET_MOUSE_EXITED, gfx::Point(), gfx::Point(),
1000 ui::EF_NONE, ui::EF_NONE); 1000 ui::EF_NONE, ui::EF_NONE);
1001 ui::EventDispatchDetails details = widget1.GetNativeWindow()-> 1001 ui::EventDispatchDetails details = widget1.GetNativeWindow()->
1002 GetHost()->event_processor()->OnEventFromSource(&mouse_event); 1002 GetHost()->event_processor()->OnEventFromSource(&mouse_event);
1003 ASSERT_FALSE(details.dispatcher_destroyed); 1003 ASSERT_FALSE(details.dispatcher_destroyed);
1004 EXPECT_TRUE(widget1.GetAndClearGotMouseEvent()); 1004 EXPECT_TRUE(widget1.GetAndClearGotMouseEvent());
1005 EXPECT_FALSE(widget2.GetAndClearGotMouseEvent()); 1005 EXPECT_FALSE(widget2.GetAndClearGotMouseEvent());
1006 } 1006 }
1007
1008 // Widget observer which grabs capture when the widget is activated.
1009 class CaptureOnActivationObserver : public WidgetObserver {
1010 public:
1011 CaptureOnActivationObserver() {
1012 }
1013 virtual ~CaptureOnActivationObserver() {
1014 }
1015
1016 virtual void OnWidgetActivationChanged(Widget* widget, bool active) OVERRIDE {
sadrul 2014/07/14 16:58:00 // WidgetObserver:
1017 if (active)
1018 widget->SetCapture(NULL);
1019 }
1020
1021 private:
1022 DISALLOW_COPY_AND_ASSIGN(CaptureOnActivationObserver);
1023 };
1024
1025 // Test that setting capture on widget activation of a non-toplevel widget
1026 // (e.g. a bubble on Linux) succeeds.
1027 TEST_F(WidgetCaptureTest, SetCaptureToNonToplevel) {
1028 Widget toplevel;
1029 Widget::InitParams toplevel_params =
1030 CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
1031 toplevel_params.native_widget = new DesktopNativeWidgetAura(&toplevel);
1032 toplevel_params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
1033 toplevel.Init(toplevel_params);
1034 toplevel.Show();
1035
1036 Widget* child = new Widget;
1037 Widget::InitParams child_params =
1038 CreateParams(Widget::InitParams::TYPE_WINDOW_FRAMELESS);
1039 child_params.parent = toplevel.GetNativeView();
1040 child_params.context = toplevel.GetNativeView();
1041 child->Init(child_params);
1042
1043 CaptureOnActivationObserver observer;
1044 child->AddObserver(&observer);
1045 child->Show();
1046
1047 EXPECT_TRUE(child->HasCapture());
1048 }
1007 #endif 1049 #endif
1008 1050
1009 } // namespace test 1051 } // namespace test
1010 } // namespace views 1052 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698