aboutsummaryrefslogtreecommitdiff
path: root/staging/adblock/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'staging/adblock/options.cpp')
-rw-r--r--staging/adblock/options.cpp49
1 files changed, 23 insertions, 26 deletions
diff --git a/staging/adblock/options.cpp b/staging/adblock/options.cpp
index 0f70570..a748a68 100644
--- a/staging/adblock/options.cpp
+++ b/staging/adblock/options.cpp
@@ -10,67 +10,67 @@
using namespace AdblockPlus;
-bool Options::set(const QString &opt)
+bool Options::parseAbp(QStringRef &option)
{
- const bool exception = opt.startsWith("~");
- const QString option = [exception, opt]() {
- if(exception)
- return opt.mid(1);
- else
- return opt;
- }();
-
+ // pattern options
if(option == "match-case") {
- matchcase = exception;
+ matchcase = true;
return true;
}
+ // Possible inverse type options include ~script, ~image, ~stylesheet, ~object,
+ // ~xmlhttprequest, ~subdocument, ~ping, ~websocket, ~webrtc, ~document, ~elemhide, ~other
+ const bool exception = option.startsWith('~');
+ if(exception) {
+ option = option.mid(1);
+ }
+
// TODO: map all ResourceType's to their respective strings
// TODO: websocket, webrtc, elemhide, generichide, genericblock, popup
- else if(option == "document") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeMainFrame] = exception;
+ if(option == "document") {
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeMainFrame] = !exception;
return true;
}
else if(option == "subdocument") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeSubFrame] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeSubFrame] = !exception;
return true;
}
else if(option == "stylesheet") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeStylesheet] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeStylesheet] = !exception;
return true;
}
else if(option == "script") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeScript] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeScript] = !exception;
return true;
}
else if(option == "image") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeImage] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeImage] = !exception;
return true;
}
else if(option == "font") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeFontResource] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeFontResource] = !exception;
return true;
}
else if(option == "other") {
// An "other" subresource.
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeSubResource] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeSubResource] = !exception;
return true;
}
else if(option == "object") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeObject] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeObject] = !exception;
return true;
}
else if(option == "media") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeMedia] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeMedia] = !exception;
return true;
}
/*
@@ -80,12 +80,12 @@ QWebEngineUrlRequestInfo::ResourceTypePrefetch 11 An explicitly requested prefet
QWebEngineUrlRequestInfo::ResourceTypeFavicon 12 A favicon.
*/
else if(option == "xmlhttprequest") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypeXhr] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypeXhr] = !exception;
return true;
}
else if(option == "ping") {
- resource_options[QWebEngineUrlRequestInfo::ResourceTypePing] = exception;
+ resource_options[QWebEngineUrlRequestInfo::ResourceTypePing] = !exception;
return true;
}
@@ -100,10 +100,7 @@ QWebEngineUrlRequestInfo::ResourceTypeUnknown 255 Unknown request type.
// Restriction to third-party/first-party requests
else if(option == "third-party") {
- if(exception)
- thirdparty = false;
- else
- firstparty = false;
+ thirdparty = !exception;
return true;
}