Set "defaultPrevented" when "preventDefault()" is called

This commit is contained in:
Cheng Zhao 2014-10-27 17:55:28 +08:00
parent e9b344b200
commit 94818aef26
3 changed files with 6 additions and 21 deletions

View file

@ -19,8 +19,7 @@ v8::Persistent<v8::ObjectTemplate> template_;
Event::Event() Event::Event()
: sender_(NULL), : sender_(NULL),
message_(NULL), message_(NULL) {
prevent_default_(false) {
} }
Event::~Event() { Event::~Event() {
@ -52,8 +51,9 @@ void Event::WebContentsDestroyed() {
message_ = NULL; message_ = NULL;
} }
void Event::PreventDefault() { void Event::PreventDefault(v8::Isolate* isolate) {
prevent_default_ = true; GetWrapper(isolate)->Set(StringToV8(isolate, "defaultPrevented"),
v8::True(isolate));
} }
bool Event::SendReply(const base::string16& json) { bool Event::SendReply(const base::string16& json) {

View file

@ -24,14 +24,11 @@ class Event : public Wrappable,
void SetSenderAndMessage(content::WebContents* sender, IPC::Message* message); void SetSenderAndMessage(content::WebContents* sender, IPC::Message* message);
// event.PreventDefault(). // event.PreventDefault().
void PreventDefault(); void PreventDefault(v8::Isolate* isolate);
// event.sendReply(json), used for replying synchronous message. // event.sendReply(json), used for replying synchronous message.
bool SendReply(const base::string16& json); bool SendReply(const base::string16& json);
// Whether event.preventDefault() is called.
bool prevent_default() const { return prevent_default_; }
protected: protected:
Event(); Event();
virtual ~Event(); virtual ~Event();
@ -47,8 +44,6 @@ class Event : public Wrappable,
content::WebContents* sender_; content::WebContents* sender_;
IPC::Message* message_; IPC::Message* message_;
bool prevent_default_;
DISALLOW_COPY_AND_ASSIGN(Event); DISALLOW_COPY_AND_ASSIGN(Event);
}; };

View file

@ -98,17 +98,7 @@ bool EventEmitter::Emit(v8::Isolate* isolate,
node::MakeCallback(isolate, GetWrapper(isolate), "emit", args.size(), node::MakeCallback(isolate, GetWrapper(isolate), "emit", args.size(),
&args[0]); &args[0]);
if (use_native_event) { return event->Get(StringToV8(isolate, "defaultPrevented"))->BooleanValue();
Handle<Event> native_event;
if (ConvertFromV8(isolate, event, &native_event))
return native_event->prevent_default();
}
v8::Handle<v8::Value> prevent_default =
event->GetHiddenValue(StringToSymbol(isolate, "prevent_default"));
if (prevent_default.IsEmpty())
return false;
return prevent_default->BooleanValue();
} }
} // namespace mate } // namespace mate