| Index: src/plugin/PluginDomTraverserBase.h | 
| diff --git a/src/plugin/PluginDomTraverserBase.h b/src/plugin/PluginDomTraverserBase.h | 
| index 96c617d04f8db0ca8987122757d6bcc7a33c6e17..64d033db432b65b480462357c66ffde46fdf1367 100644 | 
| --- a/src/plugin/PluginDomTraverserBase.h | 
| +++ b/src/plugin/PluginDomTraverserBase.h | 
| @@ -37,7 +37,7 @@ class CPluginDomTraverserBase | 
|  | 
| public: | 
|  | 
| -  CPluginDomTraverserBase(CPluginTab* tab); | 
| +  explicit CPluginDomTraverserBase(const PluginFilterPtr& pluginFilter); | 
| ~CPluginDomTraverserBase(); | 
|  | 
| void TraverseHeader(bool isHeaderTraversed); | 
| @@ -66,9 +66,6 @@ protected: | 
|  | 
| bool m_isHeaderTraversed; | 
|  | 
| -  // Caching | 
| -  long m_cacheDomElementCount; | 
| - | 
| int m_cacheIndexLast; | 
| int m_cacheElementsMax; | 
| std::set<std::wstring> m_cacheDocumentHasFrames; | 
| @@ -76,13 +73,12 @@ protected: | 
|  | 
| T* m_cacheElements; | 
|  | 
| -  CPluginTab* m_tab; | 
| -  CComPtr<IWebBrowser2> m_pBrowser; | 
| +  std::shared_ptr<const CPluginFilter> m_pluginFilter; | 
| }; | 
|  | 
| template <class T> | 
| -CPluginDomTraverserBase<T>::CPluginDomTraverserBase(CPluginTab* tab) : | 
| -  m_tab(tab), m_isHeaderTraversed(false), m_cacheDomElementCount(0), m_cacheIndexLast(0), m_cacheElementsMax(5000) | 
| +CPluginDomTraverserBase<T>::CPluginDomTraverserBase(const PluginFilterPtr& pluginFilter) | 
| +  : m_pluginFilter(pluginFilter), m_isHeaderTraversed(false), m_cacheIndexLast(0), m_cacheElementsMax(5000) | 
| { | 
| m_cacheElements = new T[m_cacheElementsMax]; | 
| } | 
| @@ -128,7 +124,6 @@ bool CPluginDomTraverserBase<T>::IsEnabled() | 
| template <class T> | 
| void CPluginDomTraverserBase<T>::TraverseDocument(IWebBrowser2* pBrowser, bool isMainDoc, const std::wstring& indent) | 
| { | 
| -  DWORD res = WaitForSingleObject(m_tab->m_filter.hideFiltersLoadedEvent, ENGINE_STARTUP_TIMEOUT); | 
| if (!IsEnabled()) return; | 
|  | 
| VARIANT_BOOL isBusy; | 
|  |