Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Delta Between Two Patch Sets: include/AdblockPlus/FilterEngine.h

Issue 29335462: Issue 3337 - Update adblockplus reference in libadblockplus to revision hg:813682c7161e (Closed)
Left Patch Set: Created Feb. 3, 2016, 1:26 p.m.
Right Patch Set: rebase Created April 19, 2016, 9:27 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « ensure_dependencies.py ('k') | lib/api.js » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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
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
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
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
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
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
LEFTRIGHT

Powered by Google App Engine
This is Rietveld