本文整理汇总了C++中WebPage::addAdBlockRule方法的典型用法代码示例。如果您正苦于以下问题:C++ WebPage::addAdBlockRule方法的具体用法?C++ WebPage::addAdBlockRule怎么用?C++ WebPage::addAdBlockRule使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebPage
的用法示例。
在下文中一共展示了WebPage::addAdBlockRule方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: block
QNetworkReply* AdBlockManager::block(const QNetworkRequest &request)
{
const QString &urlString = request.url().toEncoded();
const QString &urlDomain = request.url().host();
const QString &urlScheme = request.url().scheme();
if (!isEnabled() || !canRunOnScheme(urlScheme)) {
return 0;
}
foreach(AdBlockSubscription * subscription, m_subscriptions) {
const AdBlockRule* blockedRule = subscription->match(request, urlDomain, urlString);
if (blockedRule) {
QVariant v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100));
WebPage* webPage = static_cast<WebPage*>(v.value<void*>());
if (WebPage::isPointerSafeToUse(webPage)) {
if (!canBeBlocked(webPage->url())) {
return 0;
}
webPage->addAdBlockRule(blockedRule, request.url());
}
AdBlockBlockedNetworkReply* reply = new AdBlockBlockedNetworkReply(subscription, blockedRule, this);
reply->setRequest(request);
return reply;
}
}
return 0;
}
示例2: block
QNetworkReply* AdBlockManager::block(const QNetworkRequest &request)
{
#ifdef ADBLOCK_DEBUG
QElapsedTimer timer;
timer.start();
#endif
const QString urlString = request.url().toEncoded().toLower();
const QString urlDomain = request.url().host().toLower();
const QString urlScheme = request.url().scheme().toLower();
if (!isEnabled() || !canRunOnScheme(urlScheme)) {
return 0;
}
foreach (AdBlockSubscription* subscription, m_subscriptions) {
const AdBlockRule* blockedRule = subscription->match(request, urlDomain, urlString);
if (blockedRule) {
QVariant v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100));
WebPage* webPage = static_cast<WebPage*>(v.value<void*>());
if (WebPage::isPointerSafeToUse(webPage)) {
if (!canBeBlocked(webPage->url())) {
return 0;
}
webPage->addAdBlockRule(blockedRule, request.url());
}
AdBlockBlockedNetworkReply* reply = new AdBlockBlockedNetworkReply(subscription, blockedRule, this);
reply->setRequest(request);
#ifdef ADBLOCK_DEBUG
qDebug() << "BLOCKED: " << timer.elapsed() << blockedRule->filter() << request.url();
#endif
return reply;
}
}
#ifdef ADBLOCK_DEBUG
qDebug() << timer.elapsed() << request.url();
#endif
return 0;
}
示例3: block
QNetworkReply* AdBlockNetwork::block(const QNetworkRequest &request)
{
const QString &urlString = request.url().toEncoded();
const QString &urlScheme = request.url().scheme();
if (urlScheme == "data" || urlScheme == "qrc" || urlScheme == "file" || urlScheme == "qupzilla") {
return 0;
}
AdBlockManager* manager = AdBlockManager::instance();
if (!manager->isEnabled()) {
return 0;
}
const AdBlockRule* blockedRule = 0;
AdBlockSubscription* subscription = manager->subscription();
if (subscription->allow(urlString)) {
return 0;
}
if (const AdBlockRule* rule = subscription->block(urlString)) {
blockedRule = rule;
}
if (blockedRule) {
QVariant v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100));
WebPage* webPage = static_cast<WebPage*>(v.value<void*>());
if (WebPage::isPointerSafeToUse(webPage)) {
webPage->addAdBlockRule(blockedRule->filter(), request.url());
}
AdBlockBlockedNetworkReply* reply = new AdBlockBlockedNetworkReply(request, blockedRule, this);
return reply;
}
return 0;
}
示例4: block
QNetworkReply* AdBlockNetwork::block(const QNetworkRequest &request)
{
QUrl url = request.url();
if (url.scheme() == "data") {
return 0;
}
AdBlockManager* manager = AdBlockManager::instance();
if (!manager->isEnabled()) {
return 0;
}
QString urlString = url.toEncoded();
const AdBlockRule* blockedRule = 0;
AdBlockSubscription* subscription = manager->subscription();
if (subscription->allow(urlString)) {
return 0;
}
if (const AdBlockRule* rule = subscription->block(urlString)) {
blockedRule = rule;
}
if (blockedRule) {
QVariant v = request.attribute((QNetworkRequest::Attribute)(QNetworkRequest::User + 100));
WebPage* webPage = (WebPage*)(v.value<void*>());
if (webPage) {
webPage->addAdBlockRule(blockedRule->filter(), request.url());
}
AdBlockBlockedNetworkReply* reply = new AdBlockBlockedNetworkReply(request, blockedRule, this);
return reply;
}
return 0;
}