diff options
Diffstat (limited to 'staging/adblock/options.cpp')
-rw-r--r-- | staging/adblock/options.cpp | 49 |
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; } |