| Index: src/FilterEngine.cpp | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/src/FilterEngine.cpp | 
| @@ -0,0 +1,70 @@ | 
| +#include <AdblockPlus.h> | 
| + | 
| +using namespace AdblockPlus; | 
| + | 
| +Subscription::Subscription(const std::string& url, const std::string& title) | 
| +  : url(url), title(title) | 
| +{ | 
| +} | 
| + | 
| +FilterEngine::FilterEngine(JsEngine& jsEngine) : jsEngine(jsEngine) | 
| +{ | 
| +  // TODO: Load ABP: | 
| +  // jsEngine.Load("adblockplus_compat.js"); | 
| +  // jsEngine.Load("adblockplus.js"); | 
| +} | 
| + | 
| +void FilterEngine::AddSubscription(Subscription subscription) | 
| +{ | 
| +  subscriptions.push_back(subscription); | 
| +} | 
| + | 
| +void FilterEngine::RemoveSubscription(const Subscription& subscription) | 
| +{ | 
| +  for (std::vector<Subscription>::iterator it = subscriptions.begin(); | 
| +       it != subscriptions.end();) | 
| +    if (it->url == subscription.url) | 
| +      it = subscriptions.erase(it); | 
| +    else | 
| +      it++; | 
| +} | 
| + | 
| +const Subscription* FilterEngine::FindSubscription(const std::string& url) const | 
| +{ | 
| +  for (std::vector<Subscription>::const_iterator it = subscriptions.begin(); | 
| +       it != subscriptions.end(); it++) | 
| +    if (it->url == url) | 
| +      return &(*it); | 
| +  return 0; | 
| +} | 
| + | 
| +const std::vector<Subscription>& FilterEngine::GetSubscriptions() const | 
| +{ | 
| +  return subscriptions; | 
| +} | 
| + | 
| +void FilterEngine::UpdateSubscriptionFilters(const Subscription& subscription) | 
| +{ | 
| +} | 
| + | 
| +std::vector<Subscription> FilterEngine::FetchAvailableSubscriptions() | 
| +{ | 
| +  std::vector<Subscription> availableSubscriptions; | 
| +  availableSubscriptions.push_back(Subscription("https://easylist-downloads.adblockplus.org/easylist.txt", "EasyList")); | 
| +  availableSubscriptions.push_back(Subscription("https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt", "EasyList Germany+EasyList")); | 
| +  return availableSubscriptions; | 
| +} | 
| + | 
| +bool FilterEngine::MatchesFilters(const std::string& url, | 
| +                                  const std::string& contentType) const | 
| +{ | 
| +  return subscriptions.size() && url.length() % 2; | 
| +} | 
| + | 
| +std::vector<std::string> FilterEngine::GetElementHidingRules() const | 
| +{ | 
| +  std::vector<std::string> hidingRules; | 
| +  hidingRules.push_back("###ad"); | 
| +  hidingRules.push_back("##.ad"); | 
| +  return hidingRules; | 
| +} | 
|  |