goldendict-ng/weburlrequestinterceptor.cpp
Xiao YiFang bb3924ef6d fix: iframe new experimental feature
enabled only when user append ## to the website dictionary url
2022-05-17 20:44:48 +08:00

46 lines
1.3 KiB
C++

#include "weburlrequestinterceptor.h"
#include <QDebug>
#include "utils.hh"
#include "globalbroadcaster.h"
WebUrlRequestInterceptor::WebUrlRequestInterceptor(QObject *p)
:QWebEngineUrlRequestInterceptor(p)
{
}
void WebUrlRequestInterceptor::interceptRequest( QWebEngineUrlRequestInfo &info) {
if( GlobalBroadcaster::instance()->getPreference()->disallowContentFromOtherSites && Utils::isExternalLink( info.requestUrl() ) )
{
//file:// link ,pass
if(info.requestUrl().scheme()=="file"){
return;
}
auto hostBase = getHostBase( info.requestUrl().host() );
if( GlobalBroadcaster::instance()->existedInWhitelist( hostBase ) )
{
//whitelist url does not block
return;
}
if(Utils::isCssFontImage(info.requestUrl())){
//let throuth the resources file.
return;
}
// block external links
{
info.block( true );
return;
}
}
if (QWebEngineUrlRequestInfo::NavigationTypeLink == info.navigationType() && info.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeMainFrame) {
//workaround to fix devtool "Switch devtool to chinese" interface was blocked.
if( info.requestUrl().scheme() == "devtools" )
{
return;
}
emit linkClicked( info.requestUrl() );
info.block(true);
}
}