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 |