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

Side by Side Diff: src/FilterEngine.cpp

Issue 10800079: Implemented update checking functionality (Closed)
Patch Set: Created June 5, 2013, 1:40 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * This file is part of Adblock Plus <http://adblockplus.org/>, 2 * This file is part of Adblock Plus <http://adblockplus.org/>,
3 * Copyright (C) 2006-2013 Eyeo GmbH 3 * Copyright (C) 2006-2013 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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 JsValuePtr result = func->Call(params); 128 JsValuePtr result = func->Call(params);
129 return result->AsBool(); 129 return result->AsBool();
130 } 130 }
131 131
132 bool Subscription::operator==(const Subscription& subscription) const 132 bool Subscription::operator==(const Subscription& subscription) const
133 { 133 {
134 return GetProperty("url")->AsString() == subscription.GetProperty("url")->AsSt ring(); 134 return GetProperty("url")->AsString() == subscription.GetProperty("url")->AsSt ring();
135 } 135 }
136 136
137 FilterEngine::FilterEngine(JsEnginePtr jsEngine) 137 FilterEngine::FilterEngine(JsEnginePtr jsEngine)
138 : jsEngine(jsEngine), initialized(false), firstRun(false) 138 : jsEngine(jsEngine), initialized(false), firstRun(false), updateCheckId(0)
139 { 139 {
140 jsEngine->SetEventCallback("init", std::tr1::bind(&FilterEngine::InitDone, 140 jsEngine->SetEventCallback("init", std::tr1::bind(&FilterEngine::InitDone,
141 this, std::tr1::placeholders::_1)); 141 this, std::tr1::placeholders::_1));
142 142
143 { 143 {
144 // Lock the JS engine while we are loading scripts, no timeouts should fire 144 // Lock the JS engine while we are loading scripts, no timeouts should fire
145 // until we are done. 145 // until we are done.
146 const JsContext context(jsEngine); 146 const JsContext context(jsEngine);
147 for (int i = 0; !jsSources[i].empty(); i += 2) 147 for (int i = 0; !jsSources[i].empty(); i += 2)
148 jsEngine->Evaluate(jsSources[i + 1], jsSources[i]); 148 jsEngine->Evaluate(jsSources[i + 1], jsSources[i]);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 } 248 }
249 249
250 void FilterEngine::SetPref(const std::string& pref, JsValuePtr value) 250 void FilterEngine::SetPref(const std::string& pref, JsValuePtr value)
251 { 251 {
252 JsValuePtr func = jsEngine->Evaluate("API.setPref"); 252 JsValuePtr func = jsEngine->Evaluate("API.setPref");
253 JsValueList params; 253 JsValueList params;
254 params.push_back(jsEngine->NewValue(pref)); 254 params.push_back(jsEngine->NewValue(pref));
255 params.push_back(value); 255 params.push_back(value);
256 func->Call(params); 256 func->Call(params);
257 } 257 }
258
259 void FilterEngine::ForceUpdateCheck(FilterEngine::UpdaterCallback callback)
260 {
261 std::string eventName = "updateCheckDone";
262 eventName += ++updateCheckId;
263
264 jsEngine->SetEventCallback(eventName, std::tr1::bind(&FilterEngine::UpdateChec kDone,
265 this, eventName, callback, std::tr1::placeholders::_1));
266
267 JsValuePtr func = jsEngine->Evaluate("API.forceUpdateCheck");
268 JsValueList params;
269 params.push_back(jsEngine->NewValue(eventName));
270 func->Call(params);
271 }
272
273 void FilterEngine::UpdateCheckDone(std::string eventName, FilterEngine::UpdaterC allback callback, JsValueList& params)
274 {
275 jsEngine->RemoveEventCallback(eventName);
276
277 std::string error(params.size() >= 1 && !params[0]->IsNull() ? params[0]->AsSt ring() : "");
278 callback(error);
279 }
OLDNEW
« lib/updater.js ('K') | « libadblockplus.gyp ('k') | test/BaseJsTest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld