OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "core/css/MediaQueryEvaluator.h" | 5 #include "core/css/MediaQueryEvaluator.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include "core/MediaTypeNames.h" | 8 #include "core/MediaTypeNames.h" |
9 #include "core/css/MediaList.h" | 9 #include "core/css/MediaList.h" |
10 #include "core/css/MediaValuesCached.h" | 10 #include "core/css/MediaValuesCached.h" |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 {"(display-mode: @browser)", 0}, | 64 {"(display-mode: @browser)", 0}, |
65 {"(display-mode: 'browser')", 0}, | 65 {"(display-mode: 'browser')", 0}, |
66 {"(display-mode: @junk browser)", 0}, | 66 {"(display-mode: @junk browser)", 0}, |
67 {"(shape: rect)", 1}, | 67 {"(shape: rect)", 1}, |
68 {"(shape: round)", 0}, | 68 {"(shape: round)", 0}, |
69 {"(max-device-aspect-ratio: 4294967295/1)", 1}, | 69 {"(max-device-aspect-ratio: 4294967295/1)", 1}, |
70 {"(min-device-aspect-ratio: 1/4294967296)", 1}, | 70 {"(min-device-aspect-ratio: 1/4294967296)", 1}, |
71 {0, 0} // Do not remove the terminator line. | 71 {0, 0} // Do not remove the terminator line. |
72 }; | 72 }; |
73 | 73 |
| 74 TestCase g_monochrome_test_cases[] = { |
| 75 {"(color)", 0}, |
| 76 {"(monochrome)", 1}, |
| 77 {0, 0} // Do not remove the terminator line. |
| 78 }; |
| 79 |
74 TestCase g_viewport_test_cases[] = { | 80 TestCase g_viewport_test_cases[] = { |
75 {"all and (min-width: 500px)", 1}, | 81 {"all and (min-width: 500px)", 1}, |
76 {"(min-width: 500px)", 1}, | 82 {"(min-width: 500px)", 1}, |
77 {"(min-width: 501px)", 0}, | 83 {"(min-width: 501px)", 0}, |
78 {"(max-width: 500px)", 1}, | 84 {"(max-width: 500px)", 1}, |
79 {"(max-width: 499px)", 0}, | 85 {"(max-width: 499px)", 0}, |
80 {"(width: 500px)", 1}, | 86 {"(width: 500px)", 1}, |
81 {"(width: 501px)", 0}, | 87 {"(width: 501px)", 0}, |
82 {"(min-height: 500px)", 1}, | 88 {"(min-height: 500px)", 1}, |
83 {"(min-height: 501px)", 0}, | 89 {"(min-height: 501px)", 0}, |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 {"print and (min-resolution: 118dpcm)", 1}, | 145 {"print and (min-resolution: 118dpcm)", 1}, |
140 {"print and (min-resolution: 119dpcm)", 0}, | 146 {"print and (min-resolution: 119dpcm)", 0}, |
141 {0, 0} // Do not remove the terminator line. | 147 {0, 0} // Do not remove the terminator line. |
142 }; | 148 }; |
143 | 149 |
144 void TestMQEvaluator(TestCase* test_cases, | 150 void TestMQEvaluator(TestCase* test_cases, |
145 const MediaQueryEvaluator& media_query_evaluator) { | 151 const MediaQueryEvaluator& media_query_evaluator) { |
146 RefPtr<MediaQuerySet> query_set = nullptr; | 152 RefPtr<MediaQuerySet> query_set = nullptr; |
147 for (unsigned i = 0; test_cases[i].input; ++i) { | 153 for (unsigned i = 0; test_cases[i].input; ++i) { |
148 query_set = MediaQuerySet::Create(test_cases[i].input); | 154 query_set = MediaQuerySet::Create(test_cases[i].input); |
149 EXPECT_EQ(test_cases[i].output, media_query_evaluator.Eval(*query_set)); | 155 EXPECT_EQ(test_cases[i].output, media_query_evaluator.Eval(*query_set)) |
| 156 << "Query: " << test_cases[i].input; |
150 } | 157 } |
151 } | 158 } |
152 | 159 |
153 TEST(MediaQueryEvaluatorTest, Cached) { | 160 TEST(MediaQueryEvaluatorTest, Cached) { |
154 MediaValuesCached::MediaValuesCachedData data; | 161 MediaValuesCached::MediaValuesCachedData data; |
155 data.viewport_width = 500; | 162 data.viewport_width = 500; |
156 data.viewport_height = 500; | 163 data.viewport_height = 500; |
157 data.device_width = 500; | 164 data.device_width = 500; |
158 data.device_height = 500; | 165 data.device_height = 500; |
159 data.device_pixel_ratio = 2.0; | 166 data.device_pixel_ratio = 2.0; |
160 data.color_bits_per_component = 24; | 167 data.color_bits_per_component = 24; |
161 data.monochrome_bits_per_component = 0; | 168 data.monochrome_bits_per_component = 0; |
162 data.primary_pointer_type = kPointerTypeFine; | 169 data.primary_pointer_type = kPointerTypeFine; |
163 data.primary_hover_type = kHoverTypeHover; | 170 data.primary_hover_type = kHoverTypeHover; |
164 data.default_font_size = 16; | 171 data.default_font_size = 16; |
165 data.three_d_enabled = true; | 172 data.three_d_enabled = true; |
166 data.media_type = MediaTypeNames::screen; | 173 data.media_type = MediaTypeNames::screen; |
167 data.strict_mode = true; | 174 data.strict_mode = true; |
168 data.display_mode = kWebDisplayModeBrowser; | 175 data.display_mode = kWebDisplayModeBrowser; |
169 data.display_shape = kDisplayShapeRect; | 176 data.display_shape = kDisplayShapeRect; |
170 MediaValues* media_values = MediaValuesCached::Create(data); | |
171 | 177 |
172 MediaQueryEvaluator media_query_evaluator(*media_values); | 178 // Default values. |
173 TestMQEvaluator(g_screen_test_cases, media_query_evaluator); | 179 { |
174 TestMQEvaluator(g_viewport_test_cases, media_query_evaluator); | 180 MediaValues* media_values = MediaValuesCached::Create(data); |
| 181 MediaQueryEvaluator media_query_evaluator(*media_values); |
| 182 TestMQEvaluator(g_screen_test_cases, media_query_evaluator); |
| 183 TestMQEvaluator(g_viewport_test_cases, media_query_evaluator); |
| 184 } |
175 | 185 |
176 data.media_type = MediaTypeNames::print; | 186 // Print values. |
177 media_values = MediaValuesCached::Create(data); | 187 { |
178 MediaQueryEvaluator print_media_query_evaluator(*media_values); | 188 data.media_type = MediaTypeNames::print; |
179 TestMQEvaluator(g_print_test_cases, print_media_query_evaluator); | 189 MediaValues* media_values = MediaValuesCached::Create(data); |
| 190 MediaQueryEvaluator media_query_evaluator(*media_values); |
| 191 TestMQEvaluator(g_print_test_cases, media_query_evaluator); |
| 192 data.media_type = MediaTypeNames::screen; |
| 193 } |
| 194 |
| 195 // Monochrome values. |
| 196 { |
| 197 data.color_bits_per_component = 0; |
| 198 data.monochrome_bits_per_component = 8; |
| 199 MediaValues* media_values = MediaValuesCached::Create(data); |
| 200 MediaQueryEvaluator media_query_evaluator(*media_values); |
| 201 TestMQEvaluator(g_monochrome_test_cases, media_query_evaluator); |
| 202 data.color_bits_per_component = 24; |
| 203 data.monochrome_bits_per_component = 0; |
| 204 } |
180 } | 205 } |
181 | 206 |
182 TEST(MediaQueryEvaluatorTest, Dynamic) { | 207 TEST(MediaQueryEvaluatorTest, Dynamic) { |
183 std::unique_ptr<DummyPageHolder> page_holder = | 208 std::unique_ptr<DummyPageHolder> page_holder = |
184 DummyPageHolder::Create(IntSize(500, 500)); | 209 DummyPageHolder::Create(IntSize(500, 500)); |
185 page_holder->GetFrameView().SetMediaType(MediaTypeNames::screen); | 210 page_holder->GetFrameView().SetMediaType(MediaTypeNames::screen); |
186 | 211 |
187 MediaQueryEvaluator media_query_evaluator(&page_holder->GetFrame()); | 212 MediaQueryEvaluator media_query_evaluator(&page_holder->GetFrame()); |
188 TestMQEvaluator(g_viewport_test_cases, media_query_evaluator); | 213 TestMQEvaluator(g_viewport_test_cases, media_query_evaluator); |
189 page_holder->GetFrameView().SetMediaType(MediaTypeNames::print); | 214 page_holder->GetFrameView().SetMediaType(MediaTypeNames::print); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
230 page_holder->GetFrameView().SetInitialViewportSize(IntSize(500, 500)); | 255 page_holder->GetFrameView().SetInitialViewportSize(IntSize(500, 500)); |
231 page_holder->GetFrameView().SetLayoutSize(IntSize(800, 800)); | 256 page_holder->GetFrameView().SetLayoutSize(IntSize(800, 800)); |
232 page_holder->GetFrameView().SetFrameRect(IntRect(0, 0, 800, 800)); | 257 page_holder->GetFrameView().SetFrameRect(IntRect(0, 0, 800, 800)); |
233 | 258 |
234 MediaQueryEvaluator media_query_evaluator( | 259 MediaQueryEvaluator media_query_evaluator( |
235 MediaValuesInitialViewport::Create(page_holder->GetFrame())); | 260 MediaValuesInitialViewport::Create(page_holder->GetFrame())); |
236 TestMQEvaluator(g_viewport_test_cases, media_query_evaluator); | 261 TestMQEvaluator(g_viewport_test_cases, media_query_evaluator); |
237 } | 262 } |
238 | 263 |
239 } // namespace blink | 264 } // namespace blink |
OLD | NEW |