Chromium Code Reviews| 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) { |
|
Mark Mentovai
2013/06/24 21:29:48
These two methods should not return scoped_nsobjec
| |
| 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 |