Index: Source/core/css/resolver/StyleResolver.cpp |
diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp |
index c5e87af65b09d46f53801ce646e9b8fb0b3dec66..7293eb0a1a2a80ecf987a62ca95a7ee2e1242b6b 100644 |
--- a/Source/core/css/resolver/StyleResolver.cpp |
+++ b/Source/core/css/resolver/StyleResolver.cpp |
@@ -50,6 +50,7 @@ |
#include "core/css/CSSSelector.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/MediaQueryEvaluator.h" |
@@ -73,6 +74,7 @@ |
#include "core/inspector/InspectorInstrumentation.h" |
#include "core/page/Frame.h" |
#include "core/page/FrameView.h" |
+#include "core/page/PageGroup.h" |
#include "core/rendering/RenderView.h" |
#include "core/rendering/style/KeyframeList.h" |
#include "core/rendering/style/StyleCustomFilterProgramCache.h" |
@@ -137,6 +139,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); |
@@ -159,6 +168,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; |
@@ -178,8 +188,7 @@ void StyleResolver::finishAppendAuthorStyleSheets() |
if (document()->renderer() && document()->renderer()->style()) |
document()->renderer()->style()->font().update(fontSelector()); |
- if (RuntimeEnabledFeatures::cssViewportEnabled()) |
- collectViewportRules(); |
+ collectViewportRules(); |
} |
void StyleResolver::resetAuthorStyle(const ContainerNode* scopingNode) |
@@ -1030,12 +1039,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); |
@@ -1044,8 +1053,6 @@ void StyleResolver::collectViewportRules() |
void StyleResolver::collectViewportRules(RuleSet* rules) |
{ |
- ASSERT(RuntimeEnabledFeatures::cssViewportEnabled()); |
- |
rules->compactRulesIfNeeded(); |
const Vector<StyleRuleViewport*>& viewportRules = rules->viewportRules(); |
@@ -1503,6 +1510,7 @@ bool StyleResolver::affectedByViewportChange() const |
if (m_medium->eval(&m_viewportDependentMediaQueryResults[i]->m_expression) != m_viewportDependentMediaQueryResults[i]->m_result) |
return true; |
} |
+ |
return false; |
} |