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

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

Issue 170603003: Use nullptr_t for RefPtr, PassRefPtr and RawPtr. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Final 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/css/CSSFontFace.cpp ('k') | Source/core/css/CSSFontSelector.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 * Copyright (C) 2007, 2008, 2010, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2007, 2008, 2010, 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 123
124 pruneTable(); 124 pruneTable();
125 if (m_face) 125 if (m_face)
126 m_face->fontLoaded(this); 126 m_face->fontLoaded(this);
127 } 127 }
128 128
129 PassRefPtr<SimpleFontData> CSSFontFaceSource::getFontData(const FontDescription& fontDescription) 129 PassRefPtr<SimpleFontData> CSSFontFaceSource::getFontData(const FontDescription& fontDescription)
130 { 130 {
131 // If the font hasn't loaded or an error occurred, then we've got nothing. 131 // If the font hasn't loaded or an error occurred, then we've got nothing.
132 if (!isValid()) 132 if (!isValid())
133 return 0; 133 return nullptr;
134 134
135 if (isLocal()) { 135 if (isLocal()) {
136 // We're local. Just return a SimpleFontData from the normal cache. 136 // We're local. Just return a SimpleFontData from the normal cache.
137 // We don't want to check alternate font family names here, so pass true as the checkingAlternateName parameter. 137 // We don't want to check alternate font family names here, so pass true as the checkingAlternateName parameter.
138 RefPtr<SimpleFontData> fontData = FontCache::fontCache()->getFontData(fo ntDescription, m_string, true); 138 RefPtr<SimpleFontData> fontData = FontCache::fontCache()->getFontData(fo ntDescription, m_string, true);
139 m_histograms.recordLocalFont(fontData); 139 m_histograms.recordLocalFont(fontData);
140 return fontData; 140 return fontData;
141 } 141 }
142 142
143 // See if we have a mapping in our FontData cache. 143 // See if we have a mapping in our FontData cache.
144 AtomicString emptyFontFamily = ""; 144 AtomicString emptyFontFamily = "";
145 FontCacheKey key = fontDescription.cacheKey(emptyFontFamily); 145 FontCacheKey key = fontDescription.cacheKey(emptyFontFamily);
146 146
147 RefPtr<SimpleFontData>& fontData = m_fontDataTable.add(key.hash(), 0).stored Value->value; 147 RefPtr<SimpleFontData>& fontData = m_fontDataTable.add(key.hash(), nullptr). storedValue->value;
148 if (fontData) 148 if (fontData)
149 return fontData; // No release, because fontData is a reference to a Ref Ptr that is held in the m_fontDataTable. 149 return fontData; // No release, because fontData is a reference to a Ref Ptr that is held in the m_fontDataTable.
150 150
151 // If we are still loading, then we let the system pick a font. 151 // If we are still loading, then we let the system pick a font.
152 if (isLoaded()) { 152 if (isLoaded()) {
153 if (m_font) { 153 if (m_font) {
154 #if ENABLE(SVG_FONTS) 154 #if ENABLE(SVG_FONTS)
155 if (m_hasExternalSVGFont) { 155 if (m_hasExternalSVGFont) {
156 // For SVG fonts parse the external SVG document, and extract th e <font> element. 156 // For SVG fonts parse the external SVG document, and extract th e <font> element.
157 if (!m_font->ensureSVGFontData()) 157 if (!m_font->ensureSVGFontData())
158 return 0; 158 return nullptr;
159 159
160 if (!m_externalSVGFontElement) { 160 if (!m_externalSVGFontElement) {
161 String fragmentIdentifier; 161 String fragmentIdentifier;
162 size_t start = m_string.find('#'); 162 size_t start = m_string.find('#');
163 if (start != kNotFound) 163 if (start != kNotFound)
164 fragmentIdentifier = m_string.string().substring(start + 1); 164 fragmentIdentifier = m_string.string().substring(start + 1);
165 m_externalSVGFontElement = m_font->getSVGFontById(fragmentId entifier); 165 m_externalSVGFontElement = m_font->getSVGFontById(fragmentId entifier);
166 } 166 }
167 167
168 if (!m_externalSVGFontElement) 168 if (!m_externalSVGFontElement)
169 return 0; 169 return nullptr;
170 170
171 SVGFontFaceElement* fontFaceElement = 0; 171 SVGFontFaceElement* fontFaceElement = 0;
172 172
173 // Select first <font-face> child 173 // Select first <font-face> child
174 for (Node* fontChild = m_externalSVGFontElement->firstChild(); f ontChild; fontChild = fontChild->nextSibling()) { 174 for (Node* fontChild = m_externalSVGFontElement->firstChild(); f ontChild; fontChild = fontChild->nextSibling()) {
175 if (fontChild->hasTagName(SVGNames::font_faceTag)) { 175 if (fontChild->hasTagName(SVGNames::font_faceTag)) {
176 fontFaceElement = toSVGFontFaceElement(fontChild); 176 fontFaceElement = toSVGFontFaceElement(fontChild);
177 break; 177 break;
178 } 178 }
179 } 179 }
180 180
181 if (fontFaceElement) { 181 if (fontFaceElement) {
182 if (!m_svgFontFaceElement) { 182 if (!m_svgFontFaceElement) {
183 // We're created using a CSS @font-face rule, that means we're not associated with a SVGFontFaceElement. 183 // We're created using a CSS @font-face rule, that means we're not associated with a SVGFontFaceElement.
184 // Use the imported <font-face> tag as referencing font- face element for these cases. 184 // Use the imported <font-face> tag as referencing font- face element for these cases.
185 m_svgFontFaceElement = fontFaceElement; 185 m_svgFontFaceElement = fontFaceElement;
186 } 186 }
187 187
188 fontData = SimpleFontData::create( 188 fontData = SimpleFontData::create(
189 SVGFontData::create(fontFaceElement), 189 SVGFontData::create(fontFaceElement),
190 fontDescription.effectiveFontSize(), 190 fontDescription.effectiveFontSize(),
191 fontDescription.isSyntheticBold(), 191 fontDescription.isSyntheticBold(),
192 fontDescription.isSyntheticItalic()); 192 fontDescription.isSyntheticItalic());
193 } 193 }
194 } else 194 } else
195 #endif 195 #endif
196 { 196 {
197 // Create new FontPlatformData from our CGFontRef, point size an d ATSFontRef. 197 // Create new FontPlatformData from our CGFontRef, point size an d ATSFontRef.
198 if (!m_font->ensureCustomFontData()) 198 if (!m_font->ensureCustomFontData())
199 return 0; 199 return nullptr;
200 200
201 fontData = SimpleFontData::create( 201 fontData = SimpleFontData::create(
202 m_font->platformDataFromCustomData(fontDescription.effective FontSize(), 202 m_font->platformDataFromCustomData(fontDescription.effective FontSize(),
203 fontDescription.isSyntheticBold(), fontDescription.isSyn theticItalic(), 203 fontDescription.isSyntheticBold(), fontDescription.isSyn theticItalic(),
204 fontDescription.orientation(), fontDescription.widthVari ant()), CustomFontData::create(false)); 204 fontDescription.orientation(), fontDescription.widthVari ant()), CustomFontData::create(false));
205 } 205 }
206 } else { 206 } else {
207 #if ENABLE(SVG_FONTS) 207 #if ENABLE(SVG_FONTS)
208 // In-Document SVG Fonts 208 // In-Document SVG Fonts
209 if (m_svgFontFaceElement) { 209 if (m_svgFontFaceElement) {
210 fontData = SimpleFontData::create( 210 fontData = SimpleFontData::create(
211 SVGFontData::create(m_svgFontFaceElement.get()), 211 SVGFontData::create(m_svgFontFaceElement.get()),
212 fontDescription.effectiveFontSize(), 212 fontDescription.effectiveFontSize(),
213 fontDescription.isSyntheticBold(), 213 fontDescription.isSyntheticBold(),
214 fontDescription.isSyntheticItalic()); 214 fontDescription.isSyntheticItalic());
215 } 215 }
216 #endif 216 #endif
217 } 217 }
218 } else { 218 } else {
219 // This temporary font is not retained and should not be returned. 219 // This temporary font is not retained and should not be returned.
220 FontCachePurgePreventer fontCachePurgePreventer; 220 FontCachePurgePreventer fontCachePurgePreventer;
221 SimpleFontData* temporaryFont = FontCache::fontCache()->getNonRetainedLa stResortFallbackFont(fontDescription); 221 SimpleFontData* temporaryFont = FontCache::fontCache()->getNonRetainedLa stResortFallbackFont(fontDescription);
222 if (!temporaryFont) { 222 if (!temporaryFont) {
223 ASSERT_NOT_REACHED(); 223 ASSERT_NOT_REACHED();
224 return 0; 224 return nullptr;
225 } 225 }
226 RefPtr<CSSCustomFontData> cssFontData = CSSCustomFontData::create(true); 226 RefPtr<CSSCustomFontData> cssFontData = CSSCustomFontData::create(true);
227 cssFontData->setCSSFontFaceSource(this); 227 cssFontData->setCSSFontFaceSource(this);
228 fontData = SimpleFontData::create(temporaryFont->platformData(), cssFont Data); 228 fontData = SimpleFontData::create(temporaryFont->platformData(), cssFont Data);
229 } 229 }
230 230
231 return fontData; // No release, because fontData is a reference to a RefPtr that is held in the m_fontDataTable. 231 return fontData; // No release, because fontData is a reference to a RefPtr that is held in the m_fontDataTable.
232 } 232 }
233 233
234 #if ENABLE(SVG_FONTS) 234 #if ENABLE(SVG_FONTS)
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 if (size < 50 * 1024) 312 if (size < 50 * 1024)
313 return "WebFont.DownloadTime.1.10KBTo50KB"; 313 return "WebFont.DownloadTime.1.10KBTo50KB";
314 if (size < 100 * 1024) 314 if (size < 100 * 1024)
315 return "WebFont.DownloadTime.2.50KBTo100KB"; 315 return "WebFont.DownloadTime.2.50KBTo100KB";
316 if (size < 1024 * 1024) 316 if (size < 1024 * 1024)
317 return "WebFont.DownloadTime.3.100KBTo1MB"; 317 return "WebFont.DownloadTime.3.100KBTo1MB";
318 return "WebFont.DownloadTime.4.Over1MB"; 318 return "WebFont.DownloadTime.4.Over1MB";
319 } 319 }
320 320
321 } 321 }
OLDNEW
« no previous file with comments | « Source/core/css/CSSFontFace.cpp ('k') | Source/core/css/CSSFontSelector.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698