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

Unified Diff: Source/core/css/parser/MediaConditionTest.cpp

Issue 223643002: Enable Media condition parsing on the MQ parser (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebased. Fixed nit. Created 6 years, 8 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
« no previous file with comments | « Source/core/css/MediaQuery.cpp ('k') | Source/core/css/parser/MediaQueryParser.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/parser/MediaConditionTest.cpp
diff --git a/Source/core/css/parser/MediaConditionTest.cpp b/Source/core/css/parser/MediaConditionTest.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fd4c048efce69a5f5f502a6330429431abb9c04a
--- /dev/null
+++ b/Source/core/css/parser/MediaConditionTest.cpp
@@ -0,0 +1,54 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "config.h"
+
+#include "core/css/MediaList.h"
+#include "core/css/MediaQuery.h"
+#include "core/css/parser/MediaQueryParser.h"
+#include "core/css/parser/MediaQueryTokenizer.h"
+#include "wtf/PassOwnPtr.h"
+#include "wtf/text/StringBuilder.h"
+
+#include <gtest/gtest.h>
+
+namespace WebCore {
+
+typedef struct {
+ const char* input;
+ const char* output;
+} TestCase;
+
+TEST(MediaConditionParserTest, Basic)
+{
+ // 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 testCases[] = {
+ {"screen", "not all"},
+ {"screen and (color)", "not all"},
+ {"all and (min-width:500px)", "not all"},
+ {"(min-width:500px)", "(min-width: 500px)"},
+ {"screen and (color), projection and (color)", "not all"},
+ {"(min-width: -100px)", "not all"},
+ {"(min-width: 100px) and print", "not all"},
+ {"(min-width: 100px) and (max-width: 900px)", "(max-width: 900px) and (min-width: 100px)"},
+ {"(min-width: [100px) and (max-width: 900px)", "not all"},
+ {0, 0} // Do not remove the terminator line.
+ };
+
+ for (unsigned i = 0; testCases[i].input; ++i) {
+ Vector<MediaQueryToken> tokens;
+ MediaQueryTokenizer::tokenize(testCases[i].input, tokens);
+ MediaQueryParser::TokenIterator endToken;
+ // Stop the input once we hit a comma token
+ for (endToken = tokens.begin(); endToken != tokens.end() && endToken->type() != CommaToken; ++endToken) { }
+ RefPtrWillBeRawPtr<MediaQuerySet> mediaConditionQuerySet = MediaQueryParser::parseMediaCondition(tokens.begin(), endToken);
+ ASSERT_EQ(mediaConditionQuerySet->queryVector().size(), (unsigned)1);
+ String queryText = mediaConditionQuerySet->queryVector()[0]->cssText();
+ ASSERT_STREQ(testCases[i].output, queryText.ascii().data());
+ }
+}
+
+} // namespace
« no previous file with comments | « Source/core/css/MediaQuery.cpp ('k') | Source/core/css/parser/MediaQueryParser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698