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()
: sender_(NULL),
message_(NULL),
prevent_default_(false) {
message_(NULL) {
}
Event::~Event() {
@ -52,8 +51,9 @@ void Event::WebContentsDestroyed() {
message_ = NULL;
}
void Event::PreventDefault() {
prevent_default_ = true;
void Event::PreventDefault(v8::Isolate* isolate) {
GetWrapper(isolate)->Set(StringToV8(isolate, "defaultPrevented"),
v8::True(isolate));
}
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);
// event.PreventDefault().
void PreventDefault();
void PreventDefault(v8::Isolate* isolate);
// event.sendReply(json), used for replying synchronous message.
bool SendReply(const base::string16& json);
// Whether event.preventDefault() is called.
bool prevent_default() const { return prevent_default_; }
protected:
Event();
virtual ~Event();
@ -47,8 +44,6 @@ class Event : public Wrappable,
content::WebContents* sender_;
IPC::Message* message_;
bool prevent_default_;
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(),
&args[0]);
if (use_native_event) {
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();
return event->Get(StringToV8(isolate, "defaultPrevented"))->BooleanValue();
}
} // namespace mate