Do not store the event.returnValue.
This commit is contained in:
parent
d443b36446
commit
1e4762ce92
3 changed files with 7 additions and 21 deletions
|
@ -46,14 +46,6 @@ v8::Handle<v8::Object> Event::CreateV8Object() {
|
||||||
return scope.Close(v8_event);
|
return scope.Close(v8_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
|
||||||
string16 Event::GetReturnValue(v8::Handle<v8::Object> event) {
|
|
||||||
v8::HandleScope scope;
|
|
||||||
v8::Local<v8::Value> json = event->Get(v8::String::New("returnValue"));
|
|
||||||
return V8ValueToUTF16(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Event::SetSenderAndMessage(IPC::Sender* sender, IPC::Message* message) {
|
void Event::SetSenderAndMessage(IPC::Sender* sender, IPC::Message* message) {
|
||||||
DCHECK(!sender_);
|
DCHECK(!sender_);
|
||||||
DCHECK(!message_);
|
DCHECK(!message_);
|
||||||
|
@ -87,13 +79,15 @@ v8::Handle<v8::Value> Event::SendReply(const v8::Arguments& args) {
|
||||||
return node::ThrowError("Event is already destroyed");
|
return node::ThrowError("Event is already destroyed");
|
||||||
|
|
||||||
if (event->sender_ == NULL)
|
if (event->sender_ == NULL)
|
||||||
return node::ThrowError("Can only send reply to synchronous events");
|
return node::ThrowError("Can only send reply to synchronous events once");
|
||||||
|
|
||||||
string16 json = GetReturnValue(args.This());
|
string16 json = V8ValueToUTF16(args[0]);
|
||||||
|
|
||||||
AtomViewHostMsg_Message_Sync::WriteReplyParams(event->message_, json);
|
AtomViewHostMsg_Message_Sync::WriteReplyParams(event->message_, json);
|
||||||
event->sender_->Send(event->message_);
|
event->sender_->Send(event->message_);
|
||||||
|
|
||||||
|
event->sender_ = NULL;
|
||||||
|
event->message_ = NULL;
|
||||||
return v8::Undefined();
|
return v8::Undefined();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,9 +25,6 @@ class Event : public node::ObjectWrap {
|
||||||
// Create a V8 Event object.
|
// Create a V8 Event object.
|
||||||
static v8::Handle<v8::Object> CreateV8Object();
|
static v8::Handle<v8::Object> CreateV8Object();
|
||||||
|
|
||||||
// Get JSON string of the event.returnValue from a Event object.
|
|
||||||
static string16 GetReturnValue(v8::Handle<v8::Object> event);
|
|
||||||
|
|
||||||
// Pass the sender and message to be replied.
|
// Pass the sender and message to be replied.
|
||||||
void SetSenderAndMessage(IPC::Sender* sender, IPC::Message* message);
|
void SetSenderAndMessage(IPC::Sender* sender, IPC::Message* message);
|
||||||
|
|
||||||
|
|
|
@ -15,15 +15,10 @@ class Ipc extends EventEmitter
|
||||||
process.on 'ATOM_INTERNAL_MESSAGE', (args...) =>
|
process.on 'ATOM_INTERNAL_MESSAGE', (args...) =>
|
||||||
@emit(args...)
|
@emit(args...)
|
||||||
process.on 'ATOM_INTERNAL_MESSAGE_SYNC', (channel, event, args...) =>
|
process.on 'ATOM_INTERNAL_MESSAGE_SYNC', (channel, event, args...) =>
|
||||||
returnValue = null
|
set = (value) -> event.sendReply JSON.stringify(value)
|
||||||
get = -> returnValue
|
|
||||||
set = (value) ->
|
|
||||||
throw new Error('returnValue can be only set once') if returnValue?
|
|
||||||
returnValue = JSON.stringify(value)
|
|
||||||
event.sendReply()
|
|
||||||
|
|
||||||
Object.defineProperty event, 'returnValue', {get, set}
|
Object.defineProperty event, 'returnValue', {set}
|
||||||
Object.defineProperty event, 'result', {get, set}
|
Object.defineProperty event, 'result', {set}
|
||||||
|
|
||||||
@emit(channel, event, args...)
|
@emit(channel, event, args...)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue