| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "ui/views/border.h" | 5 #include "ui/views/border.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 view_.reset(); | 143 view_.reset(); |
| 144 } | 144 } |
| 145 | 145 |
| 146 protected: | 146 protected: |
| 147 std::unique_ptr<views::View> view_; | 147 std::unique_ptr<views::View> view_; |
| 148 sk_sp<MockCanvas> sk_canvas_; | 148 sk_sp<MockCanvas> sk_canvas_; |
| 149 std::unique_ptr<gfx::Canvas> canvas_; | 149 std::unique_ptr<gfx::Canvas> canvas_; |
| 150 }; | 150 }; |
| 151 | 151 |
| 152 TEST_F(BorderTest, NullBorder) { | 152 TEST_F(BorderTest, NullBorder) { |
| 153 std::unique_ptr<Border> border(Border::NullBorder()); | 153 std::unique_ptr<Border> border(NullBorder()); |
| 154 EXPECT_FALSE(border); | 154 EXPECT_FALSE(border); |
| 155 } | 155 } |
| 156 | 156 |
| 157 TEST_F(BorderTest, SolidBorder) { | 157 TEST_F(BorderTest, SolidBorder) { |
| 158 std::unique_ptr<Border> border(Border::CreateSolidBorder(3, SK_ColorBLUE)); | 158 std::unique_ptr<Border> border(CreateSolidBorder(3, SK_ColorBLUE)); |
| 159 EXPECT_EQ(gfx::Size(6, 6), border->GetMinimumSize()); | 159 EXPECT_EQ(gfx::Size(6, 6), border->GetMinimumSize()); |
| 160 EXPECT_EQ(gfx::Insets(3, 3, 3, 3), border->GetInsets()); | 160 EXPECT_EQ(gfx::Insets(3, 3, 3, 3), border->GetInsets()); |
| 161 border->Paint(*view_, canvas_.get()); | 161 border->Paint(*view_, canvas_.get()); |
| 162 | 162 |
| 163 std::vector<MockCanvas::DrawRectCall> draw_rect_calls = | 163 std::vector<MockCanvas::DrawRectCall> draw_rect_calls = |
| 164 sk_canvas_->draw_rect_calls(); | 164 sk_canvas_->draw_rect_calls(); |
| 165 ASSERT_EQ(4u, draw_rect_calls.size()); | 165 ASSERT_EQ(4u, draw_rect_calls.size()); |
| 166 EXPECT_EQ(SkRect::MakeLTRB(0, 0, 100, 3), draw_rect_calls[0].rect); | 166 EXPECT_EQ(SkRect::MakeLTRB(0, 0, 100, 3), draw_rect_calls[0].rect); |
| 167 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[0].paint.getColor()); | 167 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[0].paint.getColor()); |
| 168 EXPECT_EQ(SkRect::MakeLTRB(0, 3, 3, 47), draw_rect_calls[1].rect); | 168 EXPECT_EQ(SkRect::MakeLTRB(0, 3, 3, 47), draw_rect_calls[1].rect); |
| 169 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[1].paint.getColor()); | 169 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[1].paint.getColor()); |
| 170 EXPECT_EQ(SkRect::MakeLTRB(0, 47, 100, 50), draw_rect_calls[2].rect); | 170 EXPECT_EQ(SkRect::MakeLTRB(0, 47, 100, 50), draw_rect_calls[2].rect); |
| 171 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[2].paint.getColor()); | 171 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[2].paint.getColor()); |
| 172 EXPECT_EQ(SkRect::MakeLTRB(97, 3, 100, 47), draw_rect_calls[3].rect); | 172 EXPECT_EQ(SkRect::MakeLTRB(97, 3, 100, 47), draw_rect_calls[3].rect); |
| 173 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[3].paint.getColor()); | 173 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[3].paint.getColor()); |
| 174 | 174 |
| 175 EXPECT_TRUE(sk_canvas_->draw_rrect_calls().empty()); | 175 EXPECT_TRUE(sk_canvas_->draw_rrect_calls().empty()); |
| 176 } | 176 } |
| 177 | 177 |
| 178 TEST_F(BorderTest, RoundedRectBorder) { | 178 TEST_F(BorderTest, RoundedRectBorder) { |
| 179 std::unique_ptr<Border> border( | 179 std::unique_ptr<Border> border(CreateRoundedRectBorder(3, 4, SK_ColorBLUE)); |
| 180 Border::CreateRoundedRectBorder(3, 4, SK_ColorBLUE)); | |
| 181 EXPECT_EQ(gfx::Size(6, 6), border->GetMinimumSize()); | 180 EXPECT_EQ(gfx::Size(6, 6), border->GetMinimumSize()); |
| 182 EXPECT_EQ(gfx::Insets(3, 3, 3, 3), border->GetInsets()); | 181 EXPECT_EQ(gfx::Insets(3, 3, 3, 3), border->GetInsets()); |
| 183 border->Paint(*view_, canvas_.get()); | 182 border->Paint(*view_, canvas_.get()); |
| 184 | 183 |
| 185 SkRRect expected_rrect; | 184 SkRRect expected_rrect; |
| 186 expected_rrect.setRectXY(SkRect::MakeLTRB(1.5, 1.5, 98.5, 48.5), 4, 4); | 185 expected_rrect.setRectXY(SkRect::MakeLTRB(1.5, 1.5, 98.5, 48.5), 4, 4); |
| 187 EXPECT_TRUE(sk_canvas_->draw_rect_calls().empty()); | 186 EXPECT_TRUE(sk_canvas_->draw_rect_calls().empty()); |
| 188 std::vector<MockCanvas::DrawRRectCall> draw_rrect_calls = | 187 std::vector<MockCanvas::DrawRRectCall> draw_rrect_calls = |
| 189 sk_canvas_->draw_rrect_calls(); | 188 sk_canvas_->draw_rrect_calls(); |
| 190 ASSERT_EQ(1u, draw_rrect_calls.size()); | 189 ASSERT_EQ(1u, draw_rrect_calls.size()); |
| 191 EXPECT_EQ(expected_rrect, draw_rrect_calls[0].rrect); | 190 EXPECT_EQ(expected_rrect, draw_rrect_calls[0].rrect); |
| 192 EXPECT_EQ(3, draw_rrect_calls[0].paint.getStrokeWidth()); | 191 EXPECT_EQ(3, draw_rrect_calls[0].paint.getStrokeWidth()); |
| 193 EXPECT_EQ(SK_ColorBLUE, draw_rrect_calls[0].paint.getColor()); | 192 EXPECT_EQ(SK_ColorBLUE, draw_rrect_calls[0].paint.getColor()); |
| 194 EXPECT_EQ(SkPaint::kStroke_Style, draw_rrect_calls[0].paint.getStyle()); | 193 EXPECT_EQ(SkPaint::kStroke_Style, draw_rrect_calls[0].paint.getStyle()); |
| 195 EXPECT_TRUE(draw_rrect_calls[0].paint.isAntiAlias()); | 194 EXPECT_TRUE(draw_rrect_calls[0].paint.isAntiAlias()); |
| 196 } | 195 } |
| 197 | 196 |
| 198 TEST_F(BorderTest, EmptyBorder) { | 197 TEST_F(BorderTest, EmptyBorder) { |
| 199 const gfx::Insets kInsets(1, 2, 3, 4); | 198 const gfx::Insets kInsets(1, 2, 3, 4); |
| 200 | 199 |
| 201 std::unique_ptr<Border> border(Border::CreateEmptyBorder( | 200 std::unique_ptr<Border> border(CreateEmptyBorder( |
| 202 kInsets.top(), kInsets.left(), kInsets.bottom(), kInsets.right())); | 201 kInsets.top(), kInsets.left(), kInsets.bottom(), kInsets.right())); |
| 203 // The EmptyBorder has no minimum size despite nonzero insets. | 202 // The EmptyBorder has no minimum size despite nonzero insets. |
| 204 EXPECT_EQ(gfx::Size(), border->GetMinimumSize()); | 203 EXPECT_EQ(gfx::Size(), border->GetMinimumSize()); |
| 205 EXPECT_EQ(kInsets, border->GetInsets()); | 204 EXPECT_EQ(kInsets, border->GetInsets()); |
| 206 // Should have no effect. | 205 // Should have no effect. |
| 207 border->Paint(*view_, canvas_.get()); | 206 border->Paint(*view_, canvas_.get()); |
| 208 | 207 |
| 209 std::unique_ptr<Border> border2(Border::CreateEmptyBorder(kInsets)); | 208 std::unique_ptr<Border> border2(CreateEmptyBorder(kInsets)); |
| 210 EXPECT_EQ(kInsets, border2->GetInsets()); | 209 EXPECT_EQ(kInsets, border2->GetInsets()); |
| 211 } | 210 } |
| 212 | 211 |
| 213 TEST_F(BorderTest, SolidSidedBorder) { | 212 TEST_F(BorderTest, SolidSidedBorder) { |
| 214 const gfx::Insets kInsets(1, 2, 3, 4); | 213 const gfx::Insets kInsets(1, 2, 3, 4); |
| 215 | 214 |
| 216 std::unique_ptr<Border> border(Border::CreateSolidSidedBorder( | 215 std::unique_ptr<Border> border( |
| 217 kInsets.top(), kInsets.left(), kInsets.bottom(), kInsets.right(), | 216 CreateSolidSidedBorder(kInsets.top(), kInsets.left(), kInsets.bottom(), |
| 218 SK_ColorBLUE)); | 217 kInsets.right(), SK_ColorBLUE)); |
| 219 EXPECT_EQ(gfx::Size(6, 4), border->GetMinimumSize()); | 218 EXPECT_EQ(gfx::Size(6, 4), border->GetMinimumSize()); |
| 220 EXPECT_EQ(kInsets, border->GetInsets()); | 219 EXPECT_EQ(kInsets, border->GetInsets()); |
| 221 border->Paint(*view_, canvas_.get()); | 220 border->Paint(*view_, canvas_.get()); |
| 222 | 221 |
| 223 std::vector<MockCanvas::DrawRectCall> draw_rect_calls = | 222 std::vector<MockCanvas::DrawRectCall> draw_rect_calls = |
| 224 sk_canvas_->draw_rect_calls(); | 223 sk_canvas_->draw_rect_calls(); |
| 225 ASSERT_EQ(4u, draw_rect_calls.size()); | 224 ASSERT_EQ(4u, draw_rect_calls.size()); |
| 226 EXPECT_EQ(SkRect::MakeLTRB(0, 0, 100, 1), draw_rect_calls[0].rect); | 225 EXPECT_EQ(SkRect::MakeLTRB(0, 0, 100, 1), draw_rect_calls[0].rect); |
| 227 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[0].paint.getColor()); | 226 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[0].paint.getColor()); |
| 228 EXPECT_EQ(SkRect::MakeLTRB(0, 1, 2, 47), draw_rect_calls[1].rect); | 227 EXPECT_EQ(SkRect::MakeLTRB(0, 1, 2, 47), draw_rect_calls[1].rect); |
| 229 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[1].paint.getColor()); | 228 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[1].paint.getColor()); |
| 230 EXPECT_EQ(SkRect::MakeLTRB(0, 47, 100, 50), draw_rect_calls[2].rect); | 229 EXPECT_EQ(SkRect::MakeLTRB(0, 47, 100, 50), draw_rect_calls[2].rect); |
| 231 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[2].paint.getColor()); | 230 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[2].paint.getColor()); |
| 232 EXPECT_EQ(SkRect::MakeLTRB(96, 1, 100, 47), draw_rect_calls[3].rect); | 231 EXPECT_EQ(SkRect::MakeLTRB(96, 1, 100, 47), draw_rect_calls[3].rect); |
| 233 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[3].paint.getColor()); | 232 EXPECT_EQ(SK_ColorBLUE, draw_rect_calls[3].paint.getColor()); |
| 234 | 233 |
| 235 EXPECT_TRUE(sk_canvas_->draw_rrect_calls().empty()); | 234 EXPECT_TRUE(sk_canvas_->draw_rrect_calls().empty()); |
| 236 } | 235 } |
| 237 | 236 |
| 238 TEST_F(BorderTest, BorderPainter) { | 237 TEST_F(BorderTest, BorderPainter) { |
| 239 const gfx::Insets kInsets(1, 2, 3, 4); | 238 const gfx::Insets kInsets(1, 2, 3, 4); |
| 240 | 239 |
| 241 std::unique_ptr<MockPainter> painter(new MockPainter()); | 240 std::unique_ptr<MockPainter> painter(new MockPainter()); |
| 242 MockPainter* painter_ptr = painter.get(); | 241 MockPainter* painter_ptr = painter.get(); |
| 243 std::unique_ptr<Border> border( | 242 std::unique_ptr<Border> border( |
| 244 Border::CreateBorderPainter(std::move(painter), kInsets)); | 243 CreateBorderPainter(std::move(painter), kInsets)); |
| 245 EXPECT_EQ(gfx::Size(60, 40), border->GetMinimumSize()); | 244 EXPECT_EQ(gfx::Size(60, 40), border->GetMinimumSize()); |
| 246 EXPECT_EQ(kInsets, border->GetInsets()); | 245 EXPECT_EQ(kInsets, border->GetInsets()); |
| 247 | 246 |
| 248 border->Paint(*view_, canvas_.get()); | 247 border->Paint(*view_, canvas_.get()); |
| 249 | 248 |
| 250 // Expect that the Painter was called with our canvas and the view's size. | 249 // Expect that the Painter was called with our canvas and the view's size. |
| 251 EXPECT_EQ(canvas_.get(), painter_ptr->given_canvas()); | 250 EXPECT_EQ(canvas_.get(), painter_ptr->given_canvas()); |
| 252 EXPECT_EQ(view_->size(), painter_ptr->given_size()); | 251 EXPECT_EQ(view_->size(), painter_ptr->given_size()); |
| 253 } | 252 } |
| 254 | 253 |
| 255 } // namespace views | 254 } // namespace views |
| OLD | NEW |