| Index: ui/views/widget/widget_unittest.cc
|
| diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc
|
| index 5cc3a597fe4ec9e4e1d159a9265537231b1ac8f9..f0640d66d56ffcea7c06b5f634ecf05355a79ce6 100644
|
| --- a/ui/views/widget/widget_unittest.cc
|
| +++ b/ui/views/widget/widget_unittest.cc
|
| @@ -71,13 +71,44 @@ typedef NativeWidgetWin NativeWidgetPlatformForTest;
|
| // A view that always processes all mouse events.
|
| class MouseView : public View {
|
| public:
|
| - MouseView() : View() {
|
| + MouseView()
|
| + : View(),
|
| + entered_(0),
|
| + exited_(0) {
|
| }
|
| virtual ~MouseView() {}
|
|
|
| virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE {
|
| return true;
|
| }
|
| +
|
| + virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE {
|
| + entered_++;
|
| + }
|
| +
|
| + virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE {
|
| + exited_++;
|
| + }
|
| +
|
| + // Return the number of OnMouseEntered calls and reset the counter.
|
| + int EnteredCalls() {
|
| + int i = entered_;
|
| + entered_ = 0;
|
| + return i;
|
| + }
|
| +
|
| + // Return the number of OnMouseExited calls and reset the counter.
|
| + int ExitedCalls() {
|
| + int i = exited_;
|
| + exited_ = 0;
|
| + return i;
|
| + }
|
| +
|
| + private:
|
| + int entered_;
|
| + int exited_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MouseView);
|
| };
|
|
|
| typedef ViewsTestBase WidgetTest;
|
| @@ -251,6 +282,51 @@ TEST_F(WidgetTest, DISABLED_GrabUngrab) {
|
| toplevel->CloseNow();
|
| }
|
|
|
| +// Tests mouse move outside of the window into the "resize controller" and back
|
| +// will still generate an OnMouseEntered and OnMouseExited event..
|
| +TEST_F(WidgetTest, CheckResizeControllerEvents) {
|
| + Widget* toplevel = CreateTopLevelPlatformWidget();
|
| +
|
| + toplevel->SetBounds(gfx::Rect(0, 0, 100, 100));
|
| +
|
| + MouseView* view = new MouseView();
|
| + view->SetBounds(90, 90, 10, 10);
|
| + toplevel->GetRootView()->AddChildView(view);
|
| +
|
| + toplevel->Show();
|
| + RunPendingMessages();
|
| +
|
| + // Move to an outside position.
|
| + gfx::Point p1(200, 200);
|
| + ui::MouseEvent moved_out(ui::ET_MOUSE_MOVED, p1, p1, ui::EF_NONE);
|
| + toplevel->OnMouseEvent(moved_out);
|
| + EXPECT_EQ(0, view->EnteredCalls());
|
| + EXPECT_EQ(0, view->ExitedCalls());
|
| +
|
| + // Move onto the active view.
|
| + gfx::Point p2(95, 95);
|
| + ui::MouseEvent moved_over(ui::ET_MOUSE_MOVED, p2, p2, ui::EF_NONE);
|
| + toplevel->OnMouseEvent(moved_over);
|
| + EXPECT_EQ(1, view->EnteredCalls());
|
| + EXPECT_EQ(0, view->ExitedCalls());
|
| +
|
| + // Move onto the outer resizing border.
|
| + gfx::Point p3(102, 95);
|
| + ui::MouseEvent moved_resizer(ui::ET_MOUSE_MOVED, p3, p3, ui::EF_NONE);
|
| + toplevel->OnMouseEvent(moved_resizer);
|
| + EXPECT_EQ(0, view->EnteredCalls());
|
| + EXPECT_EQ(1, view->ExitedCalls());
|
| +
|
| + // Move onto the view again.
|
| + toplevel->OnMouseEvent(moved_over);
|
| + EXPECT_EQ(1, view->EnteredCalls());
|
| + EXPECT_EQ(0, view->ExitedCalls());
|
| +
|
| + RunPendingMessages();
|
| +
|
| + toplevel->CloseNow();
|
| +}
|
| +
|
| // Test if a focus manager and an inputmethod work without CHECK failure
|
| // when window activation changes.
|
| TEST_F(WidgetTest, ChangeActivation) {
|
|
|