// Copyright (c) 2013 GitHub, Inc. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "browser/api/atom_api_event.h" #include "common/string16_conversions.h" using node::node_isolate; namespace atom { namespace api { v8::Persistent Event::constructor_template_; Event::Event() : prevent_default_(false) { } Event::~Event() { } // static v8::Handle Event::CreateV8Object() { v8::HandleScope scope; if (constructor_template_.IsEmpty()) { v8::Local t = v8::FunctionTemplate::New(New); constructor_template_ = v8::Persistent::New( node_isolate, t); constructor_template_->InstanceTemplate()->SetInternalFieldCount(1); constructor_template_->SetClassName(v8::String::NewSymbol("Event")); NODE_SET_PROTOTYPE_METHOD(t, "preventDefault", PreventDefault); } v8::Handle v8_event = constructor_template_->GetFunction()->NewInstance(0, NULL); 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); } v8::Handle Event::New(const v8::Arguments &args) { Event* event = new Event; event->Wrap(args.This()); return args.This(); } v8::Handle Event::PreventDefault(const v8::Arguments &args) { Event* event = Unwrap(args.This()); if (event == NULL) return node::ThrowError("Event is already destroyed"); event->prevent_default_ = true; return v8::Undefined(); } } // namespace api } // namespace atom