diff --git a/engine/core/css/MediaList.cpp b/engine/core/css/MediaList.cpp index 8d15ec84b42..aba6a7966c5 100644 --- a/engine/core/css/MediaList.cpp +++ b/engine/core/css/MediaList.cpp @@ -72,11 +72,7 @@ PassRefPtr MediaQuerySet::create(const String& mediaString) if (mediaString.isEmpty()) return MediaQuerySet::create(); - if (RuntimeEnabledFeatures::mediaQueryParserEnabled()) - return MediaQueryParser::parseMediaQuerySet(mediaString); - - BisonCSSParser parser(strictCSSParserContext()); - return parser.parseMediaQueryList(mediaString); + return MediaQueryParser::parseMediaQuerySet(mediaString); } PassRefPtr MediaQuerySet::createOffMainThread(const String& mediaString) diff --git a/engine/core/css/RuleSet.cpp b/engine/core/css/RuleSet.cpp index f75b3b4e322..1f04da1b1d4 100644 --- a/engine/core/css/RuleSet.cpp +++ b/engine/core/css/RuleSet.cpp @@ -149,7 +149,7 @@ void RuleSet::addKeyframesRule(StyleRuleKeyframes* rule) m_keyframesRules.append(rule); } -void RuleSet::addChildRules(const Vector >& rules, const MediaQueryEvaluator& medium, AddRuleFlags addRuleFlags) +void RuleSet::addChildRules(const Vector >& rules, AddRuleFlags addRuleFlags) { for (unsigned i = 0; i < rules.size(); ++i) { StyleRuleBase* rule = rules[i].get(); @@ -160,26 +160,22 @@ void RuleSet::addChildRules(const Vector >& rules, const M const CSSSelectorList& selectorList = styleRule->selectorList(); for (size_t selectorIndex = 0; selectorIndex != kNotFound; selectorIndex = selectorList.indexOfNextSelectorAfter(selectorIndex)) addRule(styleRule, selectorIndex, addRuleFlags); - } else if (rule->isMediaRule()) { - StyleRuleMedia* mediaRule = toStyleRuleMedia(rule); - if ((!mediaRule->mediaQueries() || medium.eval(mediaRule->mediaQueries(), &m_viewportDependentMediaQueryResults))) - addChildRules(mediaRule->childRules(), medium, addRuleFlags); } else if (rule->isFontFaceRule()) { addFontFaceRule(toStyleRuleFontFace(rule)); } else if (rule->isKeyframesRule()) { addKeyframesRule(toStyleRuleKeyframes(rule)); } else if (rule->isSupportsRule() && toStyleRuleSupports(rule)->conditionIsSupported()) { - addChildRules(toStyleRuleSupports(rule)->childRules(), medium, addRuleFlags); + addChildRules(toStyleRuleSupports(rule)->childRules(), addRuleFlags); } } } -void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvaluator& medium, AddRuleFlags addRuleFlags) +void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, AddRuleFlags addRuleFlags) { TRACE_EVENT0("blink", "RuleSet::addRulesFromSheet"); ASSERT(sheet); addRuleFlags = static_cast(addRuleFlags | RuleCanUseFastCheckSelector); - addChildRules(sheet->childRules(), medium, addRuleFlags); + addChildRules(sheet->childRules(), addRuleFlags); } void RuleSet::addStyleRule(StyleRule* rule, AddRuleFlags addRuleFlags) diff --git a/engine/core/css/RuleSet.h b/engine/core/css/RuleSet.h index a4e44fd20ed..8be80de18bf 100644 --- a/engine/core/css/RuleSet.h +++ b/engine/core/css/RuleSet.h @@ -40,7 +40,6 @@ enum AddRuleFlags { }; class CSSSelector; -class MediaQueryEvaluator; class StyleSheetContents; class RuleData { @@ -78,7 +77,7 @@ class RuleSet { public: static PassOwnPtr create() { return adoptPtr(new RuleSet); } - void addRulesFromSheet(StyleSheetContents*, const MediaQueryEvaluator&, AddRuleFlags = RuleHasNoSpecialState); + void addRulesFromSheet(StyleSheetContents*, AddRuleFlags = RuleHasNoSpecialState); void addStyleRule(StyleRule*, AddRuleFlags); void addRule(StyleRule*, unsigned selectorIndex, AddRuleFlags); @@ -117,7 +116,7 @@ private: void addFontFaceRule(StyleRuleFontFace*); void addKeyframesRule(StyleRuleKeyframes*); - void addChildRules(const Vector >&, const MediaQueryEvaluator& medium, AddRuleFlags); + void addChildRules(const Vector >&, AddRuleFlags); bool findBestRuleSetAndAdd(const CSSSelector&, RuleData&); void compactRules(); diff --git a/engine/core/css/StyleRule.cpp b/engine/core/css/StyleRule.cpp index 7e3adfc0849..f5d70f29405 100644 --- a/engine/core/css/StyleRule.cpp +++ b/engine/core/css/StyleRule.cpp @@ -42,9 +42,6 @@ void StyleRuleBase::destroy() case FontFace: delete toStyleRuleFontFace(this); return; - case Media: - delete toStyleRuleMedia(this); - return; case Supports: delete toStyleRuleSupports(this); return; @@ -52,7 +49,6 @@ void StyleRuleBase::destroy() delete toStyleRuleKeyframes(this); return; case Unknown: - case Keyframe: ASSERT_NOT_REACHED(); return; } @@ -98,12 +94,6 @@ StyleRuleGroup::StyleRuleGroup(Type type, Vector >& adoptR m_childRules.swap(adoptRule); } -StyleRuleMedia::StyleRuleMedia(PassRefPtr media, Vector >& adoptRules) - : StyleRuleGroup(Media, adoptRules) - , m_mediaQueries(media) -{ -} - StyleRuleSupports::StyleRuleSupports(const String& conditionText, bool conditionIsSupported, Vector >& adoptRules) : StyleRuleGroup(Supports, adoptRules) , m_conditionText(conditionText) diff --git a/engine/core/css/StyleRule.h b/engine/core/css/StyleRule.h index ee0e6a9271c..9839fe8f2a8 100644 --- a/engine/core/css/StyleRule.h +++ b/engine/core/css/StyleRule.h @@ -23,7 +23,6 @@ #define SKY_ENGINE_CORE_CSS_STYLERULE_H_ #include "sky/engine/core/css/CSSSelectorList.h" -#include "sky/engine/core/css/MediaList.h" #include "sky/engine/wtf/Noncopyable.h" #include "sky/engine/wtf/RefPtr.h" @@ -37,10 +36,8 @@ public: enum Type { Unknown, // Not used. Style, - Media, FontFace = 4, Keyframes = 5, - Keyframe, // Not used. These are internally non-rule StyleKeyframe objects. Supports = 12, }; @@ -48,7 +45,6 @@ public: bool isFontFaceRule() const { return type() == FontFace; } bool isKeyframesRule() const { return type() == Keyframes; } - bool isMediaRule() const { return type() == Media; } bool isStyleRule() const { return type() == Style; } bool isSupportsRule() const { return type() == Supports; } @@ -121,22 +117,6 @@ private: Vector > m_childRules; }; -class StyleRuleMedia final : public StyleRuleGroup { - WTF_MAKE_NONCOPYABLE(StyleRuleMedia); -public: - static PassRefPtr create(PassRefPtr media, Vector >& adoptRules) - { - return adoptRef(new StyleRuleMedia(media, adoptRules)); - } - - MediaQuerySet* mediaQueries() const { return m_mediaQueries.get(); } - -private: - StyleRuleMedia(PassRefPtr, Vector >& adoptRules); - - RefPtr m_mediaQueries; -}; - class StyleRuleSupports final : public StyleRuleGroup { WTF_MAKE_NONCOPYABLE(StyleRuleSupports); public: @@ -160,7 +140,6 @@ private: DEFINE_TYPE_CASTS(StyleRule, StyleRuleBase, rule, rule->isStyleRule(), rule.isStyleRule()); DEFINE_STYLE_RULE_TYPE_CASTS(FontFace); -DEFINE_STYLE_RULE_TYPE_CASTS(Media); DEFINE_STYLE_RULE_TYPE_CASTS(Supports); } // namespace blink diff --git a/engine/core/css/StyleSheetContents.cpp b/engine/core/css/StyleSheetContents.cpp index 77fd6697d28..6b89ae86b00 100644 --- a/engine/core/css/StyleSheetContents.cpp +++ b/engine/core/css/StyleSheetContents.cpp @@ -36,8 +36,7 @@ namespace blink { StyleSheetContents::StyleSheetContents(const CSSParserContext& context) - : m_hasMediaQueries(false) - , m_parserContext(context) + : m_parserContext(context) { } @@ -50,16 +49,9 @@ StyleSheetContents::~StyleSheetContents() void StyleSheetContents::parserAppendRule(PassRefPtr rule) { - if (rule->isMediaRule()) - setHasMediaQueries(); m_childRules.append(rule); } -void StyleSheetContents::setHasMediaQueries() -{ - m_hasMediaQueries = true; -} - bool StyleSheetContents::parseString(const String& sheetText) { CSSParserContext context(parserContext(), UseCounter::getFrom(this)); @@ -92,11 +84,11 @@ void StyleSheetContents::shrinkToFit() m_childRules.shrinkToFit(); } -RuleSet& StyleSheetContents::ensureRuleSet(const MediaQueryEvaluator& medium, AddRuleFlags addRuleFlags) +RuleSet& StyleSheetContents::ensureRuleSet(AddRuleFlags addRuleFlags) { if (!m_ruleSet) { m_ruleSet = RuleSet::create(); - m_ruleSet->addRulesFromSheet(this, medium, addRuleFlags); + m_ruleSet->addRulesFromSheet(this, addRuleFlags); } return *m_ruleSet.get(); } diff --git a/engine/core/css/StyleSheetContents.h b/engine/core/css/StyleSheetContents.h index 85d45210ff4..482d79ebca2 100644 --- a/engine/core/css/StyleSheetContents.h +++ b/engine/core/css/StyleSheetContents.h @@ -61,19 +61,14 @@ public: void registerClient(CSSStyleSheet*); void unregisterClient(CSSStyleSheet*); - void setHasMediaQueries(); - bool hasMediaQueries() const { return m_hasMediaQueries; } - void shrinkToFit(); RuleSet& ruleSet() { ASSERT(m_ruleSet); return *m_ruleSet.get(); } - RuleSet& ensureRuleSet(const MediaQueryEvaluator&, AddRuleFlags); + RuleSet& ensureRuleSet(AddRuleFlags); void clearRuleSet(); private: explicit StyleSheetContents(const CSSParserContext&); - bool m_hasMediaQueries : 1; - OwnPtr m_ruleSet; Vector > m_childRules; CSSParserContext m_parserContext; diff --git a/engine/core/css/parser/BisonCSSParser-in.cpp b/engine/core/css/parser/BisonCSSParser-in.cpp index e29a8491a8e..e60c694ac41 100644 --- a/engine/core/css/parser/BisonCSSParser-in.cpp +++ b/engine/core/css/parser/BisonCSSParser-in.cpp @@ -57,8 +57,6 @@ #include "sky/engine/core/css/CSSValueList.h" #include "sky/engine/core/css/CSSValuePool.h" #include "sky/engine/core/css/HashTools.h" -#include "sky/engine/core/css/MediaList.h" -#include "sky/engine/core/css/MediaQueryExp.h" #include "sky/engine/core/css/Pair.h" #include "sky/engine/core/css/Rect.h" #include "sky/engine/core/css/StylePropertySet.h" @@ -978,19 +976,6 @@ bool BisonCSSParser::parseDeclaration(MutableStylePropertySet* declaration, cons return ok; } -PassRefPtr BisonCSSParser::parseMediaQueryList(const String& string) -{ - ASSERT(!m_mediaList); - - // can't use { because tokenizer state switches from mediaquery to initial state when it sees { token. - // instead insert one " " (which is caught by maybe_space in CSSGrammar.y) - setupParser("@-internal-medialist ", string, ""); - cssyyparse(this); - - ASSERT(m_mediaList); - return m_mediaList.release(); -} - bool BisonCSSParser::parseAttributeMatchType(CSSSelector::AttributeMatchType& matchType, const String& string) { if (!RuntimeEnabledFeatures::cssAttributeCaseSensitivityEnabled() && !isUASheetBehavior(m_context.mode())) @@ -1374,52 +1359,6 @@ CSSParserValue& BisonCSSParser::sinkFloatingValue(CSSParserValue& value) return value; } -MediaQueryExp* BisonCSSParser::createFloatingMediaQueryExp(const AtomicString& mediaFeature, CSSParserValueList* values) -{ - m_floatingMediaQueryExp = MediaQueryExp::createIfValid(mediaFeature, values); - return m_floatingMediaQueryExp.get(); -} - -PassOwnPtr BisonCSSParser::sinkFloatingMediaQueryExp(MediaQueryExp* expression) -{ - ASSERT_UNUSED(expression, expression == m_floatingMediaQueryExp); - return m_floatingMediaQueryExp.release(); -} - -Vector >* BisonCSSParser::createFloatingMediaQueryExpList() -{ - m_floatingMediaQueryExpList = adoptPtr(new Vector >); - return m_floatingMediaQueryExpList.get(); -} - -PassOwnPtr > > BisonCSSParser::sinkFloatingMediaQueryExpList(Vector >* list) -{ - ASSERT_UNUSED(list, list == m_floatingMediaQueryExpList); - return m_floatingMediaQueryExpList.release(); -} - -MediaQuery* BisonCSSParser::createFloatingMediaQuery(MediaQuery::Restrictor restrictor, const AtomicString& mediaType, PassOwnPtr > > expressions) -{ - m_floatingMediaQuery = adoptPtr(new MediaQuery(restrictor, mediaType, expressions)); - return m_floatingMediaQuery.get(); -} - -MediaQuery* BisonCSSParser::createFloatingMediaQuery(PassOwnPtr > > expressions) -{ - return createFloatingMediaQuery(MediaQuery::None, AtomicString("all", AtomicString::ConstructFromLiteral), expressions); -} - -MediaQuery* BisonCSSParser::createFloatingNotAllQuery() -{ - return createFloatingMediaQuery(MediaQuery::Not, AtomicString("all", AtomicString::ConstructFromLiteral), sinkFloatingMediaQueryExpList(createFloatingMediaQueryExpList())); -} - -PassOwnPtr BisonCSSParser::sinkFloatingMediaQuery(MediaQuery* query) -{ - ASSERT_UNUSED(query, query == m_floatingMediaQuery); - return m_floatingMediaQuery.release(); -} - Vector >* BisonCSSParser::createFloatingKeyframeVector() { m_floatingKeyframeVector = adoptPtr(new Vector >()); @@ -1432,29 +1371,6 @@ PassOwnPtr > > BisonCSSParser::sinkFloatingKeyframe return m_floatingKeyframeVector.release(); } -MediaQuerySet* BisonCSSParser::createMediaQuerySet() -{ - RefPtr queries = MediaQuerySet::create(); - MediaQuerySet* result = queries.get(); - m_parsedMediaQuerySets.append(queries.release()); - return result; -} - -StyleRuleBase* BisonCSSParser::createMediaRule(MediaQuerySet* media, RuleList* rules) -{ - m_allowImportRules = m_allowNamespaceDeclarations = false; - RefPtr rule = nullptr; - if (rules) { - rule = StyleRuleMedia::create(media ? media : MediaQuerySet::create().get(), *rules); - } else { - RuleList emptyRules; - rule = StyleRuleMedia::create(media ? media : MediaQuerySet::create().get(), emptyRules); - } - StyleRuleMedia* result = rule.get(); - m_parsedRules.append(rule.release()); - return result; -} - StyleRuleBase* BisonCSSParser::createSupportsRule(bool conditionIsSupported, RuleList* rules) { m_allowImportRules = m_allowNamespaceDeclarations = false; diff --git a/engine/core/css/parser/BisonCSSParser.h b/engine/core/css/parser/BisonCSSParser.h index 5d17f201777..68b66c4c9bf 100644 --- a/engine/core/css/parser/BisonCSSParser.h +++ b/engine/core/css/parser/BisonCSSParser.h @@ -31,7 +31,6 @@ #include "sky/engine/core/css/CSSProperty.h" #include "sky/engine/core/css/CSSPropertySourceData.h" #include "sky/engine/core/css/CSSSelector.h" -#include "sky/engine/core/css/MediaQuery.h" #include "sky/engine/core/css/StylePropertySet.h" #include "sky/engine/core/css/parser/CSSParserMode.h" #include "sky/engine/core/css/parser/CSSParserObserver.h" @@ -58,8 +57,6 @@ class CSSValueList; class Document; class Element; class ImmutableStylePropertySet; -class MediaQueryExp; -class MediaQuerySet; class MutableStylePropertySet; class StyleColor; class StyleKeyframe; @@ -98,7 +95,6 @@ public: static PassRefPtr parseAnimationTimingFunctionValue(const String&); bool parseDeclaration(MutableStylePropertySet*, const String&, CSSParserObserver*, StyleSheetContents* contextStyleSheet); static PassRefPtr parseInlineStyleDeclaration(const String&, Element*); - PassRefPtr parseMediaQueryList(const String&); PassOwnPtr > parseKeyframeKeyList(const String&); bool parseAttributeMatchType(CSSSelector::AttributeMatchType&, const String&); @@ -123,12 +119,10 @@ public: CSSParserValue& sinkFloatingValue(CSSParserValue&); - MediaQuerySet* createMediaQuerySet(); StyleKeyframe* createKeyframe(CSSParserValueList*); StyleRuleKeyframes* createKeyframesRule(const String&, PassOwnPtr > >, bool isPrefixed); typedef Vector > RuleList; - StyleRuleBase* createMediaRule(MediaQuerySet*, RuleList*); RuleList* createRuleList(); RuleList* appendRule(RuleList*, StyleRuleBase*); StyleRuleBase* createStyleRule(Vector >* selectors); @@ -142,15 +136,6 @@ public: void startDeclarationsForMarginBox(); void endDeclarationsForMarginBox(); - MediaQueryExp* createFloatingMediaQueryExp(const AtomicString&, CSSParserValueList*); - PassOwnPtr sinkFloatingMediaQueryExp(MediaQueryExp*); - Vector >* createFloatingMediaQueryExpList(); - PassOwnPtr > > sinkFloatingMediaQueryExpList(Vector >*); - MediaQuery* createFloatingMediaQuery(MediaQuery::Restrictor, const AtomicString&, PassOwnPtr > >); - MediaQuery* createFloatingMediaQuery(PassOwnPtr > >); - MediaQuery* createFloatingNotAllQuery(); - PassOwnPtr sinkFloatingMediaQuery(MediaQuery*); - Vector >* createFloatingKeyframeVector(); PassOwnPtr > > sinkFloatingKeyframeVector(Vector >*); @@ -174,7 +159,6 @@ public: RawPtr m_styleSheet; RefPtr m_rule; RefPtr m_keyframe; - RefPtr m_mediaList; OwnPtr m_valueList; bool m_supportsCondition; @@ -251,17 +235,12 @@ private: Vector > m_parsedRules; Vector > m_parsedKeyframes; - Vector > m_parsedMediaQuerySets; Vector > m_parsedRuleLists; Vector m_floatingSelectors; Vector >*> m_floatingSelectorVectors; Vector m_floatingValueLists; Vector m_floatingFunctions; - OwnPtr m_floatingMediaQuery; - OwnPtr m_floatingMediaQueryExp; - OwnPtr > > m_floatingMediaQueryExpList; - OwnPtr > > m_floatingKeyframeVector; Vector > m_reusableSelectorVector; diff --git a/engine/core/css/parser/BisonCSSParserTest.cpp b/engine/core/css/parser/BisonCSSParserTest.cpp index 188a3e5d746..37607f20b6b 100644 --- a/engine/core/css/parser/BisonCSSParserTest.cpp +++ b/engine/core/css/parser/BisonCSSParserTest.cpp @@ -84,28 +84,4 @@ static void testMediaQuery(const char* expected, MediaQuerySet& querySet) ASSERT_STREQ(expected, output.toString().ascii().data()); } -TEST(BisonCSSParserTest, MediaQuery) -{ - struct { - const char* input; - const char* output; - } testCases[] = { - {"@media s} {}", "not all"}, - {"@media } {}", "not all"}, - {"@media tv {}", "tv"}, - {"@media tv, screen {}", "tv, screen"}, - {"@media s}, tv {}", "not all, tv"}, - {"@media tv, screen and (}) {}", "tv, not all"}, - }; - - BisonCSSParser parser(strictCSSParserContext()); - - for (unsigned i = 0; i < ARRAY_SIZE(testCases); ++i) { - RefPtr rule = parser.parseRule(nullptr, String(testCases[i].input)); - - EXPECT_TRUE(rule->isMediaRule()); - testMediaQuery(testCases[i].output, *static_cast(rule.get())->mediaQueries()); - } -} - } // namespace blink diff --git a/engine/core/css/parser/CSSGrammar.y b/engine/core/css/parser/CSSGrammar.y index ac7cedf540e..2ebeac891db 100644 --- a/engine/core/css/parser/CSSGrammar.y +++ b/engine/core/css/parser/CSSGrammar.y @@ -29,8 +29,6 @@ #include "core/css/CSSPrimitiveValue.h" #include "core/css/CSSSelector.h" #include "core/css/CSSSelectorList.h" -#include "core/css/MediaList.h" -#include "core/css/MediaQueryExp.h" #include "core/css/StyleKeyframe.h" #include "core/css/StyleRule.h" #include "core/css/StyleRuleKeyframes.h" @@ -38,7 +36,6 @@ #include "core/css/parser/BisonCSSParser.h" #include "core/css/parser/CSSParserMode.h" #include "core/dom/Document.h" -#include "sky/engine/core/css/MediaList.h" #include "wtf/FastMalloc.h" #include #include @@ -73,18 +70,13 @@ using namespace blink; StyleRuleBase* rule; // The content of the three below HeapVectors are guaranteed to be kept alive by - // the corresponding m_parsedRules, m_floatingMediaQueryExpList, and m_parsedKeyFrames + // the corresponding m_parsedRules, and m_parsedKeyFrames // lists in BisonCSSParser.h. Vector >* ruleList; - Vector >* mediaQueryExpList; Vector >* keyframeRuleList; CSSParserSelector* selector; Vector >* selectorList; CSSSelector::AttributeMatchType attributeMatchType; - MediaQuerySet* mediaList; - MediaQuery* mediaQuery; - MediaQuery::Restrictor mediaQueryRestrictor; - MediaQueryExp* mediaQueryExp; CSSParserValue value; CSSParserValueList* valueList; StyleKeyframe* keyframe; @@ -174,12 +166,10 @@ inline static CSSParserValue makeIdentValue(CSSParserString string) %nonassoc error %left '|' -%token MEDIA_SYM %token SUPPORTS_SYM %token FONT_FACE_SYM %token CHARSET_SYM %token INTERNAL_DECLS_SYM -%token INTERNAL_MEDIALIST_SYM %token INTERNAL_RULE_SYM %token INTERNAL_SELECTOR_SYM %token INTERNAL_VALUE_SYM @@ -191,10 +181,6 @@ inline static CSSParserValue makeIdentValue(CSSParserString string) %token ATKEYWORD %token IMPORTANT_SYM -%token MEDIA_ONLY -%token MEDIA_NOT -%token MEDIA_AND -%token MEDIA_OR %token SUPPORTS_NOT %token SUPPORTS_AND @@ -240,7 +226,6 @@ inline static CSSParserValue makeIdentValue(CSSParserString string) %token UNICODERANGE %type ruleset -%type media %type font_face %type keyframes %type rule @@ -253,18 +238,6 @@ inline static CSSParserValue makeIdentValue(CSSParserString string) %type keyframes_rule_start %type ident_or_string -%type medium - -%type media_list -%type maybe_media_list -%type mq_list -%type media_query -%type valid_media_query -%type maybe_media_restrictor -%type maybe_media_value -%type media_query_exp -%type media_query_exp_list -%type maybe_and_media_query_exp_list %type supports_condition %type supports_condition_in_parens @@ -332,7 +305,6 @@ stylesheet: | internal_rule | internal_selector | internal_value - | internal_medialist | internal_keyframe_rule | internal_keyframe_key_list | internal_supports_condition @@ -372,12 +344,6 @@ internal_value: } ; -internal_medialist: - INTERNAL_MEDIALIST_SYM maybe_space location_label maybe_media_list TOKEN_EOF { - parser->m_mediaList = $4; - } -; - internal_selector: INTERNAL_SELECTOR_SYM maybe_space selector_list TOKEN_EOF { if (parser->m_selectorListForParseSelector) @@ -446,7 +412,6 @@ rule_list: valid_rule: ruleset - | media | font_face | keyframes | supports @@ -491,7 +456,6 @@ block_rule_recovery: block_valid_rule: ruleset | font_face - | media | keyframes | supports ; @@ -507,145 +471,18 @@ block_rule: } ; -maybe_media_value: - /*empty*/ { - $$ = 0; - } - | ':' maybe_space expr { - $$ = $3; - } - ; - -media_query_exp: - '(' maybe_space IDENT maybe_space maybe_media_value closing_parenthesis { - parser->tokenToLowerCase($3); - $$ = parser->createFloatingMediaQueryExp($3, $5); - if (!$$) - YYERROR; - } - | '(' error error_recovery closing_parenthesis { - YYERROR; - } - ; - -media_query_exp_list: - media_query_exp { - $$ = parser->createFloatingMediaQueryExpList(); - $$->append(parser->sinkFloatingMediaQueryExp($1)); - } - | media_query_exp_list maybe_space MEDIA_AND maybe_space media_query_exp { - $$ = $1; - $$->append(parser->sinkFloatingMediaQueryExp($5)); - } - ; - -maybe_and_media_query_exp_list: - maybe_space { - $$ = parser->createFloatingMediaQueryExpList(); - } - | maybe_space MEDIA_AND maybe_space media_query_exp_list maybe_space { - $$ = $4; - } - ; - -maybe_media_restrictor: - /*empty*/ { - $$ = MediaQuery::None; - } - | MEDIA_ONLY maybe_space { - $$ = MediaQuery::Only; - } - | MEDIA_NOT maybe_space { - $$ = MediaQuery::Not; - } - ; - -valid_media_query: - media_query_exp_list maybe_space { - $$ = parser->createFloatingMediaQuery(parser->sinkFloatingMediaQueryExpList($1)); - } - | maybe_media_restrictor medium maybe_and_media_query_exp_list { - parser->tokenToLowerCase($2); - $$ = parser->createFloatingMediaQuery($1, $2, parser->sinkFloatingMediaQueryExpList($3)); - } - ; - -media_query: - valid_media_query - | valid_media_query error error_location rule_error_recovery { - parser->reportError(parser->lastLocationLabel(), InvalidMediaQueryCSSError); - $$ = parser->createFloatingNotAllQuery(); - } - | error error_location rule_error_recovery { - parser->reportError(parser->lastLocationLabel(), InvalidMediaQueryCSSError); - $$ = parser->createFloatingNotAllQuery(); - } - ; - -maybe_media_list: - /* empty */ { - $$ = parser->createMediaQuerySet(); - } - | media_list - ; - -media_list: - media_query { - $$ = parser->createMediaQuerySet(); - $$->addMediaQuery(parser->sinkFloatingMediaQuery($1)); - } - | mq_list media_query { - $$ = $1; - $$->addMediaQuery(parser->sinkFloatingMediaQuery($2)); - } - | mq_list { - $$ = $1; - $$->addMediaQuery(parser->sinkFloatingMediaQuery(parser->createFloatingNotAllQuery())); - } - ; - -mq_list: - media_query ',' maybe_space location_label { - $$ = parser->createMediaQuerySet(); - $$->addMediaQuery(parser->sinkFloatingMediaQuery($1)); - } - | mq_list media_query ',' maybe_space location_label { - $$ = $1; - $$->addMediaQuery(parser->sinkFloatingMediaQuery($2)); - } - ; - at_rule_body_start: /* empty */ { parser->startRuleBody(); } ; -before_media_rule: - /* empty */ { - parser->startRuleHeader(CSSRuleSourceData::MEDIA_RULE); - } - ; - at_rule_header_end_maybe_space: maybe_space { parser->endRuleHeader(); } ; -media_rule_start: - before_media_rule MEDIA_SYM maybe_space; - -media: - media_rule_start maybe_media_list '{' at_rule_header_end at_rule_body_start maybe_space block_rule_body closing_brace { - $$ = parser->createMediaRule($2, $7); - } - ; - -medium: - IDENT - ; - supports: before_supports_rule SUPPORTS_SYM maybe_space supports_condition at_supports_rule_header_end '{' at_rule_body_start maybe_space block_rule_body closing_brace { $$ = parser->createSupportsRule($4, $9); @@ -1425,7 +1262,6 @@ invalid_rule: } | regular_invalid_at_rule_header at_invalid_rule_header_end ';' | regular_invalid_at_rule_header at_invalid_rule_header_end invalid_block - | media_rule_start maybe_media_list ';' ; invalid_rule_header: @@ -1433,7 +1269,6 @@ invalid_rule_header: parser->reportError($2, InvalidRuleCSSError); } | regular_invalid_at_rule_header at_invalid_rule_header_end - | media_rule_start maybe_media_list ; at_invalid_rule_header_end: diff --git a/engine/core/css/parser/CSSTokenizer-in.cpp b/engine/core/css/parser/CSSTokenizer-in.cpp index 246d25a553f..3b48c6417c7 100644 --- a/engine/core/css/parser/CSSTokenizer-in.cpp +++ b/engine/core/css/parser/CSSTokenizer-in.cpp @@ -27,7 +27,6 @@ #include "sky/engine/config.h" #include "sky/engine/core/css/parser/CSSTokenizer.h" -#include "sky/engine/core/css/MediaQuery.h" #include "sky/engine/core/css/StyleRule.h" #include "sky/engine/core/css/parser/BisonCSSParser.h" #include "sky/engine/core/css/parser/CSSParserValues.h" @@ -50,7 +49,7 @@ enum CharacterType { CharacterOther, CharacterNull, CharacterWhiteSpace, - CharacterEndMediaQueryOrSupports, + CharacterEndSupports, CharacterEndNthChild, CharacterQuote, CharacterExclamationMark, @@ -129,7 +128,7 @@ static const CharacterType typesOfASCIICharacters[128] = { /* 56 - 8 */ CharacterNumber, /* 57 - 9 */ CharacterNumber, /* 58 - : */ CharacterOther, -/* 59 - ; */ CharacterEndMediaQueryOrSupports, +/* 59 - ; */ CharacterEndSupports, /* 60 - < */ CharacterLess, /* 61 - = */ CharacterOther, /* 62 - > */ CharacterOther, @@ -193,7 +192,7 @@ static const CharacterType typesOfASCIICharacters[128] = { /* 120 - x */ CharacterIdentifierStart, /* 121 - y */ CharacterIdentifierStart, /* 122 - z */ CharacterIdentifierStart, -/* 123 - { */ CharacterEndMediaQueryOrSupports, +/* 123 - { */ CharacterEndSupports, /* 124 - | */ CharacterVerticalBar, /* 125 - } */ CharacterOther, /* 126 - ~ */ CharacterTilde, @@ -755,28 +754,6 @@ inline bool CSSTokenizer::detectFunctionTypeToken(int length) return false; } -template -inline void CSSTokenizer::detectMediaQueryToken(int length) -{ - ASSERT(m_parsingMode == MediaQueryMode); - CharacterType* name = tokenStart(); - - SWITCH(name, length) { - CASE("and") { - m_token = MEDIA_AND; - } - CASE("not") { - m_token = MEDIA_NOT; - } - CASE("only") { - m_token = MEDIA_ONLY; - } - CASE("or") { - m_token = MEDIA_OR; - } - } -} - template inline void CSSTokenizer::detectNumberToken(CharacterType* type, int length) { @@ -903,10 +880,6 @@ inline void CSSTokenizer::detectAtToken(int length, bool hasEscape) CASE("keyframes") { m_token = KEYFRAMES_SYM; } - CASE("media") { - m_parsingMode = MediaQueryMode; - m_token = MEDIA_SYM; - } CASE("supports") { m_parsingMode = SupportsMode; m_token = SUPPORTS_SYM; @@ -927,12 +900,6 @@ inline void CSSTokenizer::detectAtToken(int length, bool hasEscape) if (LIKELY(!hasEscape && m_internal)) m_token = INTERNAL_SELECTOR_SYM; } - CASE("-internal-medialist") { - if (!m_internal) - return; - m_parsingMode = MediaQueryMode; - m_token = INTERNAL_MEDIALIST_SYM; - } CASE("-internal-keyframe-rule") { if (LIKELY(!hasEscape && m_internal)) m_token = INTERNAL_KEYFRAME_RULE_SYM; @@ -1034,9 +1001,7 @@ restartAfterComment: parseURI(yylval->string); } } else if (UNLIKELY(m_parsingMode != NormalMode) && !hasEscape) { - if (m_parsingMode == MediaQueryMode) { - detectMediaQueryToken(result - tokenStart()); - } else if (m_parsingMode == SupportsMode) { + if (m_parsingMode == SupportsMode) { detectSupportsToken(result - tokenStart()); } } @@ -1132,8 +1097,8 @@ restartAfterComment: } while (*currentCharacter() <= ' ' && (typesOfASCIICharacters[*currentCharacter()] == CharacterWhiteSpace)); break; - case CharacterEndMediaQueryOrSupports: - if (m_parsingMode == MediaQueryMode || m_parsingMode == SupportsMode) + case CharacterEndSupports: + if (m_parsingMode == SupportsMode) m_parsingMode = NormalMode; break; diff --git a/engine/core/css/parser/CSSTokenizer.h b/engine/core/css/parser/CSSTokenizer.h index 74c8dc01acc..c83fb667573 100644 --- a/engine/core/css/parser/CSSTokenizer.h +++ b/engine/core/css/parser/CSSTokenizer.h @@ -124,8 +124,6 @@ private: template inline bool detectFunctionTypeToken(int); template - inline void detectMediaQueryToken(int); - template inline void detectNumberToken(CharacterType*, int); template inline void detectDashToken(int); @@ -144,7 +142,6 @@ private: enum ParsingMode { NormalMode, - MediaQueryMode, SupportsMode, }; diff --git a/engine/core/css/resolver/ScopedStyleResolver.cpp b/engine/core/css/resolver/ScopedStyleResolver.cpp index c14ea180cdb..0872d349414 100644 --- a/engine/core/css/resolver/ScopedStyleResolver.cpp +++ b/engine/core/css/resolver/ScopedStyleResolver.cpp @@ -39,14 +39,14 @@ namespace blink { -void ScopedStyleResolver::addRulesFromSheet(CSSStyleSheet* cssSheet, const MediaQueryEvaluator& medium, StyleResolver* resolver) +void ScopedStyleResolver::addRulesFromSheet(CSSStyleSheet* cssSheet, StyleResolver* resolver) { m_authorStyleSheets.append(cssSheet); unsigned index = m_authorStyleSheets.size() - 1; StyleSheetContents* sheet = cssSheet->contents(); AddRuleFlags addRuleFlags = RuleHasNoSpecialState; - const RuleSet& ruleSet = sheet->ensureRuleSet(medium, addRuleFlags); + const RuleSet& ruleSet = sheet->ensureRuleSet(addRuleFlags); resolver->addMediaQueryResults(ruleSet.viewportDependentMediaQueryResults()); resolver->processScopedRules(ruleSet, cssSheet, index, treeScope().rootNode()); } diff --git a/engine/core/css/resolver/ScopedStyleResolver.h b/engine/core/css/resolver/ScopedStyleResolver.h index ba24a9cac0e..f12de44beb7 100644 --- a/engine/core/css/resolver/ScopedStyleResolver.h +++ b/engine/core/css/resolver/ScopedStyleResolver.h @@ -37,7 +37,6 @@ namespace blink { -class MediaQueryEvaluator; class StyleResolver; class StyleSheetContents; @@ -58,7 +57,7 @@ public: void addKeyframeStyle(PassRefPtr); void collectMatchingAuthorRules(ElementRuleCollector&, bool includeEmptyRules, bool applyAuthorStyles, CascadeScope, CascadeOrder = ignoreCascadeOrder); - void addRulesFromSheet(CSSStyleSheet*, const MediaQueryEvaluator&, StyleResolver*); + void addRulesFromSheet(CSSStyleSheet*, StyleResolver*); void collectFeaturesTo(RuleFeatureSet&, HashSet& visitedSharedStyleSheetContents) const; void resetAuthorStyle(); diff --git a/engine/core/css/resolver/StyleResolver.cpp b/engine/core/css/resolver/StyleResolver.cpp index 78bc0384add..144b45c9462 100644 --- a/engine/core/css/resolver/StyleResolver.cpp +++ b/engine/core/css/resolver/StyleResolver.cpp @@ -101,7 +101,6 @@ static RuleSet& defaultStyles() { DEFINE_STATIC_LOCAL(RefPtr, styleSheet, ()); DEFINE_STATIC_LOCAL(OwnPtr, ruleSet, ()); - DEFINE_STATIC_LOCAL(const MediaQueryEvaluator, screenEval, ("screen")); if (ruleSet) return *ruleSet; @@ -121,7 +120,7 @@ static RuleSet& defaultStyles() styleSheet->parseString(cssText); ruleSet = RuleSet::create(); - ruleSet->addRulesFromSheet(styleSheet.get(), screenEval); + ruleSet->addRulesFromSheet(styleSheet.get()); return *ruleSet; } @@ -170,7 +169,7 @@ void StyleResolver::appendCSSStyleSheet(CSSStyleSheet* cssSheet) TreeScope& treeScope = ownerNode->treeScope(); ScopedStyleResolver& resolver = treeScope.ensureScopedStyleResolver(); document().styleEngine()->addScopedStyleResolver(&resolver); - resolver.addRulesFromSheet(cssSheet, *m_medium, this); + resolver.addRulesFromSheet(cssSheet, this); } void StyleResolver::appendPendingAuthorStyleSheets() diff --git a/engine/core/css/resolver/StyleResolver.h b/engine/core/css/resolver/StyleResolver.h index 0c110918226..5937cffd716 100644 --- a/engine/core/css/resolver/StyleResolver.h +++ b/engine/core/css/resolver/StyleResolver.h @@ -132,8 +132,6 @@ public: void applyPropertiesToStyle(const CSSPropertyValue* properties, size_t count, RenderStyle*); void addMediaQueryResults(const MediaQueryResultList&); - MediaQueryResultList* viewportDependentMediaQueryResults() { return &m_viewportDependentMediaQueryResults; } - bool hasViewportDependentMediaQueries() const { return !m_viewportDependentMediaQueryResults.isEmpty(); } bool mediaQueryAffectedByViewportChange() const; // FIXME: Rename to reflect the purpose, like didChangeFontSize or something. diff --git a/engine/core/dom/Document.cpp b/engine/core/dom/Document.cpp index 05f9916a1dd..feeb3005d64 100644 --- a/engine/core/dom/Document.cpp +++ b/engine/core/dom/Document.cpp @@ -425,7 +425,7 @@ MediaQueryMatcher& Document::mediaQueryMatcher() void Document::mediaQueryAffectingValueChanged() { m_evaluateMediaQueriesOnStyleRecalc = true; - styleEngine()->clearMediaQueryRuleSetStyleSheets(); + // FIXME(sky): Actually update media queries from