mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Remove @media rules.
In sky we only support inline styles and <style media>, not @media rules. This removes the Bison support for parsing them which was also removed in Blink in favor of the other media query parser which was added for use on the pre-scanner thread. R=eseidel@chromium.org Review URL: https://codereview.chromium.org/807703003
This commit is contained in:
parent
ca96d732de
commit
f44ab040a3
@ -72,11 +72,7 @@ PassRefPtr<MediaQuerySet> 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> MediaQuerySet::createOffMainThread(const String& mediaString)
|
||||
|
||||
@ -149,7 +149,7 @@ void RuleSet::addKeyframesRule(StyleRuleKeyframes* rule)
|
||||
m_keyframesRules.append(rule);
|
||||
}
|
||||
|
||||
void RuleSet::addChildRules(const Vector<RefPtr<StyleRuleBase> >& rules, const MediaQueryEvaluator& medium, AddRuleFlags addRuleFlags)
|
||||
void RuleSet::addChildRules(const Vector<RefPtr<StyleRuleBase> >& 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<RefPtr<StyleRuleBase> >& 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>(addRuleFlags | RuleCanUseFastCheckSelector);
|
||||
addChildRules(sheet->childRules(), medium, addRuleFlags);
|
||||
addChildRules(sheet->childRules(), addRuleFlags);
|
||||
}
|
||||
|
||||
void RuleSet::addStyleRule(StyleRule* rule, AddRuleFlags addRuleFlags)
|
||||
|
||||
@ -40,7 +40,6 @@ enum AddRuleFlags {
|
||||
};
|
||||
|
||||
class CSSSelector;
|
||||
class MediaQueryEvaluator;
|
||||
class StyleSheetContents;
|
||||
|
||||
class RuleData {
|
||||
@ -78,7 +77,7 @@ class RuleSet {
|
||||
public:
|
||||
static PassOwnPtr<RuleSet> 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<RefPtr<StyleRuleBase> >&, const MediaQueryEvaluator& medium, AddRuleFlags);
|
||||
void addChildRules(const Vector<RefPtr<StyleRuleBase> >&, AddRuleFlags);
|
||||
bool findBestRuleSetAndAdd(const CSSSelector&, RuleData&);
|
||||
|
||||
void compactRules();
|
||||
|
||||
@ -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<RefPtr<StyleRuleBase> >& adoptR
|
||||
m_childRules.swap(adoptRule);
|
||||
}
|
||||
|
||||
StyleRuleMedia::StyleRuleMedia(PassRefPtr<MediaQuerySet> media, Vector<RefPtr<StyleRuleBase> >& adoptRules)
|
||||
: StyleRuleGroup(Media, adoptRules)
|
||||
, m_mediaQueries(media)
|
||||
{
|
||||
}
|
||||
|
||||
StyleRuleSupports::StyleRuleSupports(const String& conditionText, bool conditionIsSupported, Vector<RefPtr<StyleRuleBase> >& adoptRules)
|
||||
: StyleRuleGroup(Supports, adoptRules)
|
||||
, m_conditionText(conditionText)
|
||||
|
||||
@ -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<RefPtr<StyleRuleBase> > m_childRules;
|
||||
};
|
||||
|
||||
class StyleRuleMedia final : public StyleRuleGroup {
|
||||
WTF_MAKE_NONCOPYABLE(StyleRuleMedia);
|
||||
public:
|
||||
static PassRefPtr<StyleRuleMedia> create(PassRefPtr<MediaQuerySet> media, Vector<RefPtr<StyleRuleBase> >& adoptRules)
|
||||
{
|
||||
return adoptRef(new StyleRuleMedia(media, adoptRules));
|
||||
}
|
||||
|
||||
MediaQuerySet* mediaQueries() const { return m_mediaQueries.get(); }
|
||||
|
||||
private:
|
||||
StyleRuleMedia(PassRefPtr<MediaQuerySet>, Vector<RefPtr<StyleRuleBase> >& adoptRules);
|
||||
|
||||
RefPtr<MediaQuerySet> 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
|
||||
|
||||
@ -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<StyleRuleBase> 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();
|
||||
}
|
||||
|
||||
@ -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<RuleSet> m_ruleSet;
|
||||
Vector<RefPtr<StyleRuleBase> > m_childRules;
|
||||
CSSParserContext m_parserContext;
|
||||
|
||||
@ -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<MediaQuerySet> 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<MediaQueryExp> BisonCSSParser::sinkFloatingMediaQueryExp(MediaQueryExp* expression)
|
||||
{
|
||||
ASSERT_UNUSED(expression, expression == m_floatingMediaQueryExp);
|
||||
return m_floatingMediaQueryExp.release();
|
||||
}
|
||||
|
||||
Vector<OwnPtr<MediaQueryExp> >* BisonCSSParser::createFloatingMediaQueryExpList()
|
||||
{
|
||||
m_floatingMediaQueryExpList = adoptPtr(new Vector<OwnPtr<MediaQueryExp> >);
|
||||
return m_floatingMediaQueryExpList.get();
|
||||
}
|
||||
|
||||
PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > > BisonCSSParser::sinkFloatingMediaQueryExpList(Vector<OwnPtr<MediaQueryExp> >* list)
|
||||
{
|
||||
ASSERT_UNUSED(list, list == m_floatingMediaQueryExpList);
|
||||
return m_floatingMediaQueryExpList.release();
|
||||
}
|
||||
|
||||
MediaQuery* BisonCSSParser::createFloatingMediaQuery(MediaQuery::Restrictor restrictor, const AtomicString& mediaType, PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > > expressions)
|
||||
{
|
||||
m_floatingMediaQuery = adoptPtr(new MediaQuery(restrictor, mediaType, expressions));
|
||||
return m_floatingMediaQuery.get();
|
||||
}
|
||||
|
||||
MediaQuery* BisonCSSParser::createFloatingMediaQuery(PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > > expressions)
|
||||
{
|
||||
return createFloatingMediaQuery(MediaQuery::None, AtomicString("all", AtomicString::ConstructFromLiteral), expressions);
|
||||
}
|
||||
|
||||
MediaQuery* BisonCSSParser::createFloatingNotAllQuery()
|
||||
{
|
||||
return createFloatingMediaQuery(MediaQuery::Not, AtomicString("all", AtomicString::ConstructFromLiteral), sinkFloatingMediaQueryExpList(createFloatingMediaQueryExpList()));
|
||||
}
|
||||
|
||||
PassOwnPtr<MediaQuery> BisonCSSParser::sinkFloatingMediaQuery(MediaQuery* query)
|
||||
{
|
||||
ASSERT_UNUSED(query, query == m_floatingMediaQuery);
|
||||
return m_floatingMediaQuery.release();
|
||||
}
|
||||
|
||||
Vector<RefPtr<StyleKeyframe> >* BisonCSSParser::createFloatingKeyframeVector()
|
||||
{
|
||||
m_floatingKeyframeVector = adoptPtr(new Vector<RefPtr<StyleKeyframe> >());
|
||||
@ -1432,29 +1371,6 @@ PassOwnPtr<Vector<RefPtr<StyleKeyframe> > > BisonCSSParser::sinkFloatingKeyframe
|
||||
return m_floatingKeyframeVector.release();
|
||||
}
|
||||
|
||||
MediaQuerySet* BisonCSSParser::createMediaQuerySet()
|
||||
{
|
||||
RefPtr<MediaQuerySet> 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<StyleRuleMedia> 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;
|
||||
|
||||
@ -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<CSSValue> parseAnimationTimingFunctionValue(const String&);
|
||||
bool parseDeclaration(MutableStylePropertySet*, const String&, CSSParserObserver*, StyleSheetContents* contextStyleSheet);
|
||||
static PassRefPtr<ImmutableStylePropertySet> parseInlineStyleDeclaration(const String&, Element*);
|
||||
PassRefPtr<MediaQuerySet> parseMediaQueryList(const String&);
|
||||
PassOwnPtr<Vector<double> > 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<Vector<RefPtr<StyleKeyframe> > >, bool isPrefixed);
|
||||
|
||||
typedef Vector<RefPtr<StyleRuleBase> > RuleList;
|
||||
StyleRuleBase* createMediaRule(MediaQuerySet*, RuleList*);
|
||||
RuleList* createRuleList();
|
||||
RuleList* appendRule(RuleList*, StyleRuleBase*);
|
||||
StyleRuleBase* createStyleRule(Vector<OwnPtr<CSSParserSelector> >* selectors);
|
||||
@ -142,15 +136,6 @@ public:
|
||||
void startDeclarationsForMarginBox();
|
||||
void endDeclarationsForMarginBox();
|
||||
|
||||
MediaQueryExp* createFloatingMediaQueryExp(const AtomicString&, CSSParserValueList*);
|
||||
PassOwnPtr<MediaQueryExp> sinkFloatingMediaQueryExp(MediaQueryExp*);
|
||||
Vector<OwnPtr<MediaQueryExp> >* createFloatingMediaQueryExpList();
|
||||
PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > > sinkFloatingMediaQueryExpList(Vector<OwnPtr<MediaQueryExp> >*);
|
||||
MediaQuery* createFloatingMediaQuery(MediaQuery::Restrictor, const AtomicString&, PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > >);
|
||||
MediaQuery* createFloatingMediaQuery(PassOwnPtr<Vector<OwnPtr<MediaQueryExp> > >);
|
||||
MediaQuery* createFloatingNotAllQuery();
|
||||
PassOwnPtr<MediaQuery> sinkFloatingMediaQuery(MediaQuery*);
|
||||
|
||||
Vector<RefPtr<StyleKeyframe> >* createFloatingKeyframeVector();
|
||||
PassOwnPtr<Vector<RefPtr<StyleKeyframe> > > sinkFloatingKeyframeVector(Vector<RefPtr<StyleKeyframe> >*);
|
||||
|
||||
@ -174,7 +159,6 @@ public:
|
||||
RawPtr<StyleSheetContents> m_styleSheet;
|
||||
RefPtr<StyleRuleBase> m_rule;
|
||||
RefPtr<StyleKeyframe> m_keyframe;
|
||||
RefPtr<MediaQuerySet> m_mediaList;
|
||||
OwnPtr<CSSParserValueList> m_valueList;
|
||||
bool m_supportsCondition;
|
||||
|
||||
@ -251,17 +235,12 @@ private:
|
||||
|
||||
Vector<RefPtr<StyleRuleBase> > m_parsedRules;
|
||||
Vector<RefPtr<StyleKeyframe> > m_parsedKeyframes;
|
||||
Vector<RefPtr<MediaQuerySet> > m_parsedMediaQuerySets;
|
||||
Vector<OwnPtr<RuleList> > m_parsedRuleLists;
|
||||
Vector<CSSParserSelector*> m_floatingSelectors;
|
||||
Vector<Vector<OwnPtr<CSSParserSelector> >*> m_floatingSelectorVectors;
|
||||
Vector<CSSParserValueList*> m_floatingValueLists;
|
||||
Vector<CSSParserFunction*> m_floatingFunctions;
|
||||
|
||||
OwnPtr<MediaQuery> m_floatingMediaQuery;
|
||||
OwnPtr<MediaQueryExp> m_floatingMediaQueryExp;
|
||||
OwnPtr<Vector<OwnPtr<MediaQueryExp> > > m_floatingMediaQueryExpList;
|
||||
|
||||
OwnPtr<Vector<RefPtr<StyleKeyframe> > > m_floatingKeyframeVector;
|
||||
|
||||
Vector<OwnPtr<CSSParserSelector> > m_reusableSelectorVector;
|
||||
|
||||
@ -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<StyleRuleBase> rule = parser.parseRule(nullptr, String(testCases[i].input));
|
||||
|
||||
EXPECT_TRUE(rule->isMediaRule());
|
||||
testMediaQuery(testCases[i].output, *static_cast<StyleRuleMedia*>(rule.get())->mediaQueries());
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace blink
|
||||
|
||||
@ -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 <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -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<RefPtr<StyleRuleBase> >* ruleList;
|
||||
Vector<OwnPtr<MediaQueryExp> >* mediaQueryExpList;
|
||||
Vector<RefPtr<StyleKeyframe> >* keyframeRuleList;
|
||||
CSSParserSelector* selector;
|
||||
Vector<OwnPtr<CSSParserSelector> >* 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 <string> UNICODERANGE
|
||||
|
||||
%type <rule> ruleset
|
||||
%type <rule> media
|
||||
%type <rule> font_face
|
||||
%type <rule> keyframes
|
||||
%type <rule> rule
|
||||
@ -253,18 +238,6 @@ inline static CSSParserValue makeIdentValue(CSSParserString string)
|
||||
%type <boolean> keyframes_rule_start
|
||||
|
||||
%type <string> ident_or_string
|
||||
%type <string> medium
|
||||
|
||||
%type <mediaList> media_list
|
||||
%type <mediaList> maybe_media_list
|
||||
%type <mediaList> mq_list
|
||||
%type <mediaQuery> media_query
|
||||
%type <mediaQuery> valid_media_query
|
||||
%type <mediaQueryRestrictor> maybe_media_restrictor
|
||||
%type <valueList> maybe_media_value
|
||||
%type <mediaQueryExp> media_query_exp
|
||||
%type <mediaQueryExpList> media_query_exp_list
|
||||
%type <mediaQueryExpList> maybe_and_media_query_exp_list
|
||||
|
||||
%type <boolean> supports_condition
|
||||
%type <boolean> 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:
|
||||
|
||||
@ -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 <typename CharacterType>
|
||||
inline void CSSTokenizer::detectMediaQueryToken(int length)
|
||||
{
|
||||
ASSERT(m_parsingMode == MediaQueryMode);
|
||||
CharacterType* name = tokenStart<CharacterType>();
|
||||
|
||||
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 <typename CharacterType>
|
||||
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<UChar>(yylval->string);
|
||||
}
|
||||
} else if (UNLIKELY(m_parsingMode != NormalMode) && !hasEscape) {
|
||||
if (m_parsingMode == MediaQueryMode) {
|
||||
detectMediaQueryToken<SrcCharacterType>(result - tokenStart<SrcCharacterType>());
|
||||
} else if (m_parsingMode == SupportsMode) {
|
||||
if (m_parsingMode == SupportsMode) {
|
||||
detectSupportsToken<SrcCharacterType>(result - tokenStart<SrcCharacterType>());
|
||||
}
|
||||
}
|
||||
@ -1132,8 +1097,8 @@ restartAfterComment:
|
||||
} while (*currentCharacter<SrcCharacterType>() <= ' ' && (typesOfASCIICharacters[*currentCharacter<SrcCharacterType>()] == CharacterWhiteSpace));
|
||||
break;
|
||||
|
||||
case CharacterEndMediaQueryOrSupports:
|
||||
if (m_parsingMode == MediaQueryMode || m_parsingMode == SupportsMode)
|
||||
case CharacterEndSupports:
|
||||
if (m_parsingMode == SupportsMode)
|
||||
m_parsingMode = NormalMode;
|
||||
break;
|
||||
|
||||
|
||||
@ -124,8 +124,6 @@ private:
|
||||
template <typename CharacterType>
|
||||
inline bool detectFunctionTypeToken(int);
|
||||
template <typename CharacterType>
|
||||
inline void detectMediaQueryToken(int);
|
||||
template <typename CharacterType>
|
||||
inline void detectNumberToken(CharacterType*, int);
|
||||
template <typename CharacterType>
|
||||
inline void detectDashToken(int);
|
||||
@ -144,7 +142,6 @@ private:
|
||||
|
||||
enum ParsingMode {
|
||||
NormalMode,
|
||||
MediaQueryMode,
|
||||
SupportsMode,
|
||||
};
|
||||
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
@ -37,7 +37,6 @@
|
||||
|
||||
namespace blink {
|
||||
|
||||
class MediaQueryEvaluator;
|
||||
class StyleResolver;
|
||||
class StyleSheetContents;
|
||||
|
||||
@ -58,7 +57,7 @@ public:
|
||||
void addKeyframeStyle(PassRefPtr<StyleRuleKeyframes>);
|
||||
|
||||
void collectMatchingAuthorRules(ElementRuleCollector&, bool includeEmptyRules, bool applyAuthorStyles, CascadeScope, CascadeOrder = ignoreCascadeOrder);
|
||||
void addRulesFromSheet(CSSStyleSheet*, const MediaQueryEvaluator&, StyleResolver*);
|
||||
void addRulesFromSheet(CSSStyleSheet*, StyleResolver*);
|
||||
void collectFeaturesTo(RuleFeatureSet&, HashSet<const StyleSheetContents*>& visitedSharedStyleSheetContents) const;
|
||||
void resetAuthorStyle();
|
||||
|
||||
|
||||
@ -101,7 +101,6 @@ static RuleSet& defaultStyles()
|
||||
{
|
||||
DEFINE_STATIC_LOCAL(RefPtr<StyleSheetContents>, styleSheet, ());
|
||||
DEFINE_STATIC_LOCAL(OwnPtr<RuleSet>, 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()
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -425,7 +425,7 @@ MediaQueryMatcher& Document::mediaQueryMatcher()
|
||||
void Document::mediaQueryAffectingValueChanged()
|
||||
{
|
||||
m_evaluateMediaQueriesOnStyleRecalc = true;
|
||||
styleEngine()->clearMediaQueryRuleSetStyleSheets();
|
||||
// FIXME(sky): Actually update media queries from <style media>.
|
||||
}
|
||||
|
||||
Location* Document::location() const
|
||||
|
||||
@ -193,24 +193,6 @@ void StyleEngine::removeStyleSheetCandidateNode(Node* node, ContainerNode* scopi
|
||||
m_activeTreeScopes.remove(&treeScope);
|
||||
}
|
||||
|
||||
void StyleEngine::clearMediaQueryRuleSetOnTreeScopeStyleSheets(TreeScopeSet treeScopes)
|
||||
{
|
||||
for (TreeScopeSet::iterator it = treeScopes.begin(); it != treeScopes.end(); ++it) {
|
||||
TreeScope& treeScope = **it;
|
||||
ASSERT(treeScope != m_document);
|
||||
ShadowTreeStyleSheetCollection* collection = static_cast<ShadowTreeStyleSheetCollection*>(styleSheetCollectionFor(treeScope));
|
||||
ASSERT(collection);
|
||||
collection->clearMediaQueryRuleSetStyleSheets();
|
||||
}
|
||||
}
|
||||
|
||||
void StyleEngine::clearMediaQueryRuleSetStyleSheets()
|
||||
{
|
||||
documentStyleSheetCollection()->clearMediaQueryRuleSetStyleSheets();
|
||||
clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_activeTreeScopes);
|
||||
clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_dirtyTreeScopes);
|
||||
}
|
||||
|
||||
void StyleEngine::updateActiveStyleSheets()
|
||||
{
|
||||
ASSERT(isMaster());
|
||||
|
||||
@ -80,7 +80,6 @@ public:
|
||||
void addStyleSheetCandidateNode(Node*, bool createdByParser);
|
||||
void removeStyleSheetCandidateNode(Node*, ContainerNode* scopingNode, TreeScope&);
|
||||
|
||||
void clearMediaQueryRuleSetStyleSheets();
|
||||
void updateActiveStyleSheets();
|
||||
|
||||
bool ignoringPendingStylesheets() const { return m_ignorePendingStylesheets; }
|
||||
@ -148,7 +147,6 @@ private:
|
||||
|
||||
typedef ListHashSet<TreeScope*, 16> TreeScopeSet;
|
||||
static void insertTreeScopeInDocumentOrder(TreeScopeSet&, TreeScope*);
|
||||
void clearMediaQueryRuleSetOnTreeScopeStyleSheets(TreeScopeSet treeScopes);
|
||||
|
||||
void createResolver();
|
||||
|
||||
|
||||
@ -58,13 +58,4 @@ void TreeScopeStyleSheetCollection::removeStyleSheetCandidateNode(Node* node, Co
|
||||
m_styleSheetCandidateNodes.remove(node);
|
||||
}
|
||||
|
||||
void TreeScopeStyleSheetCollection::clearMediaQueryRuleSetStyleSheets()
|
||||
{
|
||||
for (size_t i = 0; i < m_activeAuthorStyleSheets.size(); ++i) {
|
||||
StyleSheetContents* contents = m_activeAuthorStyleSheets[i]->contents();
|
||||
if (contents->hasMediaQueries())
|
||||
contents->clearRuleSet();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -54,8 +54,6 @@ public:
|
||||
|
||||
DocumentOrderedList& styleSheetCandidateNodes() { return m_styleSheetCandidateNodes; }
|
||||
|
||||
void clearMediaQueryRuleSetStyleSheets();
|
||||
|
||||
protected:
|
||||
explicit TreeScopeStyleSheetCollection(TreeScope&);
|
||||
|
||||
|
||||
@ -105,7 +105,6 @@ private:
|
||||
void setBestFitURLAndDPRFromImageCandidate(const ImageCandidate&);
|
||||
HTMLImageLoader& imageLoader() const { return *m_imageLoader; }
|
||||
void notifyViewportChanged();
|
||||
void createMediaQueryListIfDoesNotExist();
|
||||
|
||||
OwnPtr<HTMLImageLoader> m_imageLoader;
|
||||
RefPtr<ViewportChangeListener> m_listener;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user