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

Side by Side Diff: third_party/WebKit/Source/core/css/PropertyRegistration.cpp

Issue 2757543002: Ensure baseComputedStyle optimisation is cleared during registered custom property animations (Closed)
Patch Set: Rebased Created 3 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/css/PropertyRegistration.h" 5 #include "core/css/PropertyRegistration.h"
6 6
7 #include "core/animation/CSSInterpolationTypesMap.h" 7 #include "core/animation/CSSInterpolationTypesMap.h"
8 #include "core/css/CSSStyleSheet.h" 8 #include "core/css/CSSStyleSheet.h"
9 #include "core/css/CSSSyntaxDescriptor.h" 9 #include "core/css/CSSSyntaxDescriptor.h"
10 #include "core/css/CSSValueList.h" 10 #include "core/css/CSSValueList.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 return true; 80 return true;
81 } 81 }
82 82
83 // TODO(timloh): Images and transform-function values can also contain 83 // TODO(timloh): Images and transform-function values can also contain
84 // lengths. 84 // lengths.
85 85
86 return true; 86 return true;
87 } 87 }
88 88
89 void PropertyRegistration::registerProperty( 89 void PropertyRegistration::registerProperty(
90 ScriptState* scriptState, 90 ExecutionContext* executionContext,
91 const PropertyDescriptor& descriptor, 91 const PropertyDescriptor& descriptor,
92 ExceptionState& exceptionState) { 92 ExceptionState& exceptionState) {
93 // Bindings code ensures these are set. 93 // Bindings code ensures these are set.
94 DCHECK(descriptor.hasName()); 94 DCHECK(descriptor.hasName());
95 DCHECK(descriptor.hasInherits()); 95 DCHECK(descriptor.hasInherits());
96 DCHECK(descriptor.hasSyntax()); 96 DCHECK(descriptor.hasSyntax());
97 97
98 String name = descriptor.name(); 98 String name = descriptor.name();
99 if (!CSSVariableParser::isValidVariableName(name)) { 99 if (!CSSVariableParser::isValidVariableName(name)) {
100 exceptionState.throwDOMException( 100 exceptionState.throwDOMException(
101 SyntaxError, "Custom property names must start with '--'."); 101 SyntaxError, "Custom property names must start with '--'.");
102 return; 102 return;
103 } 103 }
104 AtomicString atomicName(name); 104 AtomicString atomicName(name);
105 Document* document = toDocument(scriptState->getExecutionContext()); 105 Document* document = toDocument(executionContext);
106 PropertyRegistry& registry = *document->propertyRegistry(); 106 PropertyRegistry& registry = *document->propertyRegistry();
107 if (registry.registration(atomicName)) { 107 if (registry.registration(atomicName)) {
108 exceptionState.throwDOMException( 108 exceptionState.throwDOMException(
109 InvalidModificationError, 109 InvalidModificationError,
110 "The name provided has already been registered."); 110 "The name provided has already been registered.");
111 return; 111 return;
112 } 112 }
113 113
114 CSSSyntaxDescriptor syntaxDescriptor(descriptor.syntax()); 114 CSSSyntaxDescriptor syntaxDescriptor(descriptor.syntax());
115 if (!syntaxDescriptor.isValid()) { 115 if (!syntaxDescriptor.isValid()) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 std::move(cssInterpolationTypes)); 161 std::move(cssInterpolationTypes));
162 } 162 }
163 163
164 // TODO(timloh): Invalidate only elements with this custom property set 164 // TODO(timloh): Invalidate only elements with this custom property set
165 document->setNeedsStyleRecalc(SubtreeStyleChange, 165 document->setNeedsStyleRecalc(SubtreeStyleChange,
166 StyleChangeReasonForTracing::create( 166 StyleChangeReasonForTracing::create(
167 StyleChangeReason::PropertyRegistration)); 167 StyleChangeReason::PropertyRegistration));
168 } 168 }
169 169
170 } // namespace blink 170 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/PropertyRegistration.h ('k') | third_party/WebKit/Source/core/css/PropertyRegistration.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698