| Index: src/plugin/PluginTabBase.cpp | 
| diff --git a/src/plugin/PluginTabBase.cpp b/src/plugin/PluginTabBase.cpp | 
| index 7422d417c812d2f3c586d4e359a39502c0a96f02..ede52235f9dc117bd84713756b42c9486f1ce642 100644 | 
| --- a/src/plugin/PluginTabBase.cpp | 
| +++ b/src/plugin/PluginTabBase.cpp | 
| @@ -177,6 +177,51 @@ void CPluginTabBase::InjectABP(IWebBrowser2* browser) | 
| } | 
| } | 
|  | 
| +namespace | 
| +{ | 
| +  ATL::CComPtr<IWebBrowser2> GetParent(IWebBrowser2& browser) | 
| +  { | 
| +    ATL::CComPtr<IDispatch> parentDispatch; | 
| +    if (FAILED(browser.get_Parent(&parentDispatch)) || !parentDispatch) | 
| +    { | 
| +      return nullptr; | 
| +    } | 
| +    // The InternetExplorer application always returns a pointer to itself. | 
| +    if (parentDispatch.IsEqualObject(&browser)) | 
| +    { | 
| +      return nullptr; | 
| +    } | 
| +    ATL::CComQIPtr<IServiceProvider> parentDocumentServiceProvider = parentDispatch; | 
| +    if (!parentDocumentServiceProvider) | 
| +    { | 
| +      return nullptr; | 
| +    } | 
| +    ATL::CComPtr<IWebBrowserApp> webBrowserApp; | 
| +    if (FAILED(parentDocumentServiceProvider->QueryService(IID_IWebBrowserApp, &webBrowserApp)) || !webBrowserApp) | 
| +    { | 
| +      return nullptr; | 
| +    } | 
| +    return ATL::CComQIPtr<IWebBrowser2>(webBrowserApp); | 
| +  } | 
| + | 
| +  bool IsFrameWhiteListed(ATL::CComPtr<IWebBrowser2> frame) | 
| +  { | 
| +    if (!frame) | 
| +    { | 
| +      return false; | 
| +    } | 
| +    auto url = GetLocationUrl(*frame); | 
| +    std::vector<std::string> frameHierarchy; | 
| +    while(frame = GetParent(*frame)) | 
| +    { | 
| +      frameHierarchy.push_back(ToUtf8String(GetLocationUrl(*frame))); | 
| +    } | 
| +    CPluginClient* client = CPluginClient::GetInstance(); | 
| +    return client->IsWhitelistedUrl(url, frameHierarchy) | 
| +        || client->IsElemhideWhitelistedOnDomain(url, frameHierarchy); | 
| +  } | 
| +} | 
| + | 
| void CPluginTabBase::OnDownloadComplete(IWebBrowser2* browser) | 
| { | 
| CPluginClient* client = CPluginClient::GetInstance(); | 
|  |