| 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),
|
|
|