| 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 |