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

Side by Side Diff: Source/core/css/StyleSheetContents.cpp

Issue 196133034: Move inline stylesheet cache decision making from StyleSheetContents to StyleEngine (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Merged to trunk Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/css/StyleSheetContents.h ('k') | Source/core/dom/StyleEngine.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2006, 2007, 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2004, 2006, 2007, 2012 Apple Inc. All rights reserved.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 106
107 void StyleSheetContents::setHasSyntacticallyValidCSSHeader(bool isValidCss) 107 void StyleSheetContents::setHasSyntacticallyValidCSSHeader(bool isValidCss)
108 { 108 {
109 if (!isValidCss) { 109 if (!isValidCss) {
110 if (Document* document = clientSingleOwnerDocument()) 110 if (Document* document = clientSingleOwnerDocument())
111 removeSheetFromCache(document); 111 removeSheetFromCache(document);
112 } 112 }
113 m_hasSyntacticallyValidCSSHeader = isValidCss; 113 m_hasSyntacticallyValidCSSHeader = isValidCss;
114 } 114 }
115 115
116 bool StyleSheetContents::maybeCacheable() const 116 bool StyleSheetContents::isCacheable() const
117 { 117 {
118 // This would require dealing with multiple clients for load callbacks.
119 if (!loadCompleted())
120 return false;
118 // FIXME: StyleSheets with media queries can't be cached because their RuleS et 121 // FIXME: StyleSheets with media queries can't be cached because their RuleS et
119 // is processed differently based off the media queries, which might resolve 122 // is processed differently based off the media queries, which might resolve
120 // differently depending on the context of the parent CSSStyleSheet (e.g. 123 // differently depending on the context of the parent CSSStyleSheet (e.g.
121 // if they are in differently sized iframes). Once RuleSets are media query 124 // if they are in differently sized iframes). Once RuleSets are media query
122 // agnostic, we can restore sharing of StyleSheetContents with medea queries . 125 // agnostic, we can restore sharing of StyleSheetContents with medea queries .
123 if (m_hasMediaQueries) 126 if (m_hasMediaQueries)
124 return false; 127 return false;
125 // FIXME: Support copying import rules. 128 // FIXME: Support copying import rules.
126 if (!m_importRules.isEmpty()) 129 if (!m_importRules.isEmpty())
127 return false; 130 return false;
128 // FIXME: Support cached stylesheets in import rules. 131 // FIXME: Support cached stylesheets in import rules.
129 if (m_ownerRule) 132 if (m_ownerRule)
130 return false; 133 return false;
131 if (m_didLoadErrorOccur) 134 if (m_didLoadErrorOccur)
132 return false; 135 return false;
133 // It is not the original sheet anymore. 136 // It is not the original sheet anymore.
134 if (m_isMutable) 137 if (m_isMutable)
135 return false; 138 return false;
136 // If the header is valid we are not going to need to check the SecurityOrig in. 139 // If the header is valid we are not going to need to check the SecurityOrig in.
137 // FIXME: Valid mime type avoids the check too. 140 // FIXME: Valid mime type avoids the check too.
138 if (!m_hasSyntacticallyValidCSSHeader) 141 if (!m_hasSyntacticallyValidCSSHeader)
139 return false; 142 return false;
140 return true; 143 return true;
141 } 144 }
142 145
143 bool StyleSheetContents::isCacheable() const
144 {
145 // This would require dealing with multiple clients for load callbacks.
146 if (!loadCompleted())
147 return false;
148 return maybeCacheable();
149 }
150
151 void StyleSheetContents::parserAppendRule(PassRefPtrWillBeRawPtr<StyleRuleBase> rule) 146 void StyleSheetContents::parserAppendRule(PassRefPtrWillBeRawPtr<StyleRuleBase> rule)
152 { 147 {
153 ASSERT(!rule->isCharsetRule()); 148 ASSERT(!rule->isCharsetRule());
154 if (rule->isImportRule()) { 149 if (rule->isImportRule()) {
155 // Parser enforces that @import rules come before anything else except @ charset. 150 // Parser enforces that @import rules come before anything else except @ charset.
156 ASSERT(m_childRules.isEmpty()); 151 ASSERT(m_childRules.isEmpty());
157 StyleRuleImport* importRule = toStyleRuleImport(rule.get()); 152 StyleRuleImport* importRule = toStyleRuleImport(rule.get());
158 if (importRule->mediaQueries()) 153 if (importRule->mediaQueries())
159 setHasMediaQueries(); 154 setHasMediaQueries();
160 m_importRules.append(importRule); 155 m_importRules.append(importRule);
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 void StyleSheetContents::clientLoadStarted(CSSStyleSheet* sheet) 577 void StyleSheetContents::clientLoadStarted(CSSStyleSheet* sheet)
583 { 578 {
584 ASSERT(m_completedClients.contains(sheet)); 579 ASSERT(m_completedClients.contains(sheet));
585 m_completedClients.remove(sheet); 580 m_completedClients.remove(sheet);
586 m_loadingClients.add(sheet); 581 m_loadingClients.add(sheet);
587 } 582 }
588 583
589 void StyleSheetContents::removeSheetFromCache(Document* document) 584 void StyleSheetContents::removeSheetFromCache(Document* document)
590 { 585 {
591 ASSERT(document); 586 ASSERT(document);
592 if (!maybeCacheable())
593 return;
594 document->styleEngine()->removeSheet(this); 587 document->styleEngine()->removeSheet(this);
595 } 588 }
596 589
597 void StyleSheetContents::addedToMemoryCache() 590 void StyleSheetContents::addedToMemoryCache()
598 { 591 {
599 ASSERT(!m_isInMemoryCache); 592 ASSERT(!m_isInMemoryCache);
600 ASSERT(isCacheable()); 593 ASSERT(isCacheable());
601 m_isInMemoryCache = true; 594 m_isInMemoryCache = true;
602 } 595 }
603 596
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 { 688 {
696 visitor->trace(m_ownerRule); 689 visitor->trace(m_ownerRule);
697 visitor->trace(m_importRules); 690 visitor->trace(m_importRules);
698 visitor->trace(m_childRules); 691 visitor->trace(m_childRules);
699 visitor->trace(m_loadingClients); 692 visitor->trace(m_loadingClients);
700 visitor->trace(m_completedClients); 693 visitor->trace(m_completedClients);
701 visitor->trace(m_ruleSet); 694 visitor->trace(m_ruleSet);
702 } 695 }
703 696
704 } 697 }
OLDNEW
« no previous file with comments | « Source/core/css/StyleSheetContents.h ('k') | Source/core/dom/StyleEngine.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698