Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Unified Diff: Source/core/css/resolver/StyleResolver.cpp

Issue 19555002: Translate viewport related meta tags into @viewport descriptors as suggested by the CSS Device Adap… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698