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 | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All |
7 * rights reserved. | 7 * rights reserved. |
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
10 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 10 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
(...skipping 19 matching lines...) Expand all Loading... |
30 #include "core/dom/StyleEngine.h" | 30 #include "core/dom/StyleEngine.h" |
31 | 31 |
32 #include "core/HTMLNames.h" | 32 #include "core/HTMLNames.h" |
33 #include "core/css/CSSDefaultStyleSheets.h" | 33 #include "core/css/CSSDefaultStyleSheets.h" |
34 #include "core/css/CSSFontSelector.h" | 34 #include "core/css/CSSFontSelector.h" |
35 #include "core/css/CSSStyleSheet.h" | 35 #include "core/css/CSSStyleSheet.h" |
36 #include "core/css/FontFaceCache.h" | 36 #include "core/css/FontFaceCache.h" |
37 #include "core/css/StyleSheetContents.h" | 37 #include "core/css/StyleSheetContents.h" |
38 #include "core/css/invalidation/InvalidationSet.h" | 38 #include "core/css/invalidation/InvalidationSet.h" |
39 #include "core/css/resolver/ScopedStyleResolver.h" | 39 #include "core/css/resolver/ScopedStyleResolver.h" |
| 40 #include "core/css/resolver/ViewportStyleResolver.h" |
40 #include "core/dom/DocumentStyleSheetCollector.h" | 41 #include "core/dom/DocumentStyleSheetCollector.h" |
41 #include "core/dom/Element.h" | 42 #include "core/dom/Element.h" |
42 #include "core/dom/ElementTraversal.h" | 43 #include "core/dom/ElementTraversal.h" |
43 #include "core/dom/ProcessingInstruction.h" | 44 #include "core/dom/ProcessingInstruction.h" |
44 #include "core/dom/ShadowTreeStyleSheetCollection.h" | 45 #include "core/dom/ShadowTreeStyleSheetCollection.h" |
45 #include "core/dom/StyleChangeReason.h" | 46 #include "core/dom/StyleChangeReason.h" |
46 #include "core/dom/shadow/ShadowRoot.h" | 47 #include "core/dom/shadow/ShadowRoot.h" |
47 #include "core/frame/Settings.h" | 48 #include "core/frame/Settings.h" |
48 #include "core/html/HTMLIFrameElement.h" | 49 #include "core/html/HTMLIFrameElement.h" |
49 #include "core/html/HTMLLinkElement.h" | 50 #include "core/html/HTMLLinkElement.h" |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 collection->activeAuthorStyleSheets()); | 387 collection->activeAuthorStyleSheets()); |
387 } | 388 } |
388 m_styleSheetCollectionMap.remove(shadowRoot); | 389 m_styleSheetCollectionMap.remove(shadowRoot); |
389 m_activeTreeScopes.remove(shadowRoot); | 390 m_activeTreeScopes.remove(shadowRoot); |
390 m_dirtyTreeScopes.remove(shadowRoot); | 391 m_dirtyTreeScopes.remove(shadowRoot); |
391 } | 392 } |
392 | 393 |
393 void StyleEngine::appendActiveAuthorStyleSheets() { | 394 void StyleEngine::appendActiveAuthorStyleSheets() { |
394 DCHECK(isMaster()); | 395 DCHECK(isMaster()); |
395 | 396 |
| 397 documentStyleSheetCollection().updateViewport(); |
| 398 |
396 m_resolver->appendAuthorStyleSheets( | 399 m_resolver->appendAuthorStyleSheets( |
397 documentStyleSheetCollection().activeAuthorStyleSheets()); | 400 documentStyleSheetCollection().activeAuthorStyleSheets()); |
398 for (TreeScope* treeScope : m_activeTreeScopes) { | 401 for (TreeScope* treeScope : m_activeTreeScopes) { |
399 if (TreeScopeStyleSheetCollection* collection = | 402 if (TreeScopeStyleSheetCollection* collection = |
400 m_styleSheetCollectionMap.get(treeScope)) | 403 m_styleSheetCollectionMap.get(treeScope)) |
401 m_resolver->appendAuthorStyleSheets( | 404 m_resolver->appendAuthorStyleSheets( |
402 collection->activeAuthorStyleSheets()); | 405 collection->activeAuthorStyleSheets()); |
403 } | 406 } |
404 m_resolver->finishAppendAuthorStyleSheets(); | 407 m_resolver->finishAppendAuthorStyleSheets(); |
405 } | 408 } |
(...skipping 29 matching lines...) Expand all Loading... |
435 } | 438 } |
436 } | 439 } |
437 | 440 |
438 void StyleEngine::clearMasterResolver() { | 441 void StyleEngine::clearMasterResolver() { |
439 if (Document* master = this->master()) | 442 if (Document* master = this->master()) |
440 master->styleEngine().clearResolver(); | 443 master->styleEngine().clearResolver(); |
441 } | 444 } |
442 | 445 |
443 void StyleEngine::didDetach() { | 446 void StyleEngine::didDetach() { |
444 clearResolver(); | 447 clearResolver(); |
| 448 m_viewportResolver.clear(); |
445 } | 449 } |
446 | 450 |
447 bool StyleEngine::shouldClearResolver() const { | 451 bool StyleEngine::shouldClearResolver() const { |
448 return !m_didCalculateResolver && !haveScriptBlockingStylesheetsLoaded(); | 452 return !m_didCalculateResolver && !haveScriptBlockingStylesheetsLoaded(); |
449 } | 453 } |
450 | 454 |
451 void StyleEngine::resolverChanged(StyleResolverUpdateMode mode) { | 455 void StyleEngine::resolverChanged(StyleResolverUpdateMode mode) { |
452 if (!isMaster()) { | 456 if (!isMaster()) { |
453 if (Document* master = this->master()) | 457 if (Document* master = this->master()) |
454 master->styleEngine().resolverChanged(mode); | 458 master->styleEngine().resolverChanged(mode); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 if (!m_fontSelector) | 496 if (!m_fontSelector) |
493 return; | 497 return; |
494 | 498 |
495 FontFaceCache* cache = m_fontSelector->fontFaceCache(); | 499 FontFaceCache* cache = m_fontSelector->fontFaceCache(); |
496 for (unsigned i = 0; i < fontFaceRules.size(); ++i) | 500 for (unsigned i = 0; i < fontFaceRules.size(); ++i) |
497 cache->remove(fontFaceRules[i]); | 501 cache->remove(fontFaceRules[i]); |
498 if (m_resolver) | 502 if (m_resolver) |
499 m_resolver->invalidateMatchedPropertiesCache(); | 503 m_resolver->invalidateMatchedPropertiesCache(); |
500 } | 504 } |
501 | 505 |
| 506 ViewportStyleResolver& StyleEngine::ensureViewportStyleResolver() { |
| 507 if (!m_viewportResolver) |
| 508 m_viewportResolver = ViewportStyleResolver::create(m_document); |
| 509 return *m_viewportResolver.get(); |
| 510 } |
| 511 |
502 void StyleEngine::markTreeScopeDirty(TreeScope& scope) { | 512 void StyleEngine::markTreeScopeDirty(TreeScope& scope) { |
503 if (scope == m_document) { | 513 if (scope == m_document) { |
504 markDocumentDirty(); | 514 markDocumentDirty(); |
505 return; | 515 return; |
506 } | 516 } |
507 | 517 |
508 DCHECK(m_styleSheetCollectionMap.contains(&scope)); | 518 DCHECK(m_styleSheetCollectionMap.contains(&scope)); |
509 m_dirtyTreeScopes.add(&scope); | 519 m_dirtyTreeScopes.add(&scope); |
510 } | 520 } |
511 | 521 |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 } | 950 } |
941 | 951 |
942 void StyleEngine::ensureFullscreenUAStyle() { | 952 void StyleEngine::ensureFullscreenUAStyle() { |
943 CSSDefaultStyleSheets::instance().ensureDefaultStyleSheetForFullscreen(); | 953 CSSDefaultStyleSheets::instance().ensureDefaultStyleSheetForFullscreen(); |
944 if (!m_resolver) | 954 if (!m_resolver) |
945 return; | 955 return; |
946 if (!m_resolver->hasFullscreenUAStyle()) | 956 if (!m_resolver->hasFullscreenUAStyle()) |
947 m_resolver->resetRuleFeatures(); | 957 m_resolver->resetRuleFeatures(); |
948 } | 958 } |
949 | 959 |
| 960 void StyleEngine::initialViewportChanged() { |
| 961 if (m_viewportResolver && |
| 962 m_viewportResolver->isAffectedByInitialViewportChange()) |
| 963 updateViewport(); |
| 964 } |
| 965 |
950 DEFINE_TRACE(StyleEngine) { | 966 DEFINE_TRACE(StyleEngine) { |
951 visitor->trace(m_document); | 967 visitor->trace(m_document); |
952 visitor->trace(m_injectedAuthorStyleSheets); | 968 visitor->trace(m_injectedAuthorStyleSheets); |
953 visitor->trace(m_inspectorStyleSheet); | 969 visitor->trace(m_inspectorStyleSheet); |
954 visitor->trace(m_documentStyleSheetCollection); | 970 visitor->trace(m_documentStyleSheetCollection); |
955 visitor->trace(m_styleSheetCollectionMap); | 971 visitor->trace(m_styleSheetCollectionMap); |
956 visitor->trace(m_resolver); | 972 visitor->trace(m_resolver); |
| 973 visitor->trace(m_viewportResolver); |
957 visitor->trace(m_styleInvalidator); | 974 visitor->trace(m_styleInvalidator); |
958 visitor->trace(m_dirtyTreeScopes); | 975 visitor->trace(m_dirtyTreeScopes); |
959 visitor->trace(m_activeTreeScopes); | 976 visitor->trace(m_activeTreeScopes); |
960 visitor->trace(m_fontSelector); | 977 visitor->trace(m_fontSelector); |
961 visitor->trace(m_textToSheetCache); | 978 visitor->trace(m_textToSheetCache); |
962 visitor->trace(m_sheetToTextCache); | 979 visitor->trace(m_sheetToTextCache); |
963 CSSFontSelectorClient::trace(visitor); | 980 CSSFontSelectorClient::trace(visitor); |
964 } | 981 } |
965 | 982 |
966 DEFINE_TRACE_WRAPPERS(StyleEngine) { | 983 DEFINE_TRACE_WRAPPERS(StyleEngine) { |
967 for (auto sheet : m_injectedAuthorStyleSheets) { | 984 for (auto sheet : m_injectedAuthorStyleSheets) { |
968 visitor->traceWrappers(sheet); | 985 visitor->traceWrappers(sheet); |
969 } | 986 } |
970 visitor->traceWrappers(m_documentStyleSheetCollection); | 987 visitor->traceWrappers(m_documentStyleSheetCollection); |
971 } | 988 } |
972 | 989 |
973 } // namespace blink | 990 } // namespace blink |
OLD | NEW |