Use create function instead of IDWeakMap constructor
authorCheng Zhao <zcbenz@gmail.com>
Wed, 11 May 2016 07:15:32 +0000 (16:15 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Wed, 11 May 2016 07:15:32 +0000 (16:15 +0900)
atom/common/api/atom_api_id_weak_map.cc
atom/common/api/atom_api_id_weak_map.h
lib/browser/rpc-server.js
lib/renderer/api/remote.js

index 1669f25373c9ce5f2cf51a3803dd29ec4c249285..93457943fce5531900207a735b50a920ee85cc76 100644 (file)
@@ -5,7 +5,6 @@
 #include "atom/common/api/atom_api_id_weak_map.h"
 
 #include "atom/common/node_includes.h"
-#include "native_mate/constructor.h"
 #include "native_mate/dictionary.h"
 
 namespace atom {
@@ -13,6 +12,7 @@ namespace atom {
 namespace api {
 
 IDWeakMap::IDWeakMap(v8::Isolate* isolate) {
+  Init(isolate);
 }
 
 IDWeakMap::~IDWeakMap() {
@@ -47,8 +47,8 @@ void IDWeakMap::BuildPrototype(v8::Isolate* isolate,
 }
 
 // static
-mate::WrappableBase* IDWeakMap::Create(v8::Isolate* isolate) {
-  return new IDWeakMap(isolate);
+mate::Handle<IDWeakMap> IDWeakMap::Create(v8::Isolate* isolate) {
+  return mate::CreateHandle(isolate, new IDWeakMap(isolate));
 }
 
 }  // namespace api
@@ -61,12 +61,8 @@ using atom::api::IDWeakMap;
 
 void Initialize(v8::Local<v8::Object> exports, v8::Local<v8::Value> unused,
                 v8::Local<v8::Context> context, void* priv) {
-  v8::Isolate* isolate = context->GetIsolate();
-  v8::Local<v8::Function> constructor = mate::CreateConstructor<IDWeakMap>(
-      isolate, "IDWeakMap", base::Bind(&IDWeakMap::Create));
-  mate::Dictionary id_weak_map(isolate, constructor);
-  mate::Dictionary dict(isolate, exports);
-  dict.Set("IDWeakMap", id_weak_map);
+  mate::Dictionary dict(context->GetIsolate(), exports);
+  dict.SetMethod("createIDWeakMap", &atom::api::IDWeakMap::Create);
 }
 
 }  // namespace
index 16012b4e20dee91e6f93027cd2a5c9287d077ac6..6d5a8bf7f4309761aabf035200235b45e18d75e7 100644 (file)
@@ -15,7 +15,7 @@ namespace api {
 
 class IDWeakMap : public mate::Wrappable<IDWeakMap> {
  public:
-  static mate::WrappableBase* Create(v8::Isolate* isolate);
+  static mate::Handle<IDWeakMap> Create(v8::Isolate* isolate);
 
   static void BuildPrototype(v8::Isolate* isolate,
                              v8::Local<v8::ObjectTemplate> prototype);
index 1dff5fdb8ade2855758497a2cd4e03488296fb36..00b0e9f468eec4eb9bc701938b47ad92be3092a0 100644 (file)
@@ -1,10 +1,11 @@
 'use strict'
 
 const electron = require('electron')
-const ipcMain = electron.ipcMain
-const objectsRegistry = require('./objects-registry')
 const v8Util = process.atomBinding('v8_util')
-const IDWeakMap = process.atomBinding('id_weak_map').IDWeakMap
+const {ipcMain} = electron
+const {createIDWeakMap} = process.atomBinding('id_weak_map')
+
+const objectsRegistry = require('./objects-registry')
 
 // The internal properties of Function.
 const FUNCTION_PROPERTIES = [
@@ -13,7 +14,7 @@ const FUNCTION_PROPERTIES = [
 
 // The remote functions in renderer processes.
 // id => Function
-let rendererFunctions = new IDWeakMap()
+let rendererFunctions = createIDWeakMap()
 
 // Merge two IDs together.
 let mergeIds = function (webContentsId, metaId) {
index 6631ea22575a89428efff009d567813a437d5c6a..ae3011c5eb1bdcc389826f2e464055557aa01e2b 100644 (file)
@@ -1,15 +1,14 @@
 'use strict'
 
-const ipcRenderer = require('electron').ipcRenderer
-const CallbacksRegistry = require('electron').CallbacksRegistry
 const v8Util = process.atomBinding('v8_util')
-const IDWeakMap = process.atomBinding('id_weak_map').IDWeakMap
+const {ipcRenderer, CallbacksRegistry} = require('electron')
+const {createIDWeakMap} = process.atomBinding('id_weak_map')
 
 const callbacksRegistry = new CallbacksRegistry()
 
 var includes = [].includes
 
-var remoteObjectCache = new IDWeakMap()
+var remoteObjectCache = createIDWeakMap()
 
 // Check for circular reference.
 var isCircular = function (field, visited) {