Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(567)

Side by Side Diff: chrome/browser/chromeos/ui/accessibility_focus_ring_controller_unittest.cc

Issue 557393003: Introduce AccessibilityFocusRing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@accessibility_private_histograms
Patch Set: Address last feedback Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/ui/accessibility_focus_ring_controller.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 namespace chromeos {
10
11 class TestableAccessibilityFocusRingController
12 : public AccessibilityFocusRingController {
13 public:
14 TestableAccessibilityFocusRingController() {}
15 virtual ~TestableAccessibilityFocusRingController() {}
16
17 void RectsToRings(const std::vector<gfx::Rect>& rects,
18 std::vector<AccessibilityFocusRing>* rings) const {
19 AccessibilityFocusRingController::RectsToRings(rects, rings);
20 }
21
22 // Return an easy round number for testing.
23 virtual int GetMargin() const OVERRIDE {
24 return 10;
25 }
26 };
27
28 class AccessibilityFocusRingControllerTest : public testing::Test {
29 public:
30 AccessibilityFocusRingControllerTest() {}
31 virtual ~AccessibilityFocusRingControllerTest() {}
32
33 protected:
34 TestableAccessibilityFocusRingController controller_;
35 };
36
37 TEST_F(AccessibilityFocusRingControllerTest, RectsToRingsSimpleBoundsCheck) {
38 // Easy sanity check. Given a single rectangle, make sure we get back
39 // a focus ring with the same bounds.
40 std::vector<gfx::Rect> rects;
41 rects.push_back(gfx::Rect(10, 30, 70, 150));
42 std::vector<AccessibilityFocusRing> rings;
43 controller_.RectsToRings(rects, &rings);
44 ASSERT_EQ(1U, rings.size());
45 ASSERT_EQ(rects[0], rings[0].GetBounds());
46 }
47
48 TEST_F(AccessibilityFocusRingControllerTest, RectsToRingsVerticalStack) {
49 // Given two rects, one on top of each other, we should get back a
50 // focus ring that surrounds them both.
51 std::vector<gfx::Rect> rects;
52 rects.push_back(gfx::Rect(10, 10, 60, 30));
53 rects.push_back(gfx::Rect(10, 40, 60, 30));
54 std::vector<AccessibilityFocusRing> rings;
55 controller_.RectsToRings(rects, &rings);
56 ASSERT_EQ(1U, rings.size());
57 ASSERT_EQ(gfx::Rect(10, 10, 60, 60), rings[0].GetBounds());
58 }
59
60 TEST_F(AccessibilityFocusRingControllerTest, RectsToRingsHorizontalStack) {
61 // Given two rects, one next to the other horizontally, we should get back a
62 // focus ring that surrounds them both.
63 std::vector<gfx::Rect> rects;
64 rects.push_back(gfx::Rect(10, 10, 60, 30));
65 rects.push_back(gfx::Rect(70, 10, 60, 30));
66 std::vector<AccessibilityFocusRing> rings;
67 controller_.RectsToRings(rects, &rings);
68 ASSERT_EQ(1U, rings.size());
69 ASSERT_EQ(gfx::Rect(10, 10, 120, 30), rings[0].GetBounds());
70 }
71
72 TEST_F(AccessibilityFocusRingControllerTest, RectsToRingsParagraphShape) {
73 // Given a simple paragraph shape, make sure we get something that
74 // outlines it correctly.
75 std::vector<gfx::Rect> rects;
76 rects.push_back(gfx::Rect(0, 0, 200, 100));
77 rects.push_back(gfx::Rect(0, 100, 600, 300));
78 rects.push_back(gfx::Rect(400, 400, 200, 100));
79 std::vector<AccessibilityFocusRing> rings;
80 controller_.RectsToRings(rects, &rings);
81 ASSERT_EQ(1U, rings.size());
82 ASSERT_EQ(gfx::Rect(0, 0, 600, 500), rings[0].GetBounds());
83
84 const gfx::Point* points = rings[0].points;
85 ASSERT_EQ(gfx::Point(0, 90), points[0]);
86 ASSERT_EQ(gfx::Point(0, 10), points[1]);
87 ASSERT_EQ(gfx::Point(0, 0), points[2]);
88 ASSERT_EQ(gfx::Point(10, 0), points[3]);
89 ASSERT_EQ(gfx::Point(190, 0), points[4]);
90 ASSERT_EQ(gfx::Point(200, 0), points[5]);
91 ASSERT_EQ(gfx::Point(200, 10), points[6]);
92 ASSERT_EQ(gfx::Point(200, 90), points[7]);
93 ASSERT_EQ(gfx::Point(200, 100), points[8]);
94 ASSERT_EQ(gfx::Point(210, 100), points[9]);
95 ASSERT_EQ(gfx::Point(590, 100), points[10]);
96 ASSERT_EQ(gfx::Point(600, 100), points[11]);
97 ASSERT_EQ(gfx::Point(600, 110), points[12]);
98 ASSERT_EQ(gfx::Point(600, 390), points[13]);
99 ASSERT_EQ(gfx::Point(600, 400), points[14]);
100 ASSERT_EQ(gfx::Point(600, 400), points[15]);
101 ASSERT_EQ(gfx::Point(600, 400), points[16]);
102 ASSERT_EQ(gfx::Point(600, 400), points[17]);
103 ASSERT_EQ(gfx::Point(600, 410), points[18]);
104 ASSERT_EQ(gfx::Point(600, 490), points[19]);
105 ASSERT_EQ(gfx::Point(600, 500), points[20]);
106 ASSERT_EQ(gfx::Point(590, 500), points[21]);
107 ASSERT_EQ(gfx::Point(410, 500), points[22]);
108 ASSERT_EQ(gfx::Point(400, 500), points[23]);
109 ASSERT_EQ(gfx::Point(400, 490), points[24]);
110 ASSERT_EQ(gfx::Point(400, 410), points[25]);
111 ASSERT_EQ(gfx::Point(400, 400), points[26]);
112 ASSERT_EQ(gfx::Point(390, 400), points[27]);
113 ASSERT_EQ(gfx::Point(10, 400), points[28]);
114 ASSERT_EQ(gfx::Point(0, 400), points[29]);
115 ASSERT_EQ(gfx::Point(0, 390), points[30]);
116 ASSERT_EQ(gfx::Point(0, 110), points[31]);
117 ASSERT_EQ(gfx::Point(0, 100), points[32]);
118 ASSERT_EQ(gfx::Point(0, 100), points[33]);
119 ASSERT_EQ(gfx::Point(0, 100), points[34]);
120 ASSERT_EQ(gfx::Point(0, 100), points[35]);
121 }
122
123 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698