| Left: | ||
| Right: |
| LEFT | RIGHT |
|---|---|
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2016 Eyeo GmbH | 3 * Copyright (C) 2006-2016 Eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 26 #include <AdblockPlus/JsValue.h> | 26 #include <AdblockPlus/JsValue.h> |
| 27 #include <AdblockPlus/Notification.h> | 27 #include <AdblockPlus/Notification.h> |
| 28 | 28 |
| 29 namespace AdblockPlus | 29 namespace AdblockPlus |
| 30 { | 30 { |
| 31 class FilterEngine; | 31 class FilterEngine; |
| 32 | 32 |
| 33 /** | 33 /** |
| 34 * Wrapper for an Adblock Plus filter object. | 34 * Wrapper for an Adblock Plus filter object. |
| 35 * There are no accessors for most | 35 * There are no accessors for most |
| 36 * [filter properties](https://adblockplus.org/jsdoc/adblockplus/symbols/Filte r.html), | 36 * [filter properties](https://adblockplus.org/jsdoc/adblockpluscore/Filter.ht ml), |
| 37 * use `GetProperty()` to retrieve them by name. | 37 * use `GetProperty()` to retrieve them by name. |
| 38 */ | 38 */ |
| 39 class Filter : public JsValue, | 39 class Filter : public JsValue, |
| 40 public std::enable_shared_from_this<Filter> | 40 public std::enable_shared_from_this<Filter> |
| 41 { | 41 { |
| 42 public: | 42 public: |
| 43 /** | 43 /** |
| 44 * Filter types, see https://adblockplus.org/en/filters. | 44 * Filter types, see https://adblockplus.org/en/filters. |
| 45 */ | 45 */ |
| 46 enum Type {TYPE_BLOCKING, TYPE_EXCEPTION, | 46 enum Type {TYPE_BLOCKING, TYPE_EXCEPTION, |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 76 * Normally you shouldn't call this directly, but use | 76 * Normally you shouldn't call this directly, but use |
| 77 * FilterEngine::GetFilter() instead. | 77 * FilterEngine::GetFilter() instead. |
| 78 * @param value JavaScript filter object. | 78 * @param value JavaScript filter object. |
| 79 */ | 79 */ |
| 80 Filter(JsValuePtr value); | 80 Filter(JsValuePtr value); |
| 81 }; | 81 }; |
| 82 | 82 |
| 83 /** | 83 /** |
| 84 * Wrapper for a subscription object. | 84 * Wrapper for a subscription object. |
| 85 * There are no accessors for most | 85 * There are no accessors for most |
| 86 * [subscription properties](https://adblockplus.org/jsdoc/adblockplus/symbols /Subscription.html), | 86 * [subscription properties](https://adblockplus.org/jsdoc/adblockpluscore/Sub scription.html), |
| 87 * use `GetProperty()` to retrieve them by name. | 87 * use `GetProperty()` to retrieve them by name. |
| 88 */ | 88 */ |
| 89 class Subscription : public JsValue, | 89 class Subscription : public JsValue, |
| 90 public std::enable_shared_from_this<Subscription> | 90 public std::enable_shared_from_this<Subscription> |
| 91 { | 91 { |
| 92 public: | 92 public: |
| 93 /** | 93 /** |
| 94 * Checks if this subscription has been added to the list of subscriptions. | 94 * Checks if this subscription has been added to the list of subscriptions. |
| 95 * @return `true` if this subscription has been added. | 95 * @return `true` if this subscription has been added. |
| 96 */ | 96 */ |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 167 CONTENT_TYPE_XMLHTTPREQUEST = 2048, | 167 CONTENT_TYPE_XMLHTTPREQUEST = 2048, |
| 168 CONTENT_TYPE_OBJECT_SUBREQUEST = 4096, | 168 CONTENT_TYPE_OBJECT_SUBREQUEST = 4096, |
| 169 CONTENT_TYPE_MEDIA = 16384, | 169 CONTENT_TYPE_MEDIA = 16384, |
| 170 CONTENT_TYPE_FONT = 32768, | 170 CONTENT_TYPE_FONT = 32768, |
| 171 CONTENT_TYPE_GENERICBLOCK = 0x20000000, | 171 CONTENT_TYPE_GENERICBLOCK = 0x20000000, |
| 172 CONTENT_TYPE_ELEMHIDE = 0x40000000, | 172 CONTENT_TYPE_ELEMHIDE = 0x40000000, |
| 173 CONTENT_TYPE_GENERICHIDE = 0x80000000 | 173 CONTENT_TYPE_GENERICHIDE = 0x80000000 |
| 174 }; | 174 }; |
| 175 | 175 |
| 176 /** | 176 /** |
| 177 * Bitmask of `ContentType` values. | |
| 178 * The underlying type is signed 32 bit integer because it is actually used | |
| 179 * in JavaScript where it is converted into 32 bit signed integer. | |
| 180 */ | |
| 181 typedef int32_t ContentTypeMask; | |
| 182 | |
| 183 /** | |
| 177 * Callback type invoked when an update becomes available. | 184 * Callback type invoked when an update becomes available. |
| 178 * The parameter is the download URL of the update. | 185 * The parameter is the download URL of the update. |
| 179 */ | 186 */ |
| 180 typedef std::function<void(const std::string&)> UpdateAvailableCallback; | 187 typedef std::function<void(const std::string&)> UpdateAvailableCallback; |
| 181 | 188 |
| 182 /** | 189 /** |
| 183 * Callback type invoked when a manually triggered update check finishes. | 190 * Callback type invoked when a manually triggered update check finishes. |
| 184 * The parameter is an optional error message. | 191 * The parameter is an optional error message. |
| 185 */ | 192 */ |
| 186 typedef std::function<void(const std::string&)> UpdateCheckDoneCallback; | 193 typedef std::function<void(const std::string&)> UpdateCheckDoneCallback; |
| 187 | 194 |
| 188 /** | 195 /** |
| 189 * Callback type invoked when the filters change. | 196 * Callback type invoked when the filters change. |
| 190 * The first parameter is the action event code (see | 197 * The first parameter is the action event code (see |
| 191 * [FilterNotifier.triggerListeners](https://adblockplus.org/jsdoc/adblockpl us/symbols/FilterNotifier.html#.triggerListeners) | 198 * [FilterNotifier.triggerListeners](https://adblockplus.org/jsdoc/adblockpl uscore/FilterNotifier.html#.triggerListeners) |
| 192 * for the full list). | 199 * for the full list). |
| 193 * The second parameter is the filter/subscription object affected, if any. | 200 * The second parameter is the filter/subscription object affected, if any. |
| 194 */ | 201 */ |
| 195 typedef std::function<void(const std::string&, const JsValuePtr)> FilterChan geCallback; | 202 typedef std::function<void(const std::string&, const JsValuePtr)> FilterChan geCallback; |
| 196 | 203 |
| 197 /** | 204 /** |
| 198 * Container of name-value pairs representing a set of preferences. | 205 * Container of name-value pairs representing a set of preferences. |
| 199 */ | 206 */ |
| 200 typedef std::map<std::string, AdblockPlus::JsValuePtr> Prefs; | 207 typedef std::map<std::string, AdblockPlus::JsValuePtr> Prefs; |
| 201 | 208 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 284 * @param url URL to match. | 291 * @param url URL to match. |
| 285 * @param contentTypeMask Content type mask of the requested resource. | 292 * @param contentTypeMask Content type mask of the requested resource. |
| 286 * @param documentUrl URL of the document requesting the resource. | 293 * @param documentUrl URL of the document requesting the resource. |
| 287 * Note that there will be more than one document if frames are | 294 * Note that there will be more than one document if frames are |
| 288 * involved, see | 295 * involved, see |
| 289 * Matches(const std::string&, const std::string&, const std::vector< std::string>&) const. | 296 * Matches(const std::string&, const std::string&, const std::vector< std::string>&) const. |
| 290 * @return Matching filter, or `null` if there was no match. | 297 * @return Matching filter, or `null` if there was no match. |
| 291 * @throw `std::invalid_argument`, if an invalid `contentType` was supplied. | 298 * @throw `std::invalid_argument`, if an invalid `contentType` was supplied. |
| 292 */ | 299 */ |
| 293 FilterPtr Matches(const std::string& url, | 300 FilterPtr Matches(const std::string& url, |
| 294 int32_t contentTypeMask, | 301 ContentTypeMask contentTypeMask, |
|
Eric
2016/02/09 15:43:03
It would seem better to use uint32_t here, given t
sergei
2016/02/09 17:15:47
Yes, however it will be converted into signed inte
| |
| 295 const std::string& documentUrl) const; | 302 const std::string& documentUrl) const; |
| 296 | 303 |
| 297 /** | 304 /** |
| 298 * Checks if any active filter matches the supplied URL. | 305 * Checks if any active filter matches the supplied URL. |
| 299 * @param url URL to match. | 306 * @param url URL to match. |
| 300 * @param contentTypeMask Content type mask of the requested resource. | 307 * @param contentTypeMask Content type mask of the requested resource. |
| 301 * @param documentUrls Chain of documents requesting the resource, starting | 308 * @param documentUrls Chain of documents requesting the resource, starting |
| 302 * with the current resource's parent frame, ending with the | 309 * with the current resource's parent frame, ending with the |
| 303 * top-level frame. | 310 * top-level frame. |
| 304 * If the application is not capable of identifying the frame | 311 * If the application is not capable of identifying the frame |
| 305 * structure, e.g. because it is a proxy, it can be approximated | 312 * structure, e.g. because it is a proxy, it can be approximated |
| 306 * using `ReferrerMapping`. | 313 * using `ReferrerMapping`. |
| 307 * @return Matching filter, or a `null` if there was no match. | 314 * @return Matching filter, or a `null` if there was no match. |
| 308 * @throw `std::invalid_argument`, if an invalid `contentType` was supplied. | 315 * @throw `std::invalid_argument`, if an invalid `contentType` was supplied. |
| 309 */ | 316 */ |
| 310 FilterPtr Matches(const std::string& url, | 317 FilterPtr Matches(const std::string& url, |
| 311 int32_t contentTypeMask, | 318 ContentTypeMask contentTypeMask, |
| 312 const std::vector<std::string>& documentUrls) const; | 319 const std::vector<std::string>& documentUrls) const; |
| 313 | 320 |
| 314 /** | 321 /** |
| 315 * Checks whether the document at the supplied URL is whitelisted. | 322 * Checks whether the document at the supplied URL is whitelisted. |
| 316 * @param url URL of the document. | 323 * @param url URL of the document. |
| 317 * @param documentUrls Chain of document URLs requesting the document, | 324 * @param documentUrls Chain of document URLs requesting the document, |
| 318 * starting with the current document's parent frame, ending with | 325 * starting with the current document's parent frame, ending with |
| 319 * the top-level frame. | 326 * the top-level frame. |
| 320 * If the application is not capable of identifying the frame | 327 * If the application is not capable of identifying the frame |
| 321 * structure, e.g. because it is a proxy, it can be approximated | 328 * structure, e.g. because it is a proxy, it can be approximated |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 435 | 442 |
| 436 private: | 443 private: |
| 437 JsEnginePtr jsEngine; | 444 JsEnginePtr jsEngine; |
| 438 bool initialized; | 445 bool initialized; |
| 439 bool firstRun; | 446 bool firstRun; |
| 440 int updateCheckId; | 447 int updateCheckId; |
| 441 static const std::map<ContentType, std::string> contentTypes; | 448 static const std::map<ContentType, std::string> contentTypes; |
| 442 | 449 |
| 443 void InitDone(JsValueList& params); | 450 void InitDone(JsValueList& params); |
| 444 FilterPtr CheckFilterMatch(const std::string& url, | 451 FilterPtr CheckFilterMatch(const std::string& url, |
| 445 int32_t contentTypeMask, | 452 ContentTypeMask contentTypeMask, |
| 446 const std::string& documentUrl) const; | 453 const std::string& documentUrl) const; |
| 447 void UpdateAvailable(UpdateAvailableCallback callback, JsValueList& params); | 454 void UpdateAvailable(UpdateAvailableCallback callback, JsValueList& params); |
| 448 void UpdateCheckDone(const std::string& eventName, | 455 void UpdateCheckDone(const std::string& eventName, |
| 449 UpdateCheckDoneCallback callback, JsValueList& params); | 456 UpdateCheckDoneCallback callback, JsValueList& params); |
| 450 void FilterChanged(FilterChangeCallback callback, JsValueList& params); | 457 void FilterChanged(FilterChangeCallback callback, JsValueList& params); |
| 451 void ShowNotification(const ShowNotificationCallback& callback, | 458 void ShowNotification(const ShowNotificationCallback& callback, |
| 452 const JsValueList& params); | 459 const JsValueList& params); |
| 453 FilterPtr GetWhitelistingFilter(const std::string& url, | 460 FilterPtr GetWhitelistingFilter(const std::string& url, |
| 454 int32_t contentTypeMask, const std::string& documentUrl) const; | 461 ContentTypeMask contentTypeMask, const std::string& documentUrl) const; |
| 455 FilterPtr GetWhitelistingFilter(const std::string& url, | 462 FilterPtr GetWhitelistingFilter(const std::string& url, |
| 456 int32_t contentTypeMask, | 463 ContentTypeMask contentTypeMask, |
| 457 const std::vector<std::string>& documentUrls) const; | 464 const std::vector<std::string>& documentUrls) const; |
| 458 }; | 465 }; |
| 459 } | 466 } |
| 460 | 467 |
| 461 #endif | 468 #endif |
| LEFT | RIGHT |