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

Unified Diff: include/AdblockPlus/FilterEngine.h

Issue 5728380594946048: Issue 116 - Document the libadblockplus API (Closed)
Patch Set: Write libadblockplus in lower case consistently Created Sept. 2, 2014, 2:18 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/AdblockPlus/FileSystem.h ('k') | include/AdblockPlus/JsEngine.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/AdblockPlus/FilterEngine.h
===================================================================
--- a/include/AdblockPlus/FilterEngine.h
+++ b/include/AdblockPlus/FilterEngine.h
@@ -31,67 +31,304 @@
{
class FilterEngine;
+ /**
+ * Wrapper for an Adblock Plus filter object.
+ */
class Filter : public JsValue,
public std::tr1::enable_shared_from_this<Filter>
{
public:
+ /**
+ * Filter types, see https://adblockplus.org/en/filters.
+ */
enum Type {TYPE_BLOCKING, TYPE_EXCEPTION,
TYPE_ELEMHIDE, TYPE_ELEMHIDE_EXCEPTION,
TYPE_COMMENT, TYPE_INVALID};
+ /**
+ * Retrieves the type of this filter.
+ * @return Type of this filter.
+ */
Type GetType();
+
+ /**
+ * Checks whether this filter has been added to the list of custom filters.
+ * @return `true` if this filter has been added.
+ */
bool IsListed();
+
+ /**
+ * Adds this filter to the list of custom filters.
+ */
void AddToList();
+
+ /**
+ * Removes this filter from the list of custom filters.
+ */
void RemoveFromList();
+
bool operator==(const Filter& filter) const;
+ /**
+ * Creates a wrapper for an existing JavaScript filter object.
+ * Normally you shouldn't call this directly, but use
+ * FilterEngine::GetFilter() instead.
+ * @param value JavaScript filter object.
+ */
Filter(JsValuePtr value);
};
+ /**
+ * Wrapper for a subscription object.
+ */
class Subscription : public JsValue,
public std::tr1::enable_shared_from_this<Subscription>
{
public:
+ /**
+ * Checks if this subscription has been added to the list of subscriptions.
+ * @return `true` if this subscription has been added.
+ */
bool IsListed();
+
+ /**
+ * Adds this subscription to the list of subscriptions.
+ */
void AddToList();
+
+ /**
+ * Removes this subscription from the list of subscriptions.
+ */
void RemoveFromList();
+
+ /**
+ * Updates this subscription, i.e.\ retrieves the current filters from the
+ * subscription URL.
+ */
void UpdateFilters();
+
+ /**
+ * Checks if the subscription is currently being updated.
+ * @return `true` if the subscription is currently being updated.
+ */
bool IsUpdating();
+
bool operator==(const Subscription& subscription) const;
+ /**
+ * Creates a wrapper for an existing JavaScript subscription object.
+ * Normally you shouldn't call this directly, but use
+ * FilterEngine::GetSubscription() instead.
+ * @param value JavaScript subscription object.
+ */
Subscription(JsValuePtr value);
};
+ /**
+ * Shared smart pointer to a `Filter` instance.
+ */
typedef std::tr1::shared_ptr<Filter> FilterPtr;
+
+ /**
+ * Shared smart pointer to a `Subscription` instance.
+ */
typedef std::tr1::shared_ptr<Subscription> SubscriptionPtr;
+ /**
+ * Main component of libadblockplus.
+ * It handles:
+ * - Filter management and matching.
+ * - Subscription management and synchronization.
+ * - Update checks for the application.
+ */
class FilterEngine
{
public:
+ /**
+ * Callback type invoked when an update is available.
+ * The parameter is optional error message.
+ */
typedef std::tr1::function<void(const std::string&)> UpdaterCallback;
+
+ /**
+ * Callback type invoked when the filters change.
+ * The first parameter is the action event code (see
+ * [FilterNotifier.triggerListeners](https://adblockplus.org/jsdoc/adblockplus/symbols/FilterNotifier.html#.triggerListeners)
+ * for the full list).
+ * The second parameter is the filter/subscription object affected, if any.
+ */
typedef std::tr1::function<void(const std::string&, const JsValuePtr)> FilterChangeCallback;
+ /**
+ * Constructor.
+ * @param jsEngine `JsEngine` instance used to run JavaScript code
+ * internally.
+ */
explicit FilterEngine(JsEnginePtr jsEngine);
+
+ /**
+ * Retrieves the `JsEngine` instance associated with this `FilterEngine`
+ * instance.
+ */
JsEnginePtr GetJsEngine() const { return jsEngine; }
+
+ /**
+ * Checks if this is the first run of the application.
+ * @return `true` if the application is running for the first time.
+ */
bool IsFirstRun() const;
+
+ /**
+ * Retrieves a filter object from its text representation.
+ * @param text Text representation of the filter,
+ * see https://adblockplus.org/en/filters.
+ * @return New `Filter` instance.
+ */
FilterPtr GetFilter(const std::string& text);
+
+ /**
+ * Retrieves a subscription object for the supplied URL.
+ * @param url Subscription URL.
+ * @return New `Subscription` instance.
+ */
SubscriptionPtr GetSubscription(const std::string& url);
+
+ /**
+ * Retrieves the list of custom filters.
+ * @return List of custom filters.
+ */
std::vector<FilterPtr> GetListedFilters() const;
+
+ /**
+ * Retrieves all subscriptions.
+ * @return List of subscriptions.
+ */
std::vector<SubscriptionPtr> GetListedSubscriptions() const;
+
+ /**
+ * Retrieves all recommended subscriptions.
+ * @return List of recommended subscriptions.
+ */
std::vector<SubscriptionPtr> FetchAvailableSubscriptions() const;
+
+ /**
+ * Checks if any active filter matches the supplied URL.
+ * @param url URL to match.
+ * @param contentType Content type of the requested resource, possible
+ * values are:
+ * - OTHER
+ * - SCRIPT
+ * - IMAGE
+ * - STYLESHEET
+ * - OBJECT
+ * - SUBDOCUMENT
+ * - DOCUMENT
+ * - XMLHTTPREQUEST
+ * - OBJECT_SUBREQUEST
+ * - FONT
+ * - MEDIA
+ * @param documentUrl URL of the document requesting the resource.
+ * Note that there will be more than one document if frames are
+ * involved, see
+ * Matches(const std::string&, const std::string&, const std::vector<std::string>&) const.
+ * @return Matching filter, or `null` if there was no match.
+ */
FilterPtr Matches(const std::string& url,
const std::string& contentType,
const std::string& documentUrl) const;
+
+ /**
+ * Checks if any active filter matches the supplied URL.
+ * @param url URL to match.
+ * @param contentType Content type of the requested resource, possible
+ * values are:
+ * - OTHER
+ * - SCRIPT
+ * - IMAGE
+ * - STYLESHEET
+ * - OBJECT
+ * - SUBDOCUMENT
+ * - DOCUMENT
+ * - XMLHTTPREQUEST
+ * - OBJECT_SUBREQUEST
+ * - FONT
+ * - MEDIA
+ * @param documentUrls Chain of documents requesting the resource, starting
+ * with the current resource's parent frame, ending with the
+ * top-level frame.
+ * If the application is not capable of identifying the frame
+ * structure, e.g. because it is a proxy, it can be approximated
+ * using `ReferrerMapping`.
+ * @return Matching filter, or a `null` if there was no match.
+ */
FilterPtr Matches(const std::string& url,
const std::string& contentType,
const std::vector<std::string>& documentUrls) const;
+
+ /**
+ * Retrieves CSS selectors for all element hiding filters active on the
+ * supplied domain.
+ * @param domain Domain to retrieve CSS selectors for.
+ * @return List of CSS selectors.
+ */
std::vector<std::string> GetElementHidingSelectors(const std::string& domain) const;
+
+ /**
+ * Retrieves a preference value.
+ * @param pref Preference name.
+ * @return Preference value, or `null` if it doesn't exist.
+ */
JsValuePtr GetPref(const std::string& pref) const;
+
+ /**
+ * Sets a preference value.
+ * @param pref Preference name.
+ * @param value New value of the preference.
+ */
void SetPref(const std::string& pref, JsValuePtr value);
+
+ /**
+ * Extracts the host from a URL.
+ * @param url URL to extract the host from.
+ * @return Extracted host.
+ */
std::string GetHostFromURL(const std::string& url);
+
+ /**
+ * Forces an immediate update check.
+ * `FilterEngine` will automatically check for updates in regular intervals,
+ * so applications should only call this when the user triggers an update
+ * check manually.
+ * @param callback Optional callback to invoke when the update check is
+ * finished. The string parameter will be empty when the update check
+ * succeeded, or contain an error message if it failed.
+ * Note that the callback will be invoked after every update check -
+ * to react to updates being available, register a callback for the
+ * "updateAvailable" event (see JsEngine::SetEventCallback()).
+ */
void ForceUpdateCheck(UpdaterCallback callback = 0);
+
+ /**
+ * Sets the callback invoked when the filters change.
+ * @param callback Callback to invoke.
+ */
void SetFilterChangeCallback(FilterChangeCallback callback);
+
+ /**
+ * Removes the callback invoked when the filters change.
+ */
void RemoveFilterChangeCallback();
+
+ /**
+ * Compares two version strings in
+ * [Mozilla toolkit version format](https://developer.mozilla.org/en/docs/Toolkit_version_format).
+ * @param v1 First version string.
+ * @param v2 Second version string.
+ * @return
+ * - `0` if `v1` and `v2` are identical.
+ * - A negative number if `v1` is less than `v2`.
+ * - A positive number if `v1` is greater than `v2`.
+ */
int CompareVersions(const std::string& v1, const std::string& v2);
private:
« no previous file with comments | « include/AdblockPlus/FileSystem.h ('k') | include/AdblockPlus/JsEngine.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld