use webcontents id to identify callbacks
This commit is contained in:
parent
3a154ab8ea
commit
2c59f4567e
6 changed files with 25 additions and 21 deletions
|
@ -12,11 +12,11 @@ namespace atom {
|
|||
|
||||
namespace api {
|
||||
|
||||
IDWeakMap::IDWeakMap() {
|
||||
id_weak_map_.reset(new atom::IDWeakMap);
|
||||
IDWeakMap::IDWeakMap() : id_weak_map_(new atom::IDWeakMap) {
|
||||
}
|
||||
|
||||
IDWeakMap::~IDWeakMap() {
|
||||
id_weak_map_ = nullptr;
|
||||
}
|
||||
|
||||
void IDWeakMap::Set(v8::Isolate* isolate,
|
||||
|
|
|
@ -22,7 +22,7 @@ class IDWeakMap : public mate::Wrappable {
|
|||
|
||||
protected:
|
||||
IDWeakMap();
|
||||
virtual ~IDWeakMap();
|
||||
~IDWeakMap();
|
||||
|
||||
// mate::Wrappable:
|
||||
bool IsDestroyed() const override;
|
||||
|
@ -34,7 +34,7 @@ class IDWeakMap : public mate::Wrappable {
|
|||
bool Has(int32_t id);
|
||||
void Remove(int32_t id);
|
||||
|
||||
scoped_ptr<atom::IDWeakMap> id_weak_map_;
|
||||
atom::IDWeakMap* id_weak_map_;
|
||||
|
||||
DISALLOW_COPY_AND_ASSIGN(IDWeakMap);
|
||||
};
|
||||
|
|
|
@ -22,8 +22,6 @@ class CallbacksRegistry
|
|||
continue if location.indexOf('(native)') isnt -1
|
||||
continue if location.indexOf('atom.asar') isnt -1
|
||||
[x, filenameAndLine] = /([^/^\)]*)\)?$/gi.exec(location)
|
||||
[x, line, column] = /(\d+):(\d+)/g.exec(filenameAndLine)
|
||||
id += parseInt(line) + parseInt(column)
|
||||
break
|
||||
|
||||
@callbacks[id] = callback
|
||||
|
|
|
@ -32,15 +32,6 @@ IDWeakMap::IDWeakMap() : next_id_(0) {
|
|||
IDWeakMap::~IDWeakMap() {
|
||||
}
|
||||
|
||||
int32_t IDWeakMap::Add(v8::Isolate* isolate, v8::Local<v8::Object> object) {
|
||||
int32_t id = GetNextID();
|
||||
auto global = make_linked_ptr(new v8::Global<v8::Object>(isolate, object));
|
||||
ObjectKey* key = new ObjectKey(id, this);
|
||||
global->SetWeak(key, OnObjectGC, v8::WeakCallbackType::kParameter);
|
||||
map_[id] = global;
|
||||
return id;
|
||||
}
|
||||
|
||||
void IDWeakMap::Set(v8::Isolate* isolate,
|
||||
int32_t id,
|
||||
v8::Local<v8::Object> object) {
|
||||
|
@ -50,6 +41,12 @@ void IDWeakMap::Set(v8::Isolate* isolate,
|
|||
map_[id] = global;
|
||||
}
|
||||
|
||||
int32_t IDWeakMap::Add(v8::Isolate* isolate, v8::Local<v8::Object> object) {
|
||||
int32_t id = GetNextID();
|
||||
Set(isolate, id, object);
|
||||
return id;
|
||||
}
|
||||
|
||||
v8::MaybeLocal<v8::Object> IDWeakMap::Get(v8::Isolate* isolate, int32_t id) {
|
||||
auto iter = map_.find(id);
|
||||
if (iter == map_.end())
|
||||
|
|
|
@ -19,12 +19,12 @@ class IDWeakMap {
|
|||
IDWeakMap();
|
||||
~IDWeakMap();
|
||||
|
||||
// Adds |object| to WeakMap and returns its allocated |id|.
|
||||
int32_t Add(v8::Isolate* isolate, v8::Local<v8::Object> object);
|
||||
|
||||
// Sets the object to WeakMap with the given |id|.
|
||||
void Set(v8::Isolate* isolate, int32_t id, v8::Local<v8::Object> object);
|
||||
|
||||
// Adds |object| to WeakMap and returns its allocated |id|.
|
||||
int32_t Add(v8::Isolate* isolate, v8::Local<v8::Object> object);
|
||||
|
||||
// Gets the object from WeakMap by its |id|.
|
||||
v8::MaybeLocal<v8::Object> Get(v8::Isolate* isolate, int32_t id);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue