Index: xfa/fde/css/fde_csscache.cpp |
diff --git a/xfa/fde/css/fde_csscache.cpp b/xfa/fde/css/fde_csscache.cpp |
index c68d4ddb49169670835628a9fa2cba414b438f06..511c69798bd428ff5b5f7875097aaed0f56d8a3a 100644 |
--- a/xfa/fde/css/fde_csscache.cpp |
+++ b/xfa/fde/css/fde_csscache.cpp |
@@ -18,85 +18,7 @@ FDE_CSSCacheItem::FDE_CSSCacheItem(IFDE_CSSStyleSheet* p) |
FDE_CSSCacheItem::~FDE_CSSCacheItem() { |
pStylesheet->Release(); |
} |
-IFDE_CSSStyleSheetCache* IFDE_CSSStyleSheetCache::Create() { |
- return new CFDE_CSSStyleSheetCache; |
-} |
- |
-CFDE_CSSStyleSheetCache::CFDE_CSSStyleSheetCache() |
- : m_pFixedStore(NULL), m_iMaxItems(5) {} |
-CFDE_CSSStyleSheetCache::~CFDE_CSSStyleSheetCache() { |
- for (const auto& pair : m_Stylesheets) { |
- FXTARGET_DeleteWith(FDE_CSSCacheItem, m_pFixedStore, pair.second); |
- } |
- m_Stylesheets.clear(); |
- if (m_pFixedStore) { |
- m_pFixedStore->Release(); |
- } |
-} |
-void CFDE_CSSStyleSheetCache::AddStyleSheet(const CFX_ByteStringC& szKey, |
- IFDE_CSSStyleSheet* pStyleSheet) { |
- FXSYS_assert(pStyleSheet != NULL); |
- if (m_pFixedStore == NULL) { |
- m_pFixedStore = |
- FX_CreateAllocator(FX_ALLOCTYPE_Fixed, std::max(10, m_iMaxItems), |
- sizeof(FDE_CSSCacheItem)); |
- FXSYS_assert(m_pFixedStore != NULL); |
- } |
- auto it = m_Stylesheets.find(szKey); |
- if (it != m_Stylesheets.end()) { |
- FDE_CSSCacheItem* pItem = it->second; |
- if (pItem->pStylesheet != pStyleSheet) { |
- pItem->pStylesheet->Release(); |
- pItem->pStylesheet = pStyleSheet; |
- pItem->pStylesheet->AddRef(); |
- pItem->dwActivity = 0; |
- } |
- } else { |
- while (static_cast<int32_t>(m_Stylesheets.size()) >= m_iMaxItems) { |
- RemoveLowestActivityItem(); |
- } |
- m_Stylesheets[szKey] = |
- FXTARGET_NewWith(m_pFixedStore) FDE_CSSCacheItem(pStyleSheet); |
- } |
-} |
-IFDE_CSSStyleSheet* CFDE_CSSStyleSheetCache::GetStyleSheet( |
- const CFX_ByteStringC& szKey) const { |
- auto it = m_Stylesheets.find(szKey); |
- if (it == m_Stylesheets.end()) { |
- return nullptr; |
- } |
- FDE_CSSCacheItem* pItem = it->second; |
- pItem->dwActivity++; |
- pItem->pStylesheet->AddRef(); |
- return pItem->pStylesheet; |
-} |
-void CFDE_CSSStyleSheetCache::RemoveStyleSheet(const CFX_ByteStringC& szKey) { |
- auto it = m_Stylesheets.find(szKey); |
- if (it == m_Stylesheets.end()) { |
- return; |
- } |
- FXTARGET_DeleteWith(FDE_CSSCacheItem, m_pFixedStore, it->second); |
- m_Stylesheets.erase(it); |
-} |
-void CFDE_CSSStyleSheetCache::RemoveLowestActivityItem() { |
- auto found = m_Stylesheets.end(); |
- for (auto it = m_Stylesheets.begin(); it != m_Stylesheets.end(); ++it) { |
- switch (it->first.GetID()) { |
- case FXBSTR_ID('#', 'U', 'S', 'E'): |
- case FXBSTR_ID('#', 'A', 'G', 'E'): |
- continue; |
- } |
- if (found == m_Stylesheets.end() || |
- it->second->dwActivity > found->second->dwActivity) { |
- found = it; |
- } |
- } |
- if (found != m_Stylesheets.end()) { |
- FXTARGET_DeleteWith(FDE_CSSCacheItem, m_pFixedStore, found->second); |
- m_Stylesheets.erase(found); |
- } |
-} |
FDE_CSSTagCache::FDE_CSSTagCache(FDE_CSSTagCache* parent, |
IFDE_CSSTagProvider* tag) |
: pTag(tag), |