diff --git a/browser/api/atom_api_event.cc b/browser/api/atom_api_event.cc index d9b523bd903..5e66fa705b8 100644 --- a/browser/api/atom_api_event.cc +++ b/browser/api/atom_api_event.cc @@ -46,14 +46,6 @@ v8::Handle Event::CreateV8Object() { return scope.Close(v8_event); } -// static -string16 Event::GetReturnValue(v8::Handle event) { - v8::HandleScope scope; - v8::Local json = event->Get(v8::String::New("returnValue")); - return V8ValueToUTF16(json); -} - - void Event::SetSenderAndMessage(IPC::Sender* sender, IPC::Message* message) { DCHECK(!sender_); DCHECK(!message_); @@ -87,13 +79,15 @@ v8::Handle Event::SendReply(const v8::Arguments& args) { return node::ThrowError("Event is already destroyed"); 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); event->sender_->Send(event->message_); + event->sender_ = NULL; + event->message_ = NULL; return v8::Undefined(); } diff --git a/browser/api/atom_api_event.h b/browser/api/atom_api_event.h index ebbec7b97ca..4fd5266b7fe 100644 --- a/browser/api/atom_api_event.h +++ b/browser/api/atom_api_event.h @@ -25,9 +25,6 @@ class Event : public node::ObjectWrap { // Create a V8 Event object. static v8::Handle CreateV8Object(); - // Get JSON string of the event.returnValue from a Event object. - static string16 GetReturnValue(v8::Handle event); - // Pass the sender and message to be replied. void SetSenderAndMessage(IPC::Sender* sender, IPC::Message* message); diff --git a/browser/api/lib/ipc.coffee b/browser/api/lib/ipc.coffee index 27deb700fb5..970709ebc90 100644 --- a/browser/api/lib/ipc.coffee +++ b/browser/api/lib/ipc.coffee @@ -15,15 +15,10 @@ class Ipc extends EventEmitter process.on 'ATOM_INTERNAL_MESSAGE', (args...) => @emit(args...) process.on 'ATOM_INTERNAL_MESSAGE_SYNC', (channel, event, args...) => - returnValue = null - get = -> returnValue - set = (value) -> - throw new Error('returnValue can be only set once') if returnValue? - returnValue = JSON.stringify(value) - event.sendReply() + set = (value) -> event.sendReply JSON.stringify(value) - Object.defineProperty event, 'returnValue', {get, set} - Object.defineProperty event, 'result', {get, set} + Object.defineProperty event, 'returnValue', {set} + Object.defineProperty event, 'result', {set} @emit(channel, event, args...)