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

Unified Diff: Source/core/css/MediaQueryEvaluatorTest.cpp

Issue 335313003: MediaQueryEvaluator getting mediaType from MediaValues (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixed a bug and added tests Created 6 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/css/MediaQueryEvaluatorTest.cpp
diff --git a/Source/core/css/MediaQueryEvaluatorTest.cpp b/Source/core/css/MediaQueryEvaluatorTest.cpp
index 668077ef6833d42404edb20aea7dd7b41cfd1301..2dc1a2f50535819629cbf4781e1b58a982766cfe 100644
--- a/Source/core/css/MediaQueryEvaluatorTest.cpp
+++ b/Source/core/css/MediaQueryEvaluatorTest.cpp
@@ -5,8 +5,11 @@
#include "config.h"
#include "core/css/MediaQueryEvaluator.h"
+#include "core/MediaTypeNames.h"
#include "core/css/MediaList.h"
#include "core/css/MediaValuesCached.h"
+#include "core/frame/FrameView.h"
+#include "core/testing/DummyPageHolder.h"
#include "wtf/PassOwnPtr.h"
#include "wtf/text/StringBuilder.h"
@@ -19,57 +22,68 @@ typedef struct {
const bool output;
} TestCase;
-TEST(MediaQueryEvaluatorTest, Basic)
+TestCase screenTestCases[] = {
+ {"", 1},
+ {" ", 1},
+ {"screen", 1},
+ {"screen and (color)", 1},
+ {"not screen and (color)", 0},
+ {"screen and (device-aspect-ratio: 16/9)", 0},
+ {"screen and (device-aspect-ratio: 1/1)", 1},
+ {"all and (min-color: 2)", 1},
+ {"all and (min-color: 32)", 0},
+ {"all and (min-color-index: 0)", 1},
+ {"all and (min-color-index: 1)", 0},
+ {"all and (monochrome)", 0},
+ {"all and (min-monochrome: 0)", 1},
+ {"all and (grid: 0)", 1},
+ {"(resolution: 2dppx)", 1},
+ {"(resolution: 1dppx)", 0},
+ {"(orientation: portrait)", 1},
+ {"(orientation: landscape)", 0},
+ {"tv and (scan: progressive)", 0},
+ {"(pointer: coarse)", 0},
+ {"(pointer: fine)", 1},
+ {"(hover: 1)", 1},
+ {"(hover: 0)", 0},
+ {0, 0} // Do not remove the terminator line.
+};
+
+TestCase viewportTestCases[] = {
+ {"all and (min-width: 500px)", 1},
+ {"(min-width: 500px)", 1},
+ {"(min-width: 501px)", 0},
+ {"(max-width: 500px)", 1},
+ {"(max-width: 499px)", 0},
+ {"(width: 500px)", 1},
+ {"(width: 501px)", 0},
+ {"(min-height: 500px)", 1},
+ {"(min-height: 501px)", 0},
+ {"(max-height: 500px)", 1},
+ {"(max-height: 499px)", 0},
+ {"(height: 500px)", 1},
+ {"(height: 501px)", 0},
+ {"screen and (min-width: 400px) and (max-width: 700px)", 1},
+ {0, 0} // Do not remove the terminator line.
+};
+
+TestCase printTestCases[] = {
+ {"print and (min-resolution: 1dppx)", 1},
+ {"print and (min-resolution: 118dpcm)", 1},
+ {"print and (min-resolution: 119dpcm)", 0},
+ {0, 0} // Do not remove the terminator line.
+};
+
+void testMQEvaluator(TestCase* testCases, const MediaQueryEvaluator& mediaQueryEvaluator)
{
- // The first string represents the input string.
- // The second string represents the output string, if present.
- // Otherwise, the output string is identical to the first string.
- TestCase screenTestCases[] = {
- {"", 1},
- {" ", 1},
- {"screen", 1},
- {"screen and (color)", 1},
- {"all and (min-width: 500px)", 1},
- {"not screen and (color)", 0},
- {"(min-width: 500px)", 1},
- {"(min-width: 501px)", 0},
- {"(max-width: 500px)", 1},
- {"(max-width: 499px)", 0},
- {"(width: 500px)", 1},
- {"(width: 501px)", 0},
- {"(min-height: 500px)", 1},
- {"(min-height: 501px)", 0},
- {"(max-height: 500px)", 1},
- {"(max-height: 499px)", 0},
- {"(height: 500px)", 1},
- {"(height: 501px)", 0},
- {"screen and (min-width: 400px) and (max-width: 700px)", 1},
- {"screen and (device-aspect-ratio: 16/9)", 0},
- {"screen and (device-aspect-ratio: 1/1)", 1},
- {"all and (min-color: 2)", 1},
- {"all and (min-color: 32)", 0},
- {"all and (min-color-index: 0)", 1},
- {"all and (min-color-index: 1)", 0},
- {"all and (monochrome)", 0},
- {"all and (min-monochrome: 0)", 1},
- {"all and (grid: 0)", 1},
- {"(resolution: 2dppx)", 1},
- {"(resolution: 1dppx)", 0},
- {"(orientation: portrait)", 1},
- {"(orientation: landscape)", 0},
- {"tv and (scan: progressive)", 0},
- {"(pointer: coarse)", 0},
- {"(pointer: fine)", 1},
- {"(hover: 1)", 1},
- {"(hover: 0)", 0},
- {0, 0} // Do not remove the terminator line.
- };
- TestCase printTestCases[] = {
- {"print and (min-resolution: 1dppx)", 1},
- {"print and (min-resolution: 118dpcm)", 0},
- {0, 0} // Do not remove the terminator line.
- };
+ for (unsigned i = 0; testCases[i].input; ++i) {
+ RefPtrWillBeRawPtr<MediaQuerySet> querySet = MediaQuerySet::create(testCases[i].input);
+ ASSERT_EQ(testCases[i].output, mediaQueryEvaluator.eval(querySet.get()));
+ }
+}
+TEST(MediaQueryEvaluatorTest, Cached)
+{
MediaValuesCached::MediaValuesCachedData data;
data.viewportWidth = 500;
data.viewportHeight = 500;
@@ -81,22 +95,28 @@ TEST(MediaQueryEvaluatorTest, Basic)
data.pointer = MediaValues::MousePointer;
data.defaultFontSize = 16;
data.threeDEnabled = true;
- data.scanMediaType = false;
- data.screenMediaType = true;
- data.printMediaType = false;
+ data.mediaType = MediaTypeNames::screen;
data.strictMode = true;
RefPtr<MediaValues> mediaValues = MediaValuesCached::create(data);
- for (unsigned i = 0; screenTestCases[i].input; ++i) {
- RefPtrWillBeRawPtr<MediaQuerySet> querySet = MediaQuerySet::create(screenTestCases[i].input);
- MediaQueryEvaluator mediaQueryEvaluator("screen", *mediaValues);
- ASSERT_EQ(screenTestCases[i].output, mediaQueryEvaluator.eval(querySet.get()));
- }
- for (unsigned i = 0; printTestCases[i].input; ++i) {
- RefPtrWillBeRawPtr<MediaQuerySet> querySet = MediaQuerySet::create(printTestCases[i].input);
- MediaQueryEvaluator mediaQueryEvaluator("print", *mediaValues);
- ASSERT_EQ(printTestCases[i].output, mediaQueryEvaluator.eval(querySet.get()));
- }
+ MediaQueryEvaluator mediaQueryEvaluator(*mediaValues);
+ testMQEvaluator(screenTestCases, mediaQueryEvaluator);
+ testMQEvaluator(viewportTestCases, mediaQueryEvaluator);
+
+ data.mediaType = MediaTypeNames::print;
+ mediaValues = MediaValuesCached::create(data);
+ MediaQueryEvaluator printMediaQueryEvaluator(*mediaValues);
+ testMQEvaluator(printTestCases, printMediaQueryEvaluator);
}
+TEST(MediaQueryEvaluatorTest, Dynamic)
+{
+ OwnPtr<DummyPageHolder> pageHolder = DummyPageHolder::create(IntSize(500, 500));
+ pageHolder->frameView().setMediaType(MediaTypeNames::screen);
+
+ MediaQueryEvaluator mediaQueryEvaluator(&pageHolder->frame());
+ testMQEvaluator(viewportTestCases, mediaQueryEvaluator);
+ pageHolder->frameView().setMediaType(MediaTypeNames::print);
+ testMQEvaluator(printTestCases, mediaQueryEvaluator);
+}
} // namespace

Powered by Google App Engine
This is Rietveld 408576698