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

Side by Side Diff: Source/WebCore/dom/Document.cpp

Issue 7932007: Merge 94508 - <rdar://problem/10071256> Retain retired custom fonts until the next style recalc (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/835/
Patch Set: Created 9 years, 3 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
« no previous file with comments | « Source/WebCore/dom/Document.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) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
8 * Copyright (C) 2008, 2009 Google Inc. All rights reserved. 8 * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
10 * 10 *
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 m_elemSheet->clearOwnerNode(); 539 m_elemSheet->clearOwnerNode();
540 if (m_mappedElementSheet) 540 if (m_mappedElementSheet)
541 m_mappedElementSheet->clearOwnerNode(); 541 m_mappedElementSheet->clearOwnerNode();
542 if (m_pageUserSheet) 542 if (m_pageUserSheet)
543 m_pageUserSheet->clearOwnerNode(); 543 m_pageUserSheet->clearOwnerNode();
544 if (m_pageGroupUserSheets) { 544 if (m_pageGroupUserSheets) {
545 for (size_t i = 0; i < m_pageGroupUserSheets->size(); ++i) 545 for (size_t i = 0; i < m_pageGroupUserSheets->size(); ++i)
546 (*m_pageGroupUserSheets)[i]->clearOwnerNode(); 546 (*m_pageGroupUserSheets)[i]->clearOwnerNode();
547 } 547 }
548 548
549 deleteRetiredCustomFonts();
550
549 m_weakReference->clear(); 551 m_weakReference->clear();
550 552
551 if (m_mediaQueryMatcher) 553 if (m_mediaQueryMatcher)
552 m_mediaQueryMatcher->documentDestroyed(); 554 m_mediaQueryMatcher->documentDestroyed();
553 } 555 }
554 556
555 void Document::removedLastRef() 557 void Document::removedLastRef()
556 { 558 {
557 ASSERT(!m_deletionHasBegun); 559 ASSERT(!m_deletionHasBegun);
558 if (m_guardRefCount) { 560 if (m_guardRefCount) {
(...skipping 962 matching lines...) Expand 10 before | Expand all | Expand 10 after
1521 RefPtr<RenderStyle> documentStyle = CSSStyleSelector::styleForDocument(t his); 1523 RefPtr<RenderStyle> documentStyle = CSSStyleSelector::styleForDocument(t his);
1522 StyleChange ch = diff(documentStyle.get(), renderer()->style()); 1524 StyleChange ch = diff(documentStyle.get(), renderer()->style());
1523 if (ch != NoChange) 1525 if (ch != NoChange)
1524 renderer()->setStyle(documentStyle.release()); 1526 renderer()->setStyle(documentStyle.release());
1525 } 1527 }
1526 1528
1527 for (Node* n = firstChild(); n; n = n->nextSibling()) 1529 for (Node* n = firstChild(); n; n = n->nextSibling())
1528 if (change >= Inherit || n->childNeedsStyleRecalc() || n->needsStyleReca lc()) 1530 if (change >= Inherit || n->childNeedsStyleRecalc() || n->needsStyleReca lc())
1529 n->recalcStyle(change); 1531 n->recalcStyle(change);
1530 1532
1533 // Now that all RenderStyles that pointed to retired fonts have been updated , the fonts can safely be deleted.
1534 deleteRetiredCustomFonts();
1535
1531 #if USE(ACCELERATED_COMPOSITING) 1536 #if USE(ACCELERATED_COMPOSITING)
1532 if (view()) { 1537 if (view()) {
1533 bool layoutPending = view()->layoutPending() || renderer()->needsLayout( ); 1538 bool layoutPending = view()->layoutPending() || renderer()->needsLayout( );
1534 // If we didn't update compositing layers because of layout(), we need t o do so here. 1539 // If we didn't update compositing layers because of layout(), we need t o do so here.
1535 if (!layoutPending) 1540 if (!layoutPending)
1536 view()->updateCompositingLayers(); 1541 view()->updateCompositingLayers();
1537 } 1542 }
1538 #endif 1543 #endif
1539 1544
1540 bail_out: 1545 bail_out:
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
1657 m_ignorePendingStylesheets = oldIgnore; 1662 m_ignorePendingStylesheets = oldIgnore;
1658 return style.release(); 1663 return style.release();
1659 } 1664 }
1660 1665
1661 PassRefPtr<RenderStyle> Document::styleForPage(int pageIndex) 1666 PassRefPtr<RenderStyle> Document::styleForPage(int pageIndex)
1662 { 1667 {
1663 RefPtr<RenderStyle> style = styleSelector()->styleForPage(pageIndex); 1668 RefPtr<RenderStyle> style = styleSelector()->styleForPage(pageIndex);
1664 return style.release(); 1669 return style.release();
1665 } 1670 }
1666 1671
1672 void Document::retireCustomFont(FontData* fontData)
1673 {
1674 m_retiredCustomFonts.append(adoptPtr(fontData));
1675 }
1676
1677 void Document::deleteRetiredCustomFonts()
1678 {
1679 size_t size = m_retiredCustomFonts.size();
1680 for (size_t i = 0; i < size; ++i)
1681 GlyphPageTreeNode::pruneTreeCustomFontData(m_retiredCustomFonts[i].get() );
1682
1683 m_retiredCustomFonts.clear();
1684 }
1685
1667 bool Document::isPageBoxVisible(int pageIndex) 1686 bool Document::isPageBoxVisible(int pageIndex)
1668 { 1687 {
1669 RefPtr<RenderStyle> style = styleForPage(pageIndex); 1688 RefPtr<RenderStyle> style = styleForPage(pageIndex);
1670 return style->visibility() != HIDDEN; // display property doesn't apply to @ page. 1689 return style->visibility() != HIDDEN; // display property doesn't apply to @ page.
1671 } 1690 }
1672 1691
1673 void Document::pageSizeAndMarginsInPixels(int pageIndex, IntSize& pageSize, int& marginTop, int& marginRight, int& marginBottom, int& marginLeft) 1692 void Document::pageSizeAndMarginsInPixels(int pageIndex, IntSize& pageSize, int& marginTop, int& marginRight, int& marginBottom, int& marginLeft)
1674 { 1693 {
1675 RefPtr<RenderStyle> style = styleForPage(pageIndex); 1694 RefPtr<RenderStyle> style = styleForPage(pageIndex);
1676 1695
(...skipping 3394 matching lines...) Expand 10 before | Expand all | Expand 10 after
5071 if (!loader) 5090 if (!loader)
5072 return 0; 5091 return 0;
5073 5092
5074 if (m_frame->document() != this) 5093 if (m_frame->document() != this)
5075 return 0; 5094 return 0;
5076 5095
5077 return loader; 5096 return loader;
5078 } 5097 }
5079 5098
5080 } // namespace WebCore 5099 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/dom/Document.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698