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

Side by Side Diff: Source/core/css/resolver/ScopedStyleResolver.cpp

Issue 42543007: StyleResolver should update RuleSets lazily. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
4 * Copyright (C) 2012 Google Inc. All rights reserved. 4 * Copyright (C) 2012 Google Inc. All rights reserved.
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
240 if (!styleElement->scoped()) 240 if (!styleElement->scoped())
241 return styleElement->isInShadowTree() ? styleElement->containingShadowRo ot() : 0; 241 return styleElement->isInShadowTree() ? styleElement->containingShadowRo ot() : 0;
242 242
243 ContainerNode* parent = styleElement->parentNode(); 243 ContainerNode* parent = styleElement->parentNode();
244 if (!parent) 244 if (!parent)
245 return 0; 245 return 0;
246 246
247 return (parent->isElementNode() || parent->isShadowRoot()) ? parent : 0; 247 return (parent->isElementNode() || parent->isShadowRoot()) ? parent : 0;
248 } 248 }
249 249
250 void ScopedStyleResolver::addRulesFromSheet(StyleSheetContents* sheet, const Med iaQueryEvaluator& medium, StyleResolver* resolver) 250 inline RuleSet* ScopedStyleResolver::ensureAuthorStyle()
251 { 251 {
252 if (!m_authorStyle) 252 if (!m_authorStyle)
253 m_authorStyle = RuleSet::create(); 253 m_authorStyle = RuleSet::create();
254 m_authorStyle->addRulesFromSheet(sheet, medium, resolver, &m_scopingNode); 254 return m_authorStyle.get();
255 }
256
257 void ScopedStyleResolver::addRulesFromSheet(StyleSheetContents* sheet, const Med iaQueryEvaluator& medium, StyleResolver* resolver, bool viewportRuleIsProcessed)
258 {
259 ensureAuthorStyle()->addRulesFromSheet(sheet, medium, resolver, &m_scopingNo de, viewportRuleIsProcessed);
255 resolver->processScopedRules(*m_authorStyle, sheet->baseURL(), &m_scopingNod e); 260 resolver->processScopedRules(*m_authorStyle, sheet->baseURL(), &m_scopingNod e);
256 } 261 }
257 262
263 void ScopedStyleResolver::addViewportRule(StyleRuleViewport* rule)
264 {
265 ensureAuthorStyle()->addViewportRule(rule);
266 }
267
258 inline RuleSet* ScopedStyleResolver::ensureAtHostRuleSetFor(const ShadowRoot* sh adowRoot) 268 inline RuleSet* ScopedStyleResolver::ensureAtHostRuleSetFor(const ShadowRoot* sh adowRoot)
259 { 269 {
260 HashMap<const ShadowRoot*, OwnPtr<RuleSet> >::AddResult addResult = m_atHost Rules.add(shadowRoot, nullptr); 270 HashMap<const ShadowRoot*, OwnPtr<RuleSet> >::AddResult addResult = m_atHost Rules.add(shadowRoot, nullptr);
261 if (addResult.isNewEntry) 271 if (addResult.isNewEntry)
262 addResult.iterator->value = RuleSet::create(); 272 addResult.iterator->value = RuleSet::create();
263 return addResult.iterator->value.get(); 273 return addResult.iterator->value.get();
264 } 274 }
265 275
266 void ScopedStyleResolver::addHostRule(StyleRuleHost* hostRule, bool hasDocumentS ecurityOrigin, const ContainerNode* scopingNode) 276 void ScopedStyleResolver::addHostRule(StyleRuleHost* hostRule, bool hasDocumentS ecurityOrigin, const ContainerNode* scopingNode)
267 { 277 {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 438
429 void ScopedStyleResolver::collectViewportRulesTo(StyleResolver* resolver) const 439 void ScopedStyleResolver::collectViewportRulesTo(StyleResolver* resolver) const
430 { 440 {
431 // Only consider the global author RuleSet for @viewport rules. 441 // Only consider the global author RuleSet for @viewport rules.
432 if (!m_scopingNode.isDocumentNode() || !m_authorStyle) 442 if (!m_scopingNode.isDocumentNode() || !m_authorStyle)
433 return; 443 return;
434 resolver->viewportStyleResolver()->collectViewportRules(m_authorStyle.get(), ViewportStyleResolver::AuthorOrigin); 444 resolver->viewportStyleResolver()->collectViewportRules(m_authorStyle.get(), ViewportStyleResolver::AuthorOrigin);
435 } 445 }
436 446
437 } // namespace WebCore 447 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698