From 1e4762ce925f687b52b09101b016aa77f739737f Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Sun, 22 Sep 2013 10:03:47 +0800 Subject: [PATCH] Do not store the event.returnValue. --- browser/api/atom_api_event.cc | 14 ++++---------- browser/api/atom_api_event.h | 3 --- browser/api/lib/ipc.coffee | 11 +++-------- 3 files changed, 7 insertions(+), 21 deletions(-) diff --git a/browser/api/atom_api_event.cc b/browser/api/atom_api_event.cc index d9b523bd903c..5e66fa705b8f 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 ebbec7b97cab..4fd5266b7feb 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 27deb700fb5f..970709ebc90d 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...)