OLD | NEW |
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 #import "chrome/browser/ui/cocoa/omnibox/omnibox_popup_cell.h" |
5 #import "chrome/browser/ui/cocoa/omnibox/omnibox_popup_matrix.h" | 6 #import "chrome/browser/ui/cocoa/omnibox/omnibox_popup_matrix.h" |
6 | 7 |
7 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" | 8 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" |
8 #import "ui/events/test/cocoa_test_event_utils.h" | 9 #import "ui/events/test/cocoa_test_event_utils.h" |
9 | 10 |
| 11 @interface OmniboxPopupTableController () |
| 12 // Setup the information used by the NSTableView data source. |
| 13 - (instancetype)initWithArray:(NSMutableArray*)array; |
| 14 @end |
| 15 |
10 namespace { | 16 namespace { |
11 | 17 |
12 NSEvent* MouseEventInRow(NSMatrix* matrix, NSEventType type, NSInteger row) { | 18 NSEvent* MouseEventInRow(OmniboxPopupMatrix* matrix, |
13 NSRect cell_rect = [matrix cellFrameAtRow:row column:0]; | 19 NSEventType type, |
| 20 NSInteger row) { |
| 21 NSRect cell_rect = [matrix rectOfRow:row]; |
14 NSPoint point_in_view = NSMakePoint(NSMidX(cell_rect), NSMidY(cell_rect)); | 22 NSPoint point_in_view = NSMakePoint(NSMidX(cell_rect), NSMidY(cell_rect)); |
15 NSPoint point_in_window = [matrix convertPoint:point_in_view toView:nil]; | 23 NSPoint point_in_window = [matrix convertPoint:point_in_view toView:nil]; |
16 return cocoa_test_event_utils::MouseEventAtPoint( | 24 return cocoa_test_event_utils::MouseEventAtPoint( |
17 point_in_window, type, 0); | 25 point_in_window, type, 0); |
18 } | 26 } |
19 | 27 |
20 class OmniboxPopupMatrixTest : public CocoaTest, | 28 class OmniboxPopupMatrixTest : public CocoaTest, |
21 public OmniboxPopupMatrixObserver { | 29 public OmniboxPopupMatrixObserver { |
22 public: | 30 public: |
23 OmniboxPopupMatrixTest() | 31 OmniboxPopupMatrixTest() |
24 : selected_row_(0), | 32 : selected_row_(0), clicked_row_(0), middle_clicked_row_(0) {} |
25 clicked_row_(0), | |
26 middle_clicked_row_(0) { | |
27 } | |
28 | 33 |
29 void SetUp() override { | 34 void SetUp() override { |
30 CocoaTest::SetUp(); | 35 CocoaTest::SetUp(); |
31 matrix_.reset([[OmniboxPopupMatrix alloc] initWithObserver:this]); | 36 matrix_.reset([[OmniboxPopupMatrix alloc] initWithObserver:this]); |
32 [[test_window() contentView] addSubview:matrix_]; | 37 [[test_window() contentView] addSubview:matrix_]; |
| 38 |
| 39 NSMutableArray* array = [NSMutableArray array]; |
| 40 for (size_t i = 0; i < 3; ++i) |
| 41 [array addObject:[[[OmniboxPopupCellData alloc] init] autorelease]]; |
| 42 |
| 43 matrixController_.reset( |
| 44 [[OmniboxPopupTableController alloc] initWithArray:array]); |
| 45 [matrix_ setController:matrixController_]; |
33 }; | 46 }; |
34 | 47 |
35 void OnMatrixRowSelected(OmniboxPopupMatrix* matrix, size_t row) override { | 48 void OnMatrixRowSelected(OmniboxPopupMatrix* matrix, size_t row) override { |
36 selected_row_ = row; | 49 selected_row_ = row; |
37 [matrix_ selectCellAtRow:row column:0]; | |
38 } | 50 } |
39 | 51 |
40 void OnMatrixRowClicked(OmniboxPopupMatrix* matrix, size_t row) override { | 52 void OnMatrixRowClicked(OmniboxPopupMatrix* matrix, size_t row) override { |
41 clicked_row_ = row; | 53 clicked_row_ = row; |
42 } | 54 } |
43 | 55 |
44 void OnMatrixRowMiddleClicked(OmniboxPopupMatrix* matrix, | 56 void OnMatrixRowMiddleClicked(OmniboxPopupMatrix* matrix, |
45 size_t row) override { | 57 size_t row) override { |
46 middle_clicked_row_ = row; | 58 middle_clicked_row_ = row; |
47 } | 59 } |
48 | 60 |
49 protected: | 61 protected: |
50 base::scoped_nsobject<OmniboxPopupMatrix> matrix_; | 62 base::scoped_nsobject<OmniboxPopupMatrix> matrix_; |
| 63 base::scoped_nsobject<OmniboxPopupTableController> matrixController_; |
51 size_t selected_row_; | 64 size_t selected_row_; |
52 size_t clicked_row_; | 65 size_t clicked_row_; |
53 size_t middle_clicked_row_; | 66 size_t middle_clicked_row_; |
54 | 67 |
55 private: | 68 private: |
56 DISALLOW_COPY_AND_ASSIGN(OmniboxPopupMatrixTest); | 69 DISALLOW_COPY_AND_ASSIGN(OmniboxPopupMatrixTest); |
57 }; | 70 }; |
58 | 71 |
59 TEST_VIEW(OmniboxPopupMatrixTest, matrix_); | 72 TEST_VIEW(OmniboxPopupMatrixTest, matrix_); |
60 | 73 |
61 TEST_F(OmniboxPopupMatrixTest, HighlightedRow) { | 74 TEST_F(OmniboxPopupMatrixTest, HighlightedRow) { |
62 [matrix_ renewRows:3 columns:1]; | |
63 EXPECT_EQ(-1, [matrix_ highlightedRow]); | 75 EXPECT_EQ(-1, [matrix_ highlightedRow]); |
64 | 76 |
65 [matrix_ mouseEntered:MouseEventInRow(matrix_, NSMouseMoved, 0)]; | 77 [matrix_ mouseEntered:MouseEventInRow(matrix_, NSMouseMoved, 0)]; |
66 EXPECT_EQ(0, [matrix_ highlightedRow]); | 78 EXPECT_EQ(0, [matrix_ highlightedRow]); |
67 [matrix_ mouseEntered:MouseEventInRow(matrix_, NSMouseMoved, 2)]; | 79 [matrix_ mouseEntered:MouseEventInRow(matrix_, NSMouseMoved, 2)]; |
68 EXPECT_EQ(2, [matrix_ highlightedRow]); | 80 EXPECT_EQ(2, [matrix_ highlightedRow]); |
69 | 81 |
70 [matrix_ mouseExited:MouseEventInRow(matrix_, NSMouseMoved, 2)]; | 82 [matrix_ mouseExited:MouseEventInRow(matrix_, NSMouseMoved, 2)]; |
71 EXPECT_EQ(-1, [matrix_ highlightedRow]); | 83 EXPECT_EQ(-1, [matrix_ highlightedRow]); |
72 } | 84 } |
73 | 85 |
74 TEST_F(OmniboxPopupMatrixTest, SelectedRow) { | 86 TEST_F(OmniboxPopupMatrixTest, SelectedRow) { |
75 [matrix_ renewRows:3 columns:1]; | |
76 | |
77 [NSApp postEvent:MouseEventInRow(matrix_, NSLeftMouseUp, 2) atStart:YES]; | 87 [NSApp postEvent:MouseEventInRow(matrix_, NSLeftMouseUp, 2) atStart:YES]; |
78 [matrix_ mouseDown:MouseEventInRow(matrix_, NSLeftMouseDown, 2)]; | 88 [matrix_ mouseDown:MouseEventInRow(matrix_, NSLeftMouseDown, 2)]; |
79 | 89 |
80 EXPECT_EQ(2u, selected_row_); | 90 EXPECT_EQ(2u, selected_row_); |
81 EXPECT_EQ(2u, clicked_row_); | 91 EXPECT_EQ(2u, clicked_row_); |
82 EXPECT_EQ(0u, middle_clicked_row_); | 92 EXPECT_EQ(0u, middle_clicked_row_); |
83 } | 93 } |
84 | 94 |
85 } // namespace | 95 } // namespace |
OLD | NEW |