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

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

Issue 169303003: CSP 1.1: Revert CSSOM changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase. Created 6 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. 2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved.
3 * Copyright (C) 2012 Apple Inc. All rights reserved. 3 * Copyright (C) 2012 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above 9 * 1. Redistributions of source code must retain the above
10 * copyright notice, this list of conditions and the following 10 * copyright notice, this list of conditions and the following
(...skipping 17 matching lines...) Expand all
28 * SUCH DAMAGE. 28 * SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "core/css/CSSGroupingRule.h" 32 #include "core/css/CSSGroupingRule.h"
33 33
34 #include "bindings/v8/ExceptionState.h" 34 #include "bindings/v8/ExceptionState.h"
35 #include "core/css/parser/BisonCSSParser.h" 35 #include "core/css/parser/BisonCSSParser.h"
36 #include "core/css/CSSRuleList.h" 36 #include "core/css/CSSRuleList.h"
37 #include "core/css/CSSStyleSheet.h" 37 #include "core/css/CSSStyleSheet.h"
38 #include "core/dom/Document.h"
39 #include "core/dom/ExceptionCode.h" 38 #include "core/dom/ExceptionCode.h"
40 #include "core/frame/ContentSecurityPolicy.h"
41 #include "core/frame/UseCounter.h" 39 #include "core/frame/UseCounter.h"
42 #include "wtf/text/StringBuilder.h" 40 #include "wtf/text/StringBuilder.h"
43 41
44 namespace WebCore { 42 namespace WebCore {
45 43
46 CSSGroupingRule::CSSGroupingRule(StyleRuleGroup* groupRule, CSSStyleSheet* paren t) 44 CSSGroupingRule::CSSGroupingRule(StyleRuleGroup* groupRule, CSSStyleSheet* paren t)
47 : CSSRule(parent) 45 : CSSRule(parent)
48 , m_groupRule(groupRule) 46 , m_groupRule(groupRule)
49 , m_childRuleCSSOMWrappers(groupRule->childRules().size()) 47 , m_childRuleCSSOMWrappers(groupRule->childRules().size())
50 { 48 {
51 } 49 }
52 50
53 CSSGroupingRule::~CSSGroupingRule() 51 CSSGroupingRule::~CSSGroupingRule()
54 { 52 {
55 ASSERT(m_childRuleCSSOMWrappers.size() == m_groupRule->childRules().size()); 53 ASSERT(m_childRuleCSSOMWrappers.size() == m_groupRule->childRules().size());
56 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { 54 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) {
57 if (m_childRuleCSSOMWrappers[i]) 55 if (m_childRuleCSSOMWrappers[i])
58 m_childRuleCSSOMWrappers[i]->setParentRule(0); 56 m_childRuleCSSOMWrappers[i]->setParentRule(0);
59 } 57 }
60 } 58 }
61 59
62 unsigned CSSGroupingRule::insertRule(const String& ruleString, unsigned index, E xceptionState& exceptionState) 60 unsigned CSSGroupingRule::insertRule(const String& ruleString, unsigned index, E xceptionState& exceptionState)
63 { 61 {
64 ASSERT(m_childRuleCSSOMWrappers.size() == m_groupRule->childRules().size()); 62 ASSERT(m_childRuleCSSOMWrappers.size() == m_groupRule->childRules().size());
65 63
66 CSSStyleSheet* styleSheet = parentStyleSheet();
67 if (styleSheet) {
68 if (Document* document = styleSheet->ownerDocument()) {
69 if (!document->contentSecurityPolicy()->allowStyleEval()) {
70 exceptionState.throwSecurityError(document->contentSecurityPolic y()->styleEvalDisabledErrorMessage());
71 return 0;
72 }
73 }
74 }
75
76 if (index > m_groupRule->childRules().size()) { 64 if (index > m_groupRule->childRules().size()) {
77 exceptionState.throwDOMException(IndexSizeError, "the index " + String:: number(index) + " must be less than or equal to the length of the rule list."); 65 exceptionState.throwDOMException(IndexSizeError, "the index " + String:: number(index) + " must be less than or equal to the length of the rule list.");
78 return 0; 66 return 0;
79 } 67 }
80 68
69 CSSStyleSheet* styleSheet = parentStyleSheet();
81 CSSParserContext context(parserContext(), UseCounter::getFrom(styleSheet)); 70 CSSParserContext context(parserContext(), UseCounter::getFrom(styleSheet));
82 BisonCSSParser parser(context); 71 BisonCSSParser parser(context);
83 RefPtr<StyleRuleBase> newRule = parser.parseRule(styleSheet ? styleSheet->co ntents() : 0, ruleString); 72 RefPtr<StyleRuleBase> newRule = parser.parseRule(styleSheet ? styleSheet->co ntents() : 0, ruleString);
84 if (!newRule) { 73 if (!newRule) {
85 exceptionState.throwDOMException(SyntaxError, "the rule '" + ruleString + "' is invalid and cannot be parsed."); 74 exceptionState.throwDOMException(SyntaxError, "the rule '" + ruleString + "' is invalid and cannot be parsed.");
86 return 0; 75 return 0;
87 } 76 }
88 77
89 if (newRule->isImportRule()) { 78 if (newRule->isImportRule()) {
90 // FIXME: an HierarchyRequestError should also be thrown for a @charset or a nested 79 // FIXME: an HierarchyRequestError should also be thrown for a @charset or a nested
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 { 145 {
157 ASSERT(rule); 146 ASSERT(rule);
158 m_groupRule = static_cast<StyleRuleGroup*>(rule); 147 m_groupRule = static_cast<StyleRuleGroup*>(rule);
159 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { 148 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) {
160 if (m_childRuleCSSOMWrappers[i]) 149 if (m_childRuleCSSOMWrappers[i])
161 m_childRuleCSSOMWrappers[i]->reattach(m_groupRule->childRules()[i].g et()); 150 m_childRuleCSSOMWrappers[i]->reattach(m_groupRule->childRules()[i].g et());
162 } 151 }
163 } 152 }
164 153
165 } // namespace WebCore 154 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/bindings/v8/custom/V8WorkerGlobalScopeCustom.cpp ('k') | Source/core/css/CSSKeyframesRule.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698