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 #include "chrome/browser/ui/cocoa/autofill/simple_grid_layout.h" | 5 #include "chrome/browser/ui/cocoa/autofill/simple_grid_layout.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/scoped_nsobject.h" | 8 #include "base/mac/scoped_nsobject.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
11 namespace { | 11 namespace { |
12 | 12 |
13 // Layout objects as multiple columns in a single row. | 13 // Layout objects as multiple columns in a single row. |
14 class ColumnLayout : public SimpleGridLayout { | 14 class ColumnLayout : public SimpleGridLayout { |
15 public: | 15 public: |
16 ColumnLayout(NSView* host) : SimpleGridLayout(host) { AddRow(); } | 16 ColumnLayout(NSView* host) : SimpleGridLayout(host) { AddRow(); } |
17 ~ColumnLayout() {} | 17 ~ColumnLayout() {} |
18 }; | 18 }; |
19 | 19 |
20 class LayoutTest : public testing::Test { | 20 class LayoutTest : public testing::Test { |
21 public: | 21 public: |
22 scoped_nsobject<NSView> CreateViewWithWidth(float width) { | 22 base::scoped_nsobject<NSView> CreateViewWithWidth(float width) { |
23 NSRect frame = NSMakeRect(0, 0, width, 0); | 23 NSRect frame = NSMakeRect(0, 0, width, 0); |
24 scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:frame]); | 24 base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:frame]); |
25 return view; | 25 return view; |
26 } | 26 } |
27 | 27 |
28 scoped_nsobject<NSView> CreateViewWithHeight(float height) { | 28 base::scoped_nsobject<NSView> CreateViewWithHeight(float height) { |
29 NSRect frame = NSMakeRect(0, 0, 0, height); | 29 NSRect frame = NSMakeRect(0, 0, 0, height); |
30 scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:frame]); | 30 base::scoped_nsobject<NSView> view([[NSView alloc] initWithFrame:frame]); |
31 return view; | 31 return view; |
32 } | 32 } |
33 }; | 33 }; |
34 | 34 |
35 TEST_F(LayoutTest, GridLayoutAddGetColumnSet) { | 35 TEST_F(LayoutTest, GridLayoutAddGetColumnSet) { |
36 SimpleGridLayout layout(NULL); | 36 SimpleGridLayout layout(NULL); |
37 | 37 |
38 // Non-existing id's are not found. | 38 // Non-existing id's are not found. |
39 EXPECT_EQ(0L, layout.GetColumnSet(1)); | 39 EXPECT_EQ(0L, layout.GetColumnSet(1)); |
40 | 40 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 EXPECT_TRUE(new_column_set != NULL); | 100 EXPECT_TRUE(new_column_set != NULL); |
101 EXPECT_EQ(new_column_set, layout.GetLastValidColumnSet()); | 101 EXPECT_EQ(new_column_set, layout.GetLastValidColumnSet()); |
102 } | 102 } |
103 | 103 |
104 TEST_F(LayoutTest, AddPaddingRow) { | 104 TEST_F(LayoutTest, AddPaddingRow) { |
105 SimpleGridLayout layout(NULL); | 105 SimpleGridLayout layout(NULL); |
106 | 106 |
107 ColumnSet* cs; | 107 ColumnSet* cs; |
108 cs = layout.AddRow(); | 108 cs = layout.AddRow(); |
109 cs->AddColumn(1.0f); | 109 cs->AddColumn(1.0f); |
110 scoped_nsobject<NSView> view1 = CreateViewWithHeight(30.0f); | 110 base::scoped_nsobject<NSView> view1 = CreateViewWithHeight(30.0f); |
111 layout.AddView(view1); | 111 layout.AddView(view1); |
112 | 112 |
113 layout.AddPaddingRow(20); | 113 layout.AddPaddingRow(20); |
114 | 114 |
115 cs = layout.AddRow(); | 115 cs = layout.AddRow(); |
116 cs->AddColumn(1.0f); | 116 cs->AddColumn(1.0f); |
117 EXPECT_EQ(3, layout.num_rows()); | 117 EXPECT_EQ(3, layout.num_rows()); |
118 scoped_nsobject<NSView> view2 = CreateViewWithHeight(10.0f); | 118 base::scoped_nsobject<NSView> view2 = CreateViewWithHeight(10.0f); |
119 layout.AddView(view2); | 119 layout.AddView(view2); |
120 | 120 |
121 layout.SizeRowsAndColumns(0.0f); | 121 layout.SizeRowsAndColumns(0.0f); |
122 EXPECT_FLOAT_EQ(30.0f, layout.GetRowHeight(0)); | 122 EXPECT_FLOAT_EQ(30.0f, layout.GetRowHeight(0)); |
123 EXPECT_FLOAT_EQ(20.0f, layout.GetRowHeight(1)); | 123 EXPECT_FLOAT_EQ(20.0f, layout.GetRowHeight(1)); |
124 EXPECT_FLOAT_EQ(10.0f, layout.GetRowHeight(2)); | 124 EXPECT_FLOAT_EQ(10.0f, layout.GetRowHeight(2)); |
125 } | 125 } |
126 | 126 |
127 TEST_F(LayoutTest, RowsAccomodateHeightOfAllElements) { | 127 TEST_F(LayoutTest, RowsAccomodateHeightOfAllElements) { |
128 SimpleGridLayout layout(NULL); | 128 SimpleGridLayout layout(NULL); |
129 | 129 |
130 layout.AddRow(); | 130 layout.AddRow(); |
131 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 131 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
132 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 132 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
133 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 133 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
134 | 134 |
135 scoped_nsobject<NSView> view1 = CreateViewWithHeight(37.0f); | 135 base::scoped_nsobject<NSView> view1 = CreateViewWithHeight(37.0f); |
136 layout.AddView(view1); | 136 layout.AddView(view1); |
137 layout.SizeRowsAndColumns(0.0f); | 137 layout.SizeRowsAndColumns(0.0f); |
138 EXPECT_FLOAT_EQ(37.0f, layout.GetRowHeight(0)); | 138 EXPECT_FLOAT_EQ(37.0f, layout.GetRowHeight(0)); |
139 | 139 |
140 scoped_nsobject<NSView> view2 = CreateViewWithHeight(26.0f); | 140 base::scoped_nsobject<NSView> view2 = CreateViewWithHeight(26.0f); |
141 layout.AddView(view2); | 141 layout.AddView(view2); |
142 layout.SizeRowsAndColumns(0.0f); | 142 layout.SizeRowsAndColumns(0.0f); |
143 EXPECT_FLOAT_EQ(37.0f, layout.GetRowHeight(0)); | 143 EXPECT_FLOAT_EQ(37.0f, layout.GetRowHeight(0)); |
144 | 144 |
145 scoped_nsobject<NSView> view3 = CreateViewWithHeight(42.0f); | 145 base::scoped_nsobject<NSView> view3 = CreateViewWithHeight(42.0f); |
146 layout.AddView(view3); | 146 layout.AddView(view3); |
147 layout.SizeRowsAndColumns(0.0f); | 147 layout.SizeRowsAndColumns(0.0f); |
148 EXPECT_FLOAT_EQ(42.0f, layout.GetRowHeight(0)); | 148 EXPECT_FLOAT_EQ(42.0f, layout.GetRowHeight(0)); |
149 } | 149 } |
150 | 150 |
151 TEST_F(LayoutTest, SizeRowsAdjustsRowLocations) { | 151 TEST_F(LayoutTest, SizeRowsAdjustsRowLocations) { |
152 SimpleGridLayout layout(NULL); | 152 SimpleGridLayout layout(NULL); |
153 | 153 |
154 layout.AddRow(); | 154 layout.AddRow(); |
155 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 155 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
156 scoped_nsobject<NSView> view1 = CreateViewWithHeight(30.0f); | 156 base::scoped_nsobject<NSView> view1 = CreateViewWithHeight(30.0f); |
157 layout.AddView(view1); | 157 layout.AddView(view1); |
158 | 158 |
159 layout.AddRow(); | 159 layout.AddRow(); |
160 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 160 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
161 scoped_nsobject<NSView> view2 = CreateViewWithHeight(40.0f); | 161 base::scoped_nsobject<NSView> view2 = CreateViewWithHeight(40.0f); |
162 layout.AddView(view2); | 162 layout.AddView(view2); |
163 | 163 |
164 layout.SizeRowsAndColumns(0.0f); | 164 layout.SizeRowsAndColumns(0.0f); |
165 EXPECT_FLOAT_EQ(0.0f, layout.GetRowLocation(0)); | 165 EXPECT_FLOAT_EQ(0.0f, layout.GetRowLocation(0)); |
166 EXPECT_FLOAT_EQ(30.0f, layout.GetRowLocation(1)); | 166 EXPECT_FLOAT_EQ(30.0f, layout.GetRowLocation(1)); |
167 } | 167 } |
168 | 168 |
169 TEST_F(LayoutTest, SimpleGridLayoutAdjustsViews) { | 169 TEST_F(LayoutTest, SimpleGridLayoutAdjustsViews) { |
170 SimpleGridLayout layout(NULL); | 170 SimpleGridLayout layout(NULL); |
171 | 171 |
172 layout.AddRow(); | 172 layout.AddRow(); |
173 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 173 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
174 layout.GetLastValidColumnSet()->AddPaddingColumn(30); | 174 layout.GetLastValidColumnSet()->AddPaddingColumn(30); |
175 layout.GetLastValidColumnSet()->AddColumn(0.4f); | 175 layout.GetLastValidColumnSet()->AddColumn(0.4f); |
176 | 176 |
177 scoped_nsobject<NSView> view1 = CreateViewWithHeight(22.0f); | 177 base::scoped_nsobject<NSView> view1 = CreateViewWithHeight(22.0f); |
178 scoped_nsobject<NSView> view2 = CreateViewWithHeight(20.0f); | 178 base::scoped_nsobject<NSView> view2 = CreateViewWithHeight(20.0f); |
179 layout.AddView(view1); | 179 layout.AddView(view1); |
180 layout.AddView(view2); | 180 layout.AddView(view2); |
181 | 181 |
182 layout.AddRow(); | 182 layout.AddRow(); |
183 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 183 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
184 scoped_nsobject<NSView> view3 = CreateViewWithHeight(18.0f); | 184 base::scoped_nsobject<NSView> view3 = CreateViewWithHeight(18.0f); |
185 layout.AddView(view3); | 185 layout.AddView(view3); |
186 | 186 |
187 scoped_nsobject<NSView> host_view = CreateViewWithWidth(150.0f); | 187 base::scoped_nsobject<NSView> host_view = CreateViewWithWidth(150.0f); |
188 layout.Layout(host_view); | 188 layout.Layout(host_view); |
189 | 189 |
190 EXPECT_FLOAT_EQ(72.0f, NSWidth([view1 frame])); | 190 EXPECT_FLOAT_EQ(72.0f, NSWidth([view1 frame])); |
191 EXPECT_FLOAT_EQ(22.0f, NSHeight([view1 frame])); | 191 EXPECT_FLOAT_EQ(22.0f, NSHeight([view1 frame])); |
192 EXPECT_FLOAT_EQ(0.0f, NSMinX([view1 frame])); | 192 EXPECT_FLOAT_EQ(0.0f, NSMinX([view1 frame])); |
193 EXPECT_FLOAT_EQ(0.0f, NSMinY([view1 frame])); | 193 EXPECT_FLOAT_EQ(0.0f, NSMinY([view1 frame])); |
194 | 194 |
195 EXPECT_FLOAT_EQ(48.0f, NSWidth([view2 frame])); | 195 EXPECT_FLOAT_EQ(48.0f, NSWidth([view2 frame])); |
196 EXPECT_FLOAT_EQ(22.0f, NSHeight([view2 frame])); | 196 EXPECT_FLOAT_EQ(22.0f, NSHeight([view2 frame])); |
197 EXPECT_FLOAT_EQ(102.0f, NSMinX([view2 frame])); | 197 EXPECT_FLOAT_EQ(102.0f, NSMinX([view2 frame])); |
198 EXPECT_FLOAT_EQ(0.0f, NSMinY([view2 frame])); | 198 EXPECT_FLOAT_EQ(0.0f, NSMinY([view2 frame])); |
199 | 199 |
200 EXPECT_FLOAT_EQ(150.0f, NSWidth([view3 frame])); | 200 EXPECT_FLOAT_EQ(150.0f, NSWidth([view3 frame])); |
201 EXPECT_FLOAT_EQ(18.0f, NSHeight([view3 frame])); | 201 EXPECT_FLOAT_EQ(18.0f, NSHeight([view3 frame])); |
202 EXPECT_FLOAT_EQ(0.0f, NSMinX([view3 frame])); | 202 EXPECT_FLOAT_EQ(0.0f, NSMinX([view3 frame])); |
203 EXPECT_FLOAT_EQ(22.0f, NSMinY([view3 frame])); | 203 EXPECT_FLOAT_EQ(22.0f, NSMinY([view3 frame])); |
204 } | 204 } |
205 | 205 |
206 TEST_F(LayoutTest, PreferredHeightForEmptyLayout) { | 206 TEST_F(LayoutTest, PreferredHeightForEmptyLayout) { |
207 SimpleGridLayout layout(NULL); | 207 SimpleGridLayout layout(NULL); |
208 EXPECT_FLOAT_EQ(0.0f, layout.GetPreferredHeightForWidth(100.0)); | 208 EXPECT_FLOAT_EQ(0.0f, layout.GetPreferredHeightForWidth(100.0)); |
209 } | 209 } |
210 | 210 |
211 TEST_F(LayoutTest, SimpleGridLayoutHeightForWidth) | 211 TEST_F(LayoutTest, SimpleGridLayoutHeightForWidth) |
212 { | 212 { |
213 SimpleGridLayout layout(NULL); | 213 SimpleGridLayout layout(NULL); |
214 layout.AddRow(); | 214 layout.AddRow(); |
215 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 215 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
216 | 216 |
217 scoped_nsobject<NSView> view1 = CreateViewWithHeight(22.0f); | 217 base::scoped_nsobject<NSView> view1 = CreateViewWithHeight(22.0f); |
218 layout.AddView(view1); | 218 layout.AddView(view1); |
219 EXPECT_FLOAT_EQ(22.0f, layout.GetPreferredHeightForWidth(100.0)); | 219 EXPECT_FLOAT_EQ(22.0f, layout.GetPreferredHeightForWidth(100.0)); |
220 | 220 |
221 layout.AddPaddingRow(12); | 221 layout.AddPaddingRow(12); |
222 EXPECT_FLOAT_EQ(34.0f, layout.GetPreferredHeightForWidth(100.0)); | 222 EXPECT_FLOAT_EQ(34.0f, layout.GetPreferredHeightForWidth(100.0)); |
223 | 223 |
224 layout.AddRow(); | 224 layout.AddRow(); |
225 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 225 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
226 scoped_nsobject<NSView> view2 = CreateViewWithHeight(13.0f); | 226 base::scoped_nsobject<NSView> view2 = CreateViewWithHeight(13.0f); |
227 layout.AddView(view2); | 227 layout.AddView(view2); |
228 EXPECT_FLOAT_EQ(47.0f, layout.GetPreferredHeightForWidth(100.0)); | 228 EXPECT_FLOAT_EQ(47.0f, layout.GetPreferredHeightForWidth(100.0)); |
229 } | 229 } |
230 | 230 |
231 TEST_F(LayoutTest, SkipColumns) { | 231 TEST_F(LayoutTest, SkipColumns) { |
232 ColumnLayout layout(NULL); | 232 ColumnLayout layout(NULL); |
233 | 233 |
234 ASSERT_TRUE(layout.GetLastValidColumnSet() != NULL); | 234 ASSERT_TRUE(layout.GetLastValidColumnSet() != NULL); |
235 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 235 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
236 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 236 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 | 301 |
302 TEST_F(LayoutTest, AddViewSkipsPaddingColumns) { | 302 TEST_F(LayoutTest, AddViewSkipsPaddingColumns) { |
303 ColumnLayout layout(NULL); | 303 ColumnLayout layout(NULL); |
304 | 304 |
305 ASSERT_TRUE(layout.GetLastValidColumnSet() != NULL); | 305 ASSERT_TRUE(layout.GetLastValidColumnSet() != NULL); |
306 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 306 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
307 layout.GetLastValidColumnSet()->AddPaddingColumn(30); | 307 layout.GetLastValidColumnSet()->AddPaddingColumn(30); |
308 layout.GetLastValidColumnSet()->AddColumn(0.4f); | 308 layout.GetLastValidColumnSet()->AddColumn(0.4f); |
309 | 309 |
310 EXPECT_EQ(0, layout.next_column()); | 310 EXPECT_EQ(0, layout.next_column()); |
311 scoped_nsobject<NSView> view1 = CreateViewWithWidth(37.0f); | 311 base::scoped_nsobject<NSView> view1 = CreateViewWithWidth(37.0f); |
312 layout.AddView(view1); | 312 layout.AddView(view1); |
313 EXPECT_EQ(2, layout.next_column()); | 313 EXPECT_EQ(2, layout.next_column()); |
314 } | 314 } |
315 | 315 |
316 TEST_F(LayoutTest, ColumnLayoutAdjustsViews) { | 316 TEST_F(LayoutTest, ColumnLayoutAdjustsViews) { |
317 ColumnLayout layout(NULL); | 317 ColumnLayout layout(NULL); |
318 | 318 |
319 ASSERT_TRUE(layout.GetLastValidColumnSet() != NULL); | 319 ASSERT_TRUE(layout.GetLastValidColumnSet() != NULL); |
320 layout.GetLastValidColumnSet()->AddColumn(0.6f); | 320 layout.GetLastValidColumnSet()->AddColumn(0.6f); |
321 layout.GetLastValidColumnSet()->AddPaddingColumn(30); | 321 layout.GetLastValidColumnSet()->AddPaddingColumn(30); |
322 layout.GetLastValidColumnSet()->AddColumn(0.4f); | 322 layout.GetLastValidColumnSet()->AddColumn(0.4f); |
323 | 323 |
324 scoped_nsobject<NSView> view1 = CreateViewWithWidth(37.0f); | 324 base::scoped_nsobject<NSView> view1 = CreateViewWithWidth(37.0f); |
325 scoped_nsobject<NSView> view2 = CreateViewWithWidth(42.0f); | 325 base::scoped_nsobject<NSView> view2 = CreateViewWithWidth(42.0f); |
326 layout.AddView(view1); | 326 layout.AddView(view1); |
327 layout.AddView(view2); | 327 layout.AddView(view2); |
328 | 328 |
329 scoped_nsobject<NSView> host_view = CreateViewWithWidth(150.0f); | 329 base::scoped_nsobject<NSView> host_view = CreateViewWithWidth(150.0f); |
330 layout.Layout(host_view); | 330 layout.Layout(host_view); |
331 | 331 |
332 EXPECT_FLOAT_EQ(72.0f, NSWidth([view1 frame])); | 332 EXPECT_FLOAT_EQ(72.0f, NSWidth([view1 frame])); |
333 EXPECT_FLOAT_EQ(48.0f, NSWidth([view2 frame])); | 333 EXPECT_FLOAT_EQ(48.0f, NSWidth([view2 frame])); |
334 } | 334 } |
335 | 335 |
336 TEST_F(LayoutTest, ColumnSetAddPadding) { | 336 TEST_F(LayoutTest, ColumnSetAddPadding) { |
337 ColumnSet columns(0); | 337 ColumnSet columns(0); |
338 | 338 |
339 columns.AddPaddingColumn(20); | 339 columns.AddPaddingColumn(20); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 EXPECT_FLOAT_EQ(20.0f, columns.GetColumnWidth(1)); | 388 EXPECT_FLOAT_EQ(20.0f, columns.GetColumnWidth(1)); |
389 EXPECT_FLOAT_EQ(32.0f, columns.GetColumnWidth(2)); | 389 EXPECT_FLOAT_EQ(32.0f, columns.GetColumnWidth(2)); |
390 | 390 |
391 columns.CalculateSize(200.0f); | 391 columns.CalculateSize(200.0f); |
392 EXPECT_FLOAT_EQ(108.0f, columns.GetColumnWidth(0)); | 392 EXPECT_FLOAT_EQ(108.0f, columns.GetColumnWidth(0)); |
393 EXPECT_FLOAT_EQ(20.0f, columns.GetColumnWidth(1)); | 393 EXPECT_FLOAT_EQ(20.0f, columns.GetColumnWidth(1)); |
394 EXPECT_FLOAT_EQ(72.0f, columns.GetColumnWidth(2)); | 394 EXPECT_FLOAT_EQ(72.0f, columns.GetColumnWidth(2)); |
395 } | 395 } |
396 | 396 |
397 } // namespace | 397 } // namespace |
OLD | NEW |