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

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

Issue 1164573002: CSSValue Immediates: Change CSSValue to an object instead of a pointer (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebase Created 5 years, 5 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/FontFace.h ('k') | Source/core/css/PropertySetCSSStyleDeclaration.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/FontFace.cpp
diff --git a/Source/core/css/FontFace.cpp b/Source/core/css/FontFace.cpp
index 3d0794d6f202346d81b297fa5c7e42006448eb83..c7e204e691b35edd2b93e51fa7960f141ece4737 100644
--- a/Source/core/css/FontFace.cpp
+++ b/Source/core/css/FontFace.cpp
@@ -62,7 +62,7 @@
namespace blink {
-static PassRefPtrWillBeRawPtr<CSSValue> parseCSSValue(const Document* document, const String& value, CSSPropertyID propertyID)
+static NullableCSSValue parseCSSValue(const Document* document, const String& value, CSSPropertyID propertyID)
{
CSSParserContext context(*document, UseCounter::getFrom(document));
return CSSParser::parseFontFaceDescriptor(propertyID, value, context);
@@ -84,11 +84,13 @@ PassRefPtrWillBeRawPtr<FontFace> FontFace::create(ExecutionContext* context, con
{
RefPtrWillBeRawPtr<FontFace> fontFace = adoptRefWillBeNoop(new FontFace(context, family, descriptors));
- RefPtrWillBeRawPtr<CSSValue> src = parseCSSValue(toDocument(context), source, CSSPropertySrc);
- if (!src || !src->isValueList())
+ NullableCSSValue src = parseCSSValue(toDocument(context), source, CSSPropertySrc);
+ if (!src || !src->isValueList()) {
fontFace->setError(DOMException::create(SyntaxError, "The source provided ('" + source + "') could not be parsed as a value list."));
+ return fontFace;
+ }
- fontFace->initCSSFontFace(toDocument(context), src);
+ fontFace->initCSSFontFace(toDocument(context), *src);
return fontFace.release();
}
@@ -111,16 +113,16 @@ PassRefPtrWillBeRawPtr<FontFace> FontFace::create(Document* document, const Styl
const StylePropertySet& properties = fontFaceRule->properties();
// Obtain the font-family property and the src property. Both must be defined.
- RefPtrWillBeRawPtr<CSSValue> family = properties.getPropertyCSSValue(CSSPropertyFontFamily);
+ NullableCSSValue family = properties.getPropertyCSSValue(CSSPropertyFontFamily);
if (!family || !family->isValueList())
return nullptr;
- RefPtrWillBeRawPtr<CSSValue> src = properties.getPropertyCSSValue(CSSPropertySrc);
+ NullableCSSValue src = properties.getPropertyCSSValue(CSSPropertySrc);
if (!src || !src->isValueList())
return nullptr;
RefPtrWillBeRawPtr<FontFace> fontFace = adoptRefWillBeNoop(new FontFace(document));
- if (fontFace->setFamilyValue(toCSSValueList(family.get()))
+ if (fontFace->setFamilyValue(toCSSValueList(family))
&& fontFace->setPropertyFromStyle(properties, CSSPropertyFontStyle)
&& fontFace->setPropertyFromStyle(properties, CSSPropertyFontWeight)
&& fontFace->setPropertyFromStyle(properties, CSSPropertyFontStretch)
@@ -129,7 +131,7 @@ PassRefPtrWillBeRawPtr<FontFace> FontFace::create(Document* document, const Styl
&& fontFace->setPropertyFromStyle(properties, CSSPropertyWebkitFontFeatureSettings)
&& !fontFace->family().isEmpty()
&& fontFace->traits().bitfield()) {
- fontFace->initCSSFontFace(document, src);
+ fontFace->initCSSFontFace(document, *src);
return fontFace.release();
}
return nullptr;
@@ -224,7 +226,7 @@ void FontFace::setFeatureSettings(ExecutionContext* context, const String& s, Ex
void FontFace::setPropertyFromString(const Document* document, const String& s, CSSPropertyID propertyID, ExceptionState* exceptionState)
{
- RefPtrWillBeRawPtr<CSSValue> value = parseCSSValue(document, s, propertyID);
+ NullableCSSValue value = parseCSSValue(document, s, propertyID);
if (value && setPropertyValue(value, propertyID))
return;
@@ -240,7 +242,7 @@ bool FontFace::setPropertyFromStyle(const StylePropertySet& properties, CSSPrope
return setPropertyValue(properties.getPropertyCSSValue(propertyID), propertyID);
}
-bool FontFace::setPropertyValue(PassRefPtrWillBeRawPtr<CSSValue> value, CSSPropertyID propertyID)
+bool FontFace::setPropertyValue(NullableCSSValue value, CSSPropertyID propertyID)
{
switch (propertyID) {
case CSSPropertyFontStyle:
@@ -276,14 +278,14 @@ bool FontFace::setFamilyValue(CSSValueList* familyList)
if (familyList->length() != 1)
return false;
- CSSPrimitiveValue* familyValue = toCSSPrimitiveValue(familyList->item(0));
+ CSSPrimitiveValue& familyValue = toCSSPrimitiveValue(familyList->item(0));
AtomicString family;
- if (familyValue->isCustomIdent()) {
- family = AtomicString(familyValue->getStringValue());
- } else if (familyValue->isValueID()) {
+ if (familyValue.isCustomIdent()) {
+ family = AtomicString(familyValue.getStringValue());
+ } else if (familyValue.isValueID()) {
// We need to use the raw text for all the generic family types, since @font-face is a way of actually
// defining what font to use for those types.
- switch (familyValue->getValueID()) {
+ switch (familyValue.getValueID()) {
case CSSValueSerif:
family = FontFamilyNames::webkit_serif;
break;
@@ -403,7 +405,7 @@ FontTraits FontFace::traits() const
if (!m_style->isPrimitiveValue())
return 0;
- switch (toCSSPrimitiveValue(m_style.get())->getValueID()) {
+ switch (toCSSPrimitiveValue(m_style)->getValueID()) {
case CSSValueNormal:
style = FontStyleNormal;
break;
@@ -421,7 +423,7 @@ FontTraits FontFace::traits() const
if (!m_weight->isPrimitiveValue())
return 0;
- switch (toCSSPrimitiveValue(m_weight.get())->getValueID()) {
+ switch (toCSSPrimitiveValue(m_weight)->getValueID()) {
case CSSValueBold:
case CSSValue700:
weight = FontWeight700;
@@ -463,23 +465,23 @@ FontTraits FontFace::traits() const
}
FontVariant variant = FontVariantNormal;
- if (RefPtrWillBeRawPtr<CSSValue> fontVariant = m_variant) {
+ if (NullableCSSValue fontVariant = m_variant) {
// font-variant descriptor can be a value list.
if (fontVariant->isPrimitiveValue()) {
RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
- list->append(fontVariant);
+ list->append(*fontVariant);
fontVariant = list;
} else if (!fontVariant->isValueList()) {
return 0;
}
- CSSValueList* variantList = toCSSValueList(fontVariant.get());
+ CSSValueList* variantList = toCSSValueList(fontVariant);
unsigned numVariants = variantList->length();
if (!numVariants)
return 0;
for (unsigned i = 0; i < numVariants; ++i) {
- switch (toCSSPrimitiveValue(variantList->item(i))->getValueID()) {
+ switch (toCSSPrimitiveValue(variantList->item(i)).getValueID()) {
case CSSValueNormal:
variant = FontVariantNormal;
break;
@@ -495,49 +497,48 @@ FontTraits FontFace::traits() const
return FontTraits(style, variant, weight, FontStretchNormal);
}
-static PassOwnPtrWillBeRawPtr<CSSFontFace> createCSSFontFace(FontFace* fontFace, CSSValue* unicodeRange)
+static PassOwnPtrWillBeRawPtr<CSSFontFace> createCSSFontFace(FontFace* fontFace, NullableCSSValue unicodeRange)
{
Vector<CSSFontFace::UnicodeRange> ranges;
if (CSSValueList* rangeList = toCSSValueList(unicodeRange)) {
unsigned numRanges = rangeList->length();
for (unsigned i = 0; i < numRanges; i++) {
- CSSUnicodeRangeValue* range = toCSSUnicodeRangeValue(rangeList->item(i));
- ranges.append(CSSFontFace::UnicodeRange(range->from(), range->to()));
+ CSSUnicodeRangeValue& range = toCSSUnicodeRangeValue(rangeList->item(i));
+ ranges.append(CSSFontFace::UnicodeRange(range.from(), range.to()));
}
}
return adoptPtrWillBeNoop(new CSSFontFace(fontFace, ranges));
}
-void FontFace::initCSSFontFace(Document* document, PassRefPtrWillBeRawPtr<CSSValue> src)
+void FontFace::initCSSFontFace(Document* document, CSSValue src)
{
- m_cssFontFace = createCSSFontFace(this, m_unicodeRange.get());
+ m_cssFontFace = createCSSFontFace(this, m_unicodeRange);
if (m_error)
return;
// Each item in the src property's list is a single CSSFontFaceSource. Put them all into a CSSFontFace.
- ASSERT(src);
- ASSERT(src->isValueList());
- CSSValueList* srcList = toCSSValueList(src.get());
- int srcLength = srcList->length();
+ ASSERT(src.isValueList());
+ CSSValueList& srcList = toCSSValueList(src);
+ int srcLength = srcList.length();
for (int i = 0; i < srcLength; i++) {
// An item in the list either specifies a string (local font name) or a URL (remote font to download).
- CSSFontFaceSrcValue* item = toCSSFontFaceSrcValue(srcList->item(i));
+ CSSFontFaceSrcValue& item = toCSSFontFaceSrcValue(srcList.item(i));
OwnPtrWillBeRawPtr<CSSFontFaceSource> source = nullptr;
- if (!item->isLocal()) {
+ if (!item.isLocal()) {
Settings* settings = document ? document->frame() ? document->frame()->settings() : 0 : 0;
bool allowDownloading = settings && settings->downloadableBinaryFontsEnabled();
- if (allowDownloading && item->isSupportedFormat() && document) {
- FontResource* fetched = item->fetch(document);
+ if (allowDownloading && item.isSupportedFormat() && document) {
+ FontResource* fetched = item.fetch(document);
if (fetched) {
FontLoader* fontLoader = document->styleEngine().fontSelector()->fontLoader();
source = adoptPtrWillBeNoop(new RemoteFontFaceSource(fetched, fontLoader));
}
}
} else {
- source = adoptPtrWillBeNoop(new LocalFontFaceSource(item->resource()));
+ source = adoptPtrWillBeNoop(new LocalFontFaceSource(item.resource()));
}
if (source)
@@ -547,7 +548,7 @@ void FontFace::initCSSFontFace(Document* document, PassRefPtrWillBeRawPtr<CSSVal
void FontFace::initCSSFontFace(const unsigned char* data, unsigned size)
{
- m_cssFontFace = createCSSFontFace(this, m_unicodeRange.get());
+ m_cssFontFace = createCSSFontFace(this, m_unicodeRange);
if (m_error)
return;
« no previous file with comments | « Source/core/css/FontFace.h ('k') | Source/core/css/PropertySetCSSStyleDeclaration.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698