FilterEngine::FilterEngine(JsEnginePtr jsEngine, const FilterEngine::Prefs& preconfiguredPrefs) : jsEngine(jsEngine), initialized(false), firstRun(false), updateCheckId(0) { jsEngine->SetEventCallback("_init", std::bind(&FilterEngine::InitDone, this, std::placeholders::_1)); { // Lock the JS engine while we are loading scripts, no timeouts should fire // until we are done. const JsContext context(jsEngine); // Set the preconfigured prefs JsValuePtr preconfiguredPrefsObject = jsEngine->NewObject(); for (FilterEngine::Prefs::const_iterator it = preconfiguredPrefs.begin(); it != preconfiguredPrefs.end(); it++) { preconfiguredPrefsObject->SetProperty(it->first, it->second); } jsEngine->SetGlobalProperty("_preconfiguredPrefs", preconfiguredPrefsObject); // Load adblockplus scripts for (int i = 0; !jsSources[i].empty(); i += 2) jsEngine->Evaluate(jsSources[i + 1], jsSources[i]); } // TODO: This should really be implemented via a conditional variable while (!initialized) ::Sleep(10); }
FilterEngine::FilterEngine(JsEnginePtr jsEngine) : jsEngine(jsEngine), initialized(false), firstRun(false), updateCheckId(0) { jsEngine->SetEventCallback("init", std::tr1::bind(&FilterEngine::InitDone, this, std::tr1::placeholders::_1)); { // Lock the JS engine while we are loading scripts, no timeouts should fire // until we are done. const JsContext context(jsEngine); for (int i = 0; !jsSources[i].empty(); i += 2) jsEngine->Evaluate(jsSources[i + 1], jsSources[i]); } // TODO: This should really be implemented via a conditional variable while (!initialized) ::Sleep(10); }