// Copyright (c) 2019 Slack Technologies, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #include "shell/browser/api/electron_api_event_emitter.h" #include "base/bind.h" #include "base/callback.h" #include "gin/dictionary.h" #include "shell/common/gin_converters/callback_converter.h" #include "shell/common/node_includes.h" #include "v8/include/v8.h" namespace { v8::Global event_emitter_prototype; void SetEventEmitterPrototype(v8::Isolate* isolate, v8::Local proto) { event_emitter_prototype.Reset(isolate, proto); } void Initialize(v8::Local exports, v8::Local unused, v8::Local context, void* priv) { v8::Isolate* isolate = context->GetIsolate(); gin::Dictionary dict(isolate, exports); dict.Set("setEventEmitterPrototype", base::BindRepeating(&SetEventEmitterPrototype)); } } // namespace namespace electron { v8::Local GetEventEmitterPrototype(v8::Isolate* isolate) { CHECK(!event_emitter_prototype.IsEmpty()); return event_emitter_prototype.Get(isolate); } } // namespace electron NODE_LINKED_MODULE_CONTEXT_AWARE(electron_browser_event_emitter, Initialize)