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

Unified Diff: Source/core/css/CSSComputedStyleDeclaration.cpp

Issue 14324009: Add support for disabling CSS Properties at runtime (Closed) Base URL: http://src.chromium.org/blink/trunk/Source/
Patch Set: Runtime guard more uses of CSSPropertyID, per Elliot's request. Created 7 years, 8 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
« no previous file with comments | « Source/core/css/CSSComputedStyleDeclaration.h ('k') | Source/core/css/CSSParser.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/CSSComputedStyleDeclaration.cpp
diff --git a/Source/core/css/CSSComputedStyleDeclaration.cpp b/Source/core/css/CSSComputedStyleDeclaration.cpp
index 2888b8d003b6e54ddb19045b1dff264dedf3b458..c291e3a6e2f6d69fad42c81aaa1e5885b5a4acd5 100644
--- a/Source/core/css/CSSComputedStyleDeclaration.cpp
+++ b/Source/core/css/CSSComputedStyleDeclaration.cpp
@@ -55,6 +55,7 @@
#include "WebKitCSSTransformValue.h"
#include "WebKitFontFamilyNames.h"
#include "core/page/animation/AnimationController.h"
+#include "core/page/RuntimeCSSEnabled.h"
#include "core/platform/graphics/FontFeatureSettings.h"
#include "core/rendering/RenderBox.h"
#include "core/rendering/RenderView.h"
@@ -84,7 +85,9 @@
namespace WebCore {
// List of all properties we know how to compute, omitting shorthands.
-static const CSSPropertyID computedProperties[] = {
+// NOTE: Do not use this list, use computableProperties() instead
+// to respect runtime enabling of CSS properties.
+static const CSSPropertyID staticComputableProperties[] = {
CSSPropertyBackgroundAttachment,
#if ENABLE(CSS_COMPOSITING)
CSSPropertyBackgroundBlendMode,
@@ -403,7 +406,13 @@ static const CSSPropertyID computedProperties[] = {
#endif
};
-const unsigned numComputedProperties = WTF_ARRAY_LENGTH(computedProperties);
+static const Vector<CSSPropertyID>& computableProperties()
+{
+ DEFINE_STATIC_LOCAL(Vector<CSSPropertyID>, properties, ());
+ if (properties.isEmpty())
+ RuntimeCSSEnabled::filterEnabledCSSPropertiesIntoVector(staticComputableProperties, WTF_ARRAY_LENGTH(staticComputableProperties), properties);
+ return properties;
+}
static int valueForRepeatRule(int rule)
{
@@ -1182,13 +1191,14 @@ void CSSComputedStyleDeclaration::deref()
String CSSComputedStyleDeclaration::cssText() const
{
StringBuilder result;
+ const Vector<CSSPropertyID>& properties = computableProperties();
- for (unsigned i = 0; i < numComputedProperties; i++) {
+ for (unsigned i = 0; i < properties.size(); i++) {
if (i)
result.append(' ');
- result.append(getPropertyName(computedProperties[i]));
+ result.append(getPropertyName(properties[i]));
result.append(": ", 2);
- result.append(getPropertyValue(computedProperties[i]));
+ result.append(getPropertyValue(properties[i]));
result.append(';');
}
@@ -2819,7 +2829,7 @@ unsigned CSSComputedStyleDeclaration::length() const
if (!style)
return 0;
- return numComputedProperties;
+ return computableProperties().size();
}
String CSSComputedStyleDeclaration::item(unsigned i) const
@@ -2827,7 +2837,7 @@ String CSSComputedStyleDeclaration::item(unsigned i) const
if (i >= length())
return "";
- return getPropertyNameString(computedProperties[i]);
+ return getPropertyNameString(computableProperties()[i]);
}
bool CSSComputedStyleDeclaration::cssPropertyMatches(CSSPropertyID propertyID, const CSSValue* propertyValue) const
@@ -2848,7 +2858,7 @@ bool CSSComputedStyleDeclaration::cssPropertyMatches(CSSPropertyID propertyID, c
PassRefPtr<StylePropertySet> CSSComputedStyleDeclaration::copy() const
{
- return copyPropertiesInSet(computedProperties, numComputedProperties);
+ return copyPropertiesInSet(computableProperties());
}
PassRefPtr<CSSValueList> CSSComputedStyleDeclaration::getCSSPropertyValuesForShorthandProperties(const StylePropertyShorthand& shorthand) const
@@ -2899,14 +2909,14 @@ PassRefPtr<CSSValueList> CSSComputedStyleDeclaration::getCSSPropertyValuesForGri
return list.release();
}
-PassRefPtr<StylePropertySet> CSSComputedStyleDeclaration::copyPropertiesInSet(const CSSPropertyID* set, unsigned length) const
+PassRefPtr<StylePropertySet> CSSComputedStyleDeclaration::copyPropertiesInSet(const Vector<CSSPropertyID>& properties) const
{
Vector<CSSProperty, 256> list;
- list.reserveInitialCapacity(length);
- for (unsigned i = 0; i < length; ++i) {
- RefPtr<CSSValue> value = getPropertyCSSValue(set[i]);
+ list.reserveInitialCapacity(properties.size());
+ for (unsigned i = 0; i < properties.size(); ++i) {
+ RefPtr<CSSValue> value = getPropertyCSSValue(properties[i]);
if (value)
- list.append(CSSProperty(set[i], value.release(), false));
+ list.append(CSSProperty(properties[i], value.release(), false));
}
return StylePropertySet::create(list.data(), list.size());
}
« no previous file with comments | « Source/core/css/CSSComputedStyleDeclaration.h ('k') | Source/core/css/CSSParser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698