Chromium Code Reviews| Index: Source/core/css/resolver/StyleResolver.cpp |
| diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp |
| index 718fed25218b0d3695173c328ef170524980d2d6..5e5e05734f82fba594d0d06c39659134604a67b4 100644 |
| --- a/Source/core/css/resolver/StyleResolver.cpp |
| +++ b/Source/core/css/resolver/StyleResolver.cpp |
| @@ -53,6 +53,7 @@ |
| #include "core/css/CSSSelectorList.h" |
| #include "core/css/CSSStyleRule.h" |
| #include "core/css/CSSValueList.h" |
| +#include "core/css/CSSValuePool.h" |
| #include "core/css/CSSVariableValue.h" |
| #include "core/css/ElementRuleCollector.h" |
| #include "core/css/FontFeatureValue.h" |
| @@ -87,7 +88,9 @@ |
| #include "core/page/Frame.h" |
| #include "core/page/FrameView.h" |
| #include "core/page/Page.h" |
| +#include "core/page/PageGroup.h" |
| #include "core/page/Settings.h" |
| +#include "core/page/UserStyleSheet.h" |
| #include "core/platform/graphics/filters/custom/CustomFilterConstants.h" |
| #include "core/platform/text/LocaleToScriptMapping.h" |
| #include "core/rendering/RenderView.h" |
| @@ -164,6 +167,13 @@ StyleResolver::StyleResolver(Document* document, bool matchAuthorAndUserStyles) |
| m_styleTree.clear(); |
| + if (document->isXHTMLMobileProfile()) { |
| + Vector<String> whitelist; |
| + whitelist.append(document->url()); |
| + static const char* sheet = "@viewport{-internal-priority:1;width:auto;height:auto;zoom:1;}"; |
| + document->page()->group().addUserStyleSheet(sheet, KURL(), whitelist, Vector<String>(), InjectInAllFrames, UserStyleAuthorLevel, InjectInExistingDocuments); |
| + } |
| + |
| DocumentStyleSheetCollection* styleSheetCollection = document->styleSheetCollection(); |
| m_ruleSets.initUserStyle(styleSheetCollection, *m_medium, *this); |
| @@ -187,6 +197,7 @@ void StyleResolver::appendAuthorStyleSheets(unsigned firstNew, const Vector<RefP |
| unsigned size = styleSheets.size(); |
| for (unsigned i = firstNew; i < size; ++i) { |
| CSSStyleSheet* cssSheet = styleSheets[i].get(); |
| + |
| ASSERT(!cssSheet->disabled()); |
| if (cssSheet->mediaQueries() && !m_medium->eval(cssSheet->mediaQueries(), this)) |
| continue; |
| @@ -203,8 +214,7 @@ void StyleResolver::appendAuthorStyleSheets(unsigned firstNew, const Vector<RefP |
| if (document()->renderer() && document()->renderer()->style()) |
| document()->renderer()->style()->font().update(fontSelector()); |
| - if (RuntimeEnabledFeatures::cssViewportEnabled()) |
| - collectViewportRules(); |
| + collectViewportRules(); |
| } |
| void StyleResolver::resetAuthorStyle() |
| @@ -934,12 +944,12 @@ PassRefPtr<RenderStyle> StyleResolver::styleForPage(int pageIndex) |
| void StyleResolver::collectViewportRules() |
| { |
| - ASSERT(RuntimeEnabledFeatures::cssViewportEnabled()); |
| - |
| collectViewportRules(CSSDefaultStyleSheets::defaultStyle); |
| if (m_ruleSets.userStyle()) |
| collectViewportRules(m_ruleSets.userStyle()); |
| + // OK to collect here for viewport meta etc, only the parser doesn't allow addition |
| + // of @viewport with the runtime check. |
| if (ScopedStyleResolver* scopedResolver = m_styleTree.scopedStyleResolverForDocument()) |
| scopedResolver->collectViewportRulesTo(this); |
| @@ -948,8 +958,6 @@ void StyleResolver::collectViewportRules() |
| void StyleResolver::collectViewportRules(RuleSet* rules) |
| { |
| - ASSERT(RuntimeEnabledFeatures::cssViewportEnabled()); |
| - |
| rules->compactRulesIfNeeded(); |
| const Vector<StyleRuleViewport*>& viewportRules = rules->viewportRules(); |
| @@ -1484,7 +1492,8 @@ bool StyleResolver::affectedByViewportChange() const |
| if (m_medium->eval(&m_viewportDependentMediaQueryResults[i]->m_expression) != m_viewportDependentMediaQueryResults[i]->m_result) |
| return true; |
| } |
| - return false; |
| + |
| + return m_viewportStyleResolver->affectedByViewportChange(); |
|
Mikhail
2013/07/19 12:56:21
This is causing dead loop if having '%' values of
|
| } |
| void StyleResolver::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const |