diff --git a/common/api/atom_extensions.cc b/common/api/atom_extensions.cc index e3f191bf20ee..ff6caa940de6 100644 --- a/common/api/atom_extensions.cc +++ b/common/api/atom_extensions.cc @@ -32,17 +32,18 @@ namespace atom { #include "common/api/atom_extensions.h" // NOLINT node::node_module_struct* GetBuiltinModule(const char *name, bool is_browser) { - char buf[128]; + char common[128]; + char spec[128]; node::node_module_struct *cur = NULL; - if (is_browser) - snprintf(buf, sizeof(buf), "atom_browser_%s", name); - else - snprintf(buf, sizeof(buf), "atom_renderer_%s", name); + snprintf(common, sizeof(common), "atom_common_%s", name); + snprintf(spec, sizeof(spec), + (is_browser ? "atom_browser_%s": "atom_renderer_%s"), + name); /* TODO: you could look these up in a hash, but there are only * a few, and once loaded they are cached. */ for (int i = 0; node_module_list[i] != NULL; i++) { cur = node_module_list[i]; - if (strcmp(cur->modname, buf) == 0) { + if (strcmp(cur->modname, common) == 0 || strcmp(cur->modname, spec) == 0) { return cur; } } diff --git a/common/api/atom_extensions.h b/common/api/atom_extensions.h index 2a985e5946d9..5a801a6606af 100644 --- a/common/api/atom_extensions.h +++ b/common/api/atom_extensions.h @@ -8,9 +8,15 @@ NODE_EXT_LIST_START +// Module names start with `atom_browser_` can only be used by browser process. NODE_EXT_LIST_ITEM(atom_browser_ipc) NODE_EXT_LIST_ITEM(atom_browser_window) +// Module names start with `atom_renderer_` can only be used by renderer +// process. NODE_EXT_LIST_ITEM(atom_renderer_ipc) +// Module names start with `atom_common_` can be used by both browser and +// renderer processes. + NODE_EXT_LIST_END