| Index: src/JsEngine.cpp | 
| =================================================================== | 
| --- a/src/JsEngine.cpp | 
| +++ b/src/JsEngine.cpp | 
| @@ -88,16 +88,34 @@ AdblockPlus::JsValuePtr AdblockPlus::JsE | 
| const v8::TryCatch tryCatch; | 
| const v8::Handle<v8::Script> script = CompileScript(source, filename); | 
| CheckTryCatch(tryCatch); | 
| v8::Local<v8::Value> result = script->Run(); | 
| CheckTryCatch(tryCatch); | 
| return JsValuePtr(new JsValue(shared_from_this(), result)); | 
| } | 
|  | 
| +void AdblockPlus::JsEngine::SetEventCallback(const std::string& eventName, | 
| +    AdblockPlus::JsEngine::EventCallback callback) | 
| +{ | 
| +  eventCallbacks[eventName] = callback; | 
| +} | 
| + | 
| +void AdblockPlus::JsEngine::RemoveEventCallback(const std::string& eventName) | 
| +{ | 
| +  eventCallbacks.erase(eventName); | 
| +} | 
| + | 
| +void AdblockPlus::JsEngine::TriggerEvent(const std::string& eventName) | 
| +{ | 
| +  EventMap::iterator it = eventCallbacks.find(eventName); | 
| +  if (it != eventCallbacks.end()) | 
| +    it->second(); | 
| +} | 
| + | 
| void AdblockPlus::JsEngine::Gc() | 
| { | 
| while (!v8::V8::IdleNotification()); | 
| } | 
|  | 
| AdblockPlus::JsValuePtr AdblockPlus::JsEngine::NewValue(const std::string& val) | 
| { | 
| const Context context(shared_from_this()); | 
|  |