Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 555 m_dirtyTreeScopes.add(&scope); | 555 m_dirtyTreeScopes.add(&scope); |
| 556 } | 556 } |
| 557 | 557 |
| 558 void StyleEngine::markDocumentDirty() | 558 void StyleEngine::markDocumentDirty() |
| 559 { | 559 { |
| 560 m_documentScopeDirty = true; | 560 m_documentScopeDirty = true; |
| 561 if (!HTMLImport::isMaster(&m_document)) | 561 if (!HTMLImport::isMaster(&m_document)) |
| 562 m_document.import()->master()->styleEngine()->markDocumentDirty(); | 562 m_document.import()->master()->styleEngine()->markDocumentDirty(); |
| 563 } | 563 } |
| 564 | 564 |
| 565 static bool isCacheableForInlineStyle(const StyleSheetContents& contents) | |
|
esprehn
2014/03/19 22:32:14
inline style actually means the style attribute, I
adamk
2014/03/19 22:40:17
You're right, when I re-read this name it sounded
| |
| 566 { | |
| 567 // FIXME: Support copying import rules. | |
| 568 if (!contents.importRules().isEmpty()) | |
| 569 return false; | |
| 570 // Until import rules are supported in cached sheets it's not possible for l oading to fail. | |
| 571 ASSERT(!contents.didLoadErrorOccur()); | |
| 572 // It is not the original sheet anymore. | |
| 573 if (contents.isMutable()) | |
| 574 return false; | |
| 575 if (!contents.hasSyntacticallyValidCSSHeader()) | |
| 576 return false; | |
| 577 return true; | |
| 578 } | |
| 579 | |
| 565 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::createSheet(Element* e, const String& text, TextPosition startPosition, bool createdByParser) | 580 PassRefPtrWillBeRawPtr<CSSStyleSheet> StyleEngine::createSheet(Element* e, const String& text, TextPosition startPosition, bool createdByParser) |
| 566 { | 581 { |
| 567 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet; | 582 RefPtrWillBeRawPtr<CSSStyleSheet> styleSheet; |
| 568 | 583 |
| 569 e->document().styleEngine()->addPendingSheet(); | 584 e->document().styleEngine()->addPendingSheet(); |
| 570 | 585 |
| 571 if (!e->document().inQuirksMode()) { | 586 if (!e->document().inQuirksMode()) { |
| 572 AtomicString textContent(text); | 587 AtomicString textContent(text); |
| 573 | 588 |
| 574 HashMap<AtomicString, StyleSheetContents*>::AddResult result = m_textToS heetCache.add(textContent, 0); | 589 HashMap<AtomicString, StyleSheetContents*>::AddResult result = m_textToS heetCache.add(textContent, 0); |
| 575 if (result.isNewEntry || !result.storedValue->value) { | 590 if (result.isNewEntry || !result.storedValue->value) { |
| 576 styleSheet = StyleEngine::parseSheet(e, text, startPosition, created ByParser); | 591 styleSheet = StyleEngine::parseSheet(e, text, startPosition, created ByParser); |
| 577 if (result.isNewEntry && styleSheet->contents()->maybeCacheable()) { | 592 if (result.isNewEntry && isCacheableForInlineStyle(*styleSheet->cont ents())) { |
| 578 result.storedValue->value = styleSheet->contents(); | 593 result.storedValue->value = styleSheet->contents(); |
| 579 m_sheetToTextCache.add(styleSheet->contents(), textContent); | 594 m_sheetToTextCache.add(styleSheet->contents(), textContent); |
| 580 } | 595 } |
| 581 } else { | 596 } else { |
| 582 ASSERT(result.storedValue->value->maybeCacheable()); | 597 StyleSheetContents* contents = result.storedValue->value; |
| 583 ASSERT(result.storedValue->value->singleOwnerDocument() == e->docume nt()); | 598 ASSERT(contents); |
| 584 styleSheet = CSSStyleSheet::createInline(result.storedValue->value, e, startPosition); | 599 ASSERT(isCacheableForInlineStyle(*contents)); |
| 600 ASSERT(contents->singleOwnerDocument() == e->document()); | |
| 601 styleSheet = CSSStyleSheet::createInline(contents, e, startPosition) ; | |
| 585 } | 602 } |
| 586 } else { | 603 } else { |
| 587 // FIXME: currently we don't cache StyleSheetContents inQuirksMode. | 604 // FIXME: currently we don't cache StyleSheetContents inQuirksMode. |
| 588 styleSheet = StyleEngine::parseSheet(e, text, startPosition, createdByPa rser); | 605 styleSheet = StyleEngine::parseSheet(e, text, startPosition, createdByPa rser); |
| 589 } | 606 } |
| 590 | 607 |
| 591 ASSERT(styleSheet); | 608 ASSERT(styleSheet); |
| 592 styleSheet->setTitle(e->title()); | 609 styleSheet->setTitle(e->title()); |
| 593 return styleSheet; | 610 return styleSheet; |
| 594 } | 611 } |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 613 | 630 |
| 614 void StyleEngine::trace(Visitor* visitor) | 631 void StyleEngine::trace(Visitor* visitor) |
| 615 { | 632 { |
| 616 visitor->trace(m_injectedAuthorStyleSheets); | 633 visitor->trace(m_injectedAuthorStyleSheets); |
| 617 visitor->trace(m_authorStyleSheets); | 634 visitor->trace(m_authorStyleSheets); |
| 618 visitor->trace(m_documentStyleSheetCollection); | 635 visitor->trace(m_documentStyleSheetCollection); |
| 619 visitor->trace(m_styleSheetCollectionMap); | 636 visitor->trace(m_styleSheetCollectionMap); |
| 620 } | 637 } |
| 621 | 638 |
| 622 } | 639 } |
| OLD | NEW |