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

Side by Side Diff: third_party/WebKit/Source/core/dom/StyleEngine.cpp

Issue 2336693002: Rendering text to a canvas in a frame-less document. (Closed)
Patch Set: Created 4 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
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, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights 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, 2011, 2012 Google Inc. All rights reserved. 8 * Copyright (C) 2008, 2009, 2011, 2012 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 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 #include "platform/fonts/FontCache.h" 54 #include "platform/fonts/FontCache.h"
55 55
56 namespace blink { 56 namespace blink {
57 57
58 using namespace HTMLNames; 58 using namespace HTMLNames;
59 59
60 StyleEngine::StyleEngine(Document& document) 60 StyleEngine::StyleEngine(Document& document)
61 : m_document(&document) 61 : m_document(&document)
62 , m_isMaster(!document.importsController() || document.importsController()-> master() == &document) 62 , m_isMaster(!document.importsController() || document.importsController()-> master() == &document)
63 , m_documentStyleSheetCollection(DocumentStyleSheetCollection::create(docume nt)) 63 , m_documentStyleSheetCollection(DocumentStyleSheetCollection::create(docume nt))
64 // We don't need to create CSSFontSelector for imported document or 64 , m_fontSelector(CSSFontSelector::create(&document))
Justin Novosad 2016/09/12 18:44:59 This should be lazily allocated instead of in the
zakerinasab 2016/09/12 19:47:34 Done.
65 // HTMLTemplateElement's document, because those documents have no frame.
66 , m_fontSelector(document.frame() ? CSSFontSelector::create(&document) : nul lptr)
67 { 65 {
68 if (m_fontSelector) 66 if (m_fontSelector)
69 m_fontSelector->registerForInvalidationCallbacks(this); 67 m_fontSelector->registerForInvalidationCallbacks(this);
70 } 68 }
71 69
72 StyleEngine::~StyleEngine() 70 StyleEngine::~StyleEngine()
73 { 71 {
74 } 72 }
75 73
76 static bool isStyleElement(Node& node) 74 static bool isStyleElement(Node& node)
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 m_resolver->appendAuthorStyleSheets(documentStyleSheetCollection()->activeAu thorStyleSheets()); 381 m_resolver->appendAuthorStyleSheets(documentStyleSheetCollection()->activeAu thorStyleSheets());
384 for (TreeScope* treeScope : m_activeTreeScopes) { 382 for (TreeScope* treeScope : m_activeTreeScopes) {
385 if (TreeScopeStyleSheetCollection* collection = m_styleSheetCollectionMa p.get(treeScope)) 383 if (TreeScopeStyleSheetCollection* collection = m_styleSheetCollectionMa p.get(treeScope))
386 m_resolver->appendAuthorStyleSheets(collection->activeAuthorStyleShe ets()); 384 m_resolver->appendAuthorStyleSheets(collection->activeAuthorStyleShe ets());
387 } 385 }
388 m_resolver->finishAppendAuthorStyleSheets(); 386 m_resolver->finishAppendAuthorStyleSheets();
389 } 387 }
390 388
391 void StyleEngine::createResolver() 389 void StyleEngine::createResolver()
392 { 390 {
393 TRACE_EVENT1("blink", "StyleEngine::createResolver", "frame", document().fra me());
394 // It is a programming error to attempt to resolve style on a Document
395 // which is not in a frame. Code which hits this should have checked
396 // Document::isActive() before calling into code which could get here.
397
398 DCHECK(document().frame());
399
400 m_resolver = StyleResolver::create(*m_document); 391 m_resolver = StyleResolver::create(*m_document);
401 392
402 // A scoped style resolver for document will be created during 393 // A scoped style resolver for document will be created during
403 // appendActiveAuthorStyleSheets if needed. 394 // appendActiveAuthorStyleSheets if needed.
404 appendActiveAuthorStyleSheets(); 395 appendActiveAuthorStyleSheets();
405 } 396 }
406 397
407 void StyleEngine::clearResolver() 398 void StyleEngine::clearResolver()
408 { 399 {
409 DCHECK(!document().inStyleRecalc()); 400 DCHECK(!document().inStyleRecalc());
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 833
843 DEFINE_TRACE_WRAPPERS(StyleEngine) 834 DEFINE_TRACE_WRAPPERS(StyleEngine)
844 { 835 {
845 for (auto sheet : m_injectedAuthorStyleSheets) { 836 for (auto sheet : m_injectedAuthorStyleSheets) {
846 visitor->traceWrappers(sheet); 837 visitor->traceWrappers(sheet);
847 } 838 }
848 visitor->traceWrappers(m_documentStyleSheetCollection); 839 visitor->traceWrappers(m_documentStyleSheetCollection);
849 } 840 }
850 841
851 } // namespace blink 842 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698