Clean up the code handling renderer callback

This commit is contained in:
Cheng Zhao 2015-10-31 15:00:06 +08:00
parent 323ab92299
commit cb91d4487b
4 changed files with 24 additions and 33 deletions

View file

@ -12,33 +12,32 @@ namespace atom {
namespace api {
IDWeakMap::IDWeakMap() : id_weak_map_(new atom::IDWeakMap) {
IDWeakMap::IDWeakMap() {
}
IDWeakMap::~IDWeakMap() {
id_weak_map_ = nullptr;
}
void IDWeakMap::Set(v8::Isolate* isolate,
int32_t id,
v8::Local<v8::Object> object) {
id_weak_map_->Set(isolate, id, object);
id_weak_map_.Set(isolate, id, object);
}
v8::Local<v8::Object> IDWeakMap::Get(v8::Isolate* isolate, int32_t id) {
return id_weak_map_->Get(isolate, id).ToLocalChecked();
return id_weak_map_.Get(isolate, id).ToLocalChecked();
}
bool IDWeakMap::Has(int32_t id) {
return id_weak_map_->Has(id);
return id_weak_map_.Has(id);
}
void IDWeakMap::Remove(int32_t id) {
id_weak_map_->Remove(id);
id_weak_map_.Remove(id);
}
bool IDWeakMap::IsDestroyed() const {
return !id_weak_map_;
void IDWeakMap::Clear() {
id_weak_map_.Clear();
}
// static
@ -48,7 +47,8 @@ void IDWeakMap::BuildPrototype(v8::Isolate* isolate,
.SetMethod("set", &IDWeakMap::Set)
.SetMethod("get", &IDWeakMap::Get)
.SetMethod("has", &IDWeakMap::Has)
.SetMethod("remove", &IDWeakMap::Remove);
.SetMethod("remove", &IDWeakMap::Remove)
.SetMethod("clear", &IDWeakMap::Clear);
}
// static

View file

@ -24,17 +24,15 @@ class IDWeakMap : public mate::Wrappable {
IDWeakMap();
~IDWeakMap();
// mate::Wrappable:
bool IsDestroyed() const override;
private:
// Api for IDWeakMap.
void Set(v8::Isolate* isolate, int32_t id, v8::Local<v8::Object> object);
v8::Local<v8::Object> Get(v8::Isolate* isolate, int32_t id);
bool Has(int32_t id);
void Remove(int32_t id);
void Clear();
atom::IDWeakMap* id_weak_map_;
atom::IDWeakMap id_weak_map_;
DISALLOW_COPY_AND_ASSIGN(IDWeakMap);
};

View file

@ -7,8 +7,9 @@ class CallbacksRegistry
@callbacks = {}
add: (callback) ->
if v8Util.getHiddenValue(callback, 'metaId')?
return v8Util.getHiddenValue(callback, 'metaId')
# The callback is already added.
id = v8Util.getHiddenValue callback, 'callbackId'
return id if id?
id = ++@nextId
@ -25,7 +26,7 @@ class CallbacksRegistry
break
@callbacks[id] = callback
v8Util.setHiddenValue callback, 'metaId', id
v8Util.setHiddenValue callback, 'callbackId', id
v8Util.setHiddenValue callback, 'location', filenameAndLine
id