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

Side by Side Diff: Source/core/svg/SVGFontFaceElement.cpp

Issue 338213004: Oilpan: Trace SVGFontFaceElement::m_fontElement. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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/svg/SVGFontFaceElement.h ('k') | no next file » | 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 Eric Seidel <eric@webkit.org> 2 * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
3 * Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2007, 2008 Nikolas Zimmermann <zimmermann@kde.org>
4 * Copyright (C) 2008 Apple Inc. All rights reserved. 4 * Copyright (C) 2008 Apple Inc. All rights reserved.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "platform/fonts/Font.h" 42 #include "platform/fonts/Font.h"
43 #include <math.h> 43 #include <math.h>
44 44
45 namespace WebCore { 45 namespace WebCore {
46 46
47 using namespace SVGNames; 47 using namespace SVGNames;
48 48
49 inline SVGFontFaceElement::SVGFontFaceElement(Document& document) 49 inline SVGFontFaceElement::SVGFontFaceElement(Document& document)
50 : SVGElement(font_faceTag, document) 50 : SVGElement(font_faceTag, document)
51 , m_fontFaceRule(StyleRuleFontFace::create()) 51 , m_fontFaceRule(StyleRuleFontFace::create())
52 , m_fontElement(0) 52 , m_fontElement(nullptr)
53 , m_weakFactory(this) 53 , m_weakFactory(this)
54 { 54 {
55 ScriptWrappable::init(this); 55 ScriptWrappable::init(this);
56 RefPtrWillBeRawPtr<MutableStylePropertySet> styleDeclaration = MutableStyleP ropertySet::create(HTMLStandardMode); 56 RefPtrWillBeRawPtr<MutableStylePropertySet> styleDeclaration = MutableStyleP ropertySet::create(HTMLStandardMode);
57 m_fontFaceRule->setProperties(styleDeclaration.release()); 57 m_fontFaceRule->setProperties(styleDeclaration.release());
58 } 58 }
59 59
60 DEFINE_NODE_FACTORY(SVGFontFaceElement) 60 DEFINE_NODE_FACTORY(SVGFontFaceElement)
61 61
62 static CSSPropertyID cssPropertyIdForFontFaceAttributeName(const QualifiedName& attrName) 62 static CSSPropertyID cssPropertyIdForFontFaceAttributeName(const QualifiedName& attrName)
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 275
276 bool describesParentFont = isSVGFontElement(*parentNode()); 276 bool describesParentFont = isSVGFontElement(*parentNode());
277 RefPtrWillBeRawPtr<CSSValueList> list = nullptr; 277 RefPtrWillBeRawPtr<CSSValueList> list = nullptr;
278 278
279 if (describesParentFont) { 279 if (describesParentFont) {
280 m_fontElement = toSVGFontElement(parentNode()); 280 m_fontElement = toSVGFontElement(parentNode());
281 281
282 list = CSSValueList::createCommaSeparated(); 282 list = CSSValueList::createCommaSeparated();
283 list->append(CSSFontFaceSrcValue::createLocal(fontFamily())); 283 list->append(CSSFontFaceSrcValue::createLocal(fontFamily()));
284 } else { 284 } else {
285 m_fontElement = 0; 285 m_fontElement = nullptr;
286 // we currently ignore all but the last src element, alternatively we co uld concat them 286 // we currently ignore all but the last src element, alternatively we co uld concat them
287 if (SVGFontFaceSrcElement* element = Traversal<SVGFontFaceSrcElement>::l astChild(*this)) 287 if (SVGFontFaceSrcElement* element = Traversal<SVGFontFaceSrcElement>::l astChild(*this))
288 list = element->srcValue(); 288 list = element->srcValue();
289 } 289 }
290 290
291 if (!list || !list->length()) 291 if (!list || !list->length())
292 return; 292 return;
293 293
294 // Parse in-memory CSS rules 294 // Parse in-memory CSS rules
295 m_fontFaceRule->mutableProperties().addParsedProperty(CSSProperty(CSSPropert ySrc, list)); 295 m_fontFaceRule->mutableProperties().addParsedProperty(CSSProperty(CSSPropert ySrc, list));
(...skipping 24 matching lines...) Expand all
320 320
321 rebuildFontFace(); 321 rebuildFontFace();
322 return InsertionDone; 322 return InsertionDone;
323 } 323 }
324 324
325 void SVGFontFaceElement::removedFrom(ContainerNode* rootParent) 325 void SVGFontFaceElement::removedFrom(ContainerNode* rootParent)
326 { 326 {
327 SVGElement::removedFrom(rootParent); 327 SVGElement::removedFrom(rootParent);
328 328
329 if (rootParent->inDocument()) { 329 if (rootParent->inDocument()) {
330 m_fontElement = 0; 330 m_fontElement = nullptr;
331 document().accessSVGExtensions().unregisterSVGFontFaceElement(this); 331 document().accessSVGExtensions().unregisterSVGFontFaceElement(this);
332 332
333 // FIXME: HTMLTemplateElement's document or imported document can be ac tive? 333 // FIXME: HTMLTemplateElement's document or imported document can be ac tive?
334 // If so, we also need to check whether fontSelector() is nullptr or not . 334 // If so, we also need to check whether fontSelector() is nullptr or not .
335 // Otherwise, we will use just document().isActive() here. 335 // Otherwise, we will use just document().isActive() here.
336 if (document().isActive() && document().styleEngine()->fontSelector()) { 336 if (document().isActive() && document().styleEngine()->fontSelector()) {
337 document().styleEngine()->fontSelector()->fontFaceCache()->remove(m_ fontFaceRule.get()); 337 document().styleEngine()->fontSelector()->fontFaceCache()->remove(m_ fontFaceRule.get());
338 document().accessSVGExtensions().registerPendingSVGFontFaceElementsF orRemoval(this); 338 document().accessSVGExtensions().registerPendingSVGFontFaceElementsF orRemoval(this);
339 } 339 }
340 m_fontFaceRule->mutableProperties().clear(); 340 m_fontFaceRule->mutableProperties().clear();
341 document().styleResolverChanged(); 341 document().styleResolverChanged();
342 } else 342 } else
343 ASSERT(!m_fontElement); 343 ASSERT(!m_fontElement);
344 } 344 }
345 345
346 void SVGFontFaceElement::childrenChanged(bool changedByParser, Node* beforeChang e, Node* afterChange, int childCountDelta) 346 void SVGFontFaceElement::childrenChanged(bool changedByParser, Node* beforeChang e, Node* afterChange, int childCountDelta)
347 { 347 {
348 SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, chil dCountDelta); 348 SVGElement::childrenChanged(changedByParser, beforeChange, afterChange, chil dCountDelta);
349 rebuildFontFace(); 349 rebuildFontFace();
350 } 350 }
351 351
352 void SVGFontFaceElement::trace(Visitor* visitor) 352 void SVGFontFaceElement::trace(Visitor* visitor)
353 { 353 {
354 visitor->trace(m_fontFaceRule); 354 visitor->trace(m_fontFaceRule);
355 visitor->trace(m_fontElement);
355 SVGElement::trace(visitor); 356 SVGElement::trace(visitor);
356 } 357 }
357 358
358 } // namespace WebCore 359 } // namespace WebCore
359 360
360 #endif // ENABLE(SVG_FONTS) 361 #endif // ENABLE(SVG_FONTS)
OLDNEW
« no previous file with comments | « Source/core/svg/SVGFontFaceElement.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698