Set sender in EventEmitter.emit

This commit is contained in:
Cheng Zhao 2015-06-25 11:16:31 +08:00
parent fb5fe7a714
commit 2ea2413752
3 changed files with 6 additions and 6 deletions

View file

@ -6,6 +6,7 @@
#include "atom/browser/api/event.h" #include "atom/browser/api/event.h"
#include "native_mate/arguments.h" #include "native_mate/arguments.h"
#include "native_mate/dictionary.h"
#include "native_mate/object_template_builder.h" #include "native_mate/object_template_builder.h"
namespace mate { namespace mate {
@ -15,8 +16,8 @@ namespace {
v8::Persistent<v8::ObjectTemplate> event_template; v8::Persistent<v8::ObjectTemplate> event_template;
void PreventDefault(mate::Arguments* args) { void PreventDefault(mate::Arguments* args) {
args->GetThis()->Set(StringToV8(args->isolate(), "defaultPrevented"), mate::Dictionary self(args->isolate(), args->GetThis());
v8::True(args->isolate())); self.Set("defaultPrevented", true);
} }
// Create a pure JavaScript Event object. // Create a pure JavaScript Event object.
@ -38,7 +39,7 @@ EventEmitter::EventEmitter() {
v8::Local<v8::Object> EventEmitter::CreateEvent(v8::Isolate* isolate, v8::Local<v8::Object> EventEmitter::CreateEvent(v8::Isolate* isolate,
content::WebContents* sender, content::WebContents* sender,
IPC::Message* message) const { IPC::Message* message) {
v8::Local<v8::Object> event; v8::Local<v8::Object> event;
bool use_native_event = sender && message; bool use_native_event = sender && message;
@ -49,6 +50,7 @@ v8::Local<v8::Object> EventEmitter::CreateEvent(v8::Isolate* isolate,
} else { } else {
event = CreateEventObject(isolate); event = CreateEventObject(isolate);
} }
mate::Dictionary(isolate, event).Set("sender", GetWrapper(isolate));
return event; return event;
} }

View file

@ -51,7 +51,7 @@ class EventEmitter : public Wrappable {
private: private:
v8::Local<v8::Object> CreateEvent(v8::Isolate* isolate, v8::Local<v8::Object> CreateEvent(v8::Isolate* isolate,
content::WebContents* sender, content::WebContents* sender,
IPC::Message* message) const; IPC::Message* message);
DISALLOW_COPY_AND_ASSIGN(EventEmitter); DISALLOW_COPY_AND_ASSIGN(EventEmitter);
}; };

View file

@ -33,12 +33,10 @@ wrapWebContents = (webContents) ->
# Dispatch IPC messages to the ipc module. # Dispatch IPC messages to the ipc module.
webContents.on 'ipc-message', (event, packed) -> webContents.on 'ipc-message', (event, packed) ->
[channel, args...] = packed [channel, args...] = packed
Object.defineProperty event, 'sender', value: webContents
ipc.emit channel, event, args... ipc.emit channel, event, args...
webContents.on 'ipc-message-sync', (event, packed) -> webContents.on 'ipc-message-sync', (event, packed) ->
[channel, args...] = packed [channel, args...] = packed
Object.defineProperty event, 'returnValue', set: (value) -> event.sendReply JSON.stringify(value) Object.defineProperty event, 'returnValue', set: (value) -> event.sendReply JSON.stringify(value)
Object.defineProperty event, 'sender', value: webContents
ipc.emit channel, event, args... ipc.emit channel, event, args...
webContents.printToPDF = (options, callback) -> webContents.printToPDF = (options, callback) ->