Chromium Code Reviews| Index: mojo/public/bindings/js/core.cc |
| diff --git a/mojo/public/bindings/js/core.cc b/mojo/public/bindings/js/core.cc |
| index cb6a12ca7380c21c266e0d1bff5be81816720281..3e95edd8b3940744171baf35c328511d712079ac 100644 |
| --- a/mojo/public/bindings/js/core.cc |
| +++ b/mojo/public/bindings/js/core.cc |
| @@ -11,6 +11,7 @@ |
| #include "gin/converter.h" |
| #include "gin/dictionary.h" |
| #include "gin/function_template.h" |
| +#include "gin/object_template_builder.h" |
| #include "gin/per_isolate_data.h" |
| #include "gin/public/wrapper_info.h" |
| #include "mojo/public/bindings/js/handle.h" |
| @@ -92,85 +93,50 @@ v8::Local<v8::ObjectTemplate> Core::GetTemplate(v8::Isolate* isolate) { |
| &g_wrapper_info); |
| if (templ.IsEmpty()) { |
| - templ = v8::ObjectTemplate::New(); |
| - |
| - templ->Set(gin::StringToSymbol(isolate, "close"), |
| - gin::CreateFunctionTemplate(isolate, |
| - base::Bind(mojo::CloseRaw))); |
| - templ->Set(gin::StringToSymbol(isolate, "wait"), |
| - gin::CreateFunctionTemplate(isolate, |
| - base::Bind(mojo::Wait))); |
| - templ->Set(gin::StringToSymbol(isolate, "waitMany"), |
| - gin::CreateFunctionTemplate(isolate, |
| - base::Bind(mojo::WaitMany<std::vector<mojo::Handle>, |
| - std::vector<MojoWaitFlags> >))); |
| - templ->Set(gin::StringToSymbol(isolate, "createMessagePipe"), |
| - gin::CreateFunctionTemplate(isolate, |
| - base::Bind(CreateMessagePipe))); |
| - templ->Set(gin::StringToSymbol(isolate, "writeMessage"), |
| - gin::CreateFunctionTemplate(isolate, |
| - base::Bind(WriteMessage))); |
| - templ->Set(gin::StringToSymbol(isolate, "readMessage"), |
| - gin::CreateFunctionTemplate(isolate, |
| - base::Bind(ReadMessage))); |
| - |
| - // TODO(vtl): Change name of "kInvalidHandle", now that there's no such C++ |
| - // constant? |
| - templ->Set(gin::StringToSymbol(isolate, "kInvalidHandle"), |
| - gin::ConvertToV8(isolate, mojo::Handle())); |
| - |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_OK"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_OK)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_CANCELLED"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_CANCELLED)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_UNKNOWN"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_UNKNOWN)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_INVALID_ARGUMENT"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_INVALID_ARGUMENT)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_DEADLINE_EXCEEDED"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_DEADLINE_EXCEEDED)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_NOT_FOUND"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_NOT_FOUND)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_ALREADY_EXISTS"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_ALREADY_EXISTS)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_PERMISSION_DENIED"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_PERMISSION_DENIED)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_RESOURCE_EXHAUSTED"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_RESOURCE_EXHAUSTED)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_FAILED_PRECONDITION"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_FAILED_PRECONDITION)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_ABORTED"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_ABORTED)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_OUT_OF_RANGE"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_OUT_OF_RANGE)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_UNIMPLEMENTED"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_UNIMPLEMENTED)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_INTERNAL"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_INTERNAL)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_UNAVAILABLE"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_UNAVAILABLE)); |
| - templ->Set(gin::StringToSymbol(isolate, "RESULT_DATA_LOSS"), |
| - gin::ConvertToV8(isolate, MOJO_RESULT_DATA_LOSS)); |
| - |
| - templ->Set(gin::StringToSymbol(isolate, "DEADLINE_INDEFINITE"), |
| - gin::ConvertToV8(isolate, MOJO_DEADLINE_INDEFINITE)); |
| - |
| - templ->Set(gin::StringToSymbol(isolate, "WAIT_FLAG_NONE"), |
| - gin::ConvertToV8(isolate, MOJO_WAIT_FLAG_NONE)); |
| - templ->Set(gin::StringToSymbol(isolate, "WAIT_FLAG_READABLE"), |
| - gin::ConvertToV8(isolate, MOJO_WAIT_FLAG_READABLE)); |
| - templ->Set(gin::StringToSymbol(isolate, "WAIT_FLAG_READABLE"), |
| - gin::ConvertToV8(isolate, MOJO_WAIT_FLAG_READABLE)); |
| - templ->Set(gin::StringToSymbol(isolate, "WAIT_FLAG_EVERYTHING"), |
| - gin::ConvertToV8(isolate, MOJO_WAIT_FLAG_EVERYTHING)); |
| - |
| - templ->Set(gin::StringToSymbol(isolate, "WRITE_MESSAGE_FLAG_NONE"), |
| - gin::ConvertToV8(isolate, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| - |
| - templ->Set(gin::StringToSymbol(isolate, "READ_MESSAGE_FLAG_NONE"), |
| - gin::ConvertToV8(isolate, MOJO_READ_MESSAGE_FLAG_NONE)); |
| - templ->Set(gin::StringToSymbol(isolate, "READ_MESSAGE_FLAG_MAY_DISCARD"), |
| - gin::ConvertToV8(isolate, MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); |
| + gin::ObjectTemplateBuilder builder(isolate); |
| + templ = builder |
| + .SetMethod("close", mojo::CloseRaw) |
| + .SetMethod("wait", mojo::Wait) |
|
abarth-chromium
2013/11/28 06:27:09
Oh, wow. The base::Bind is implicit?
Aaron Boodman
2013/11/28 18:25:22
Yeah, just a little sugar. There's an override tha
|
| + .SetMethod("waitMany", mojo::WaitMany<std::vector<mojo::Handle>, |
| + std::vector<MojoWaitFlags> >) |
| + .SetMethod("createMessagePipe", CreateMessagePipe) |
| + .SetMethod("writeMessage", WriteMessage) |
| + .SetMethod("readMessage", ReadMessage) |
| + |
| + // TODO(vtl): Change name of "kInvalidHandle", now that there's no such |
| + // C++ constant? |
| + .SetValue("kInvalidHandle", mojo::Handle()) |
| + |
| + .SetValue("RESULT_OK", MOJO_RESULT_OK) |
| + .SetValue("RESULT_CANCELLED", MOJO_RESULT_CANCELLED) |
| + .SetValue("RESULT_UNKNOWN", MOJO_RESULT_UNKNOWN) |
| + .SetValue("RESULT_INVALID_ARGUMENT", MOJO_RESULT_INVALID_ARGUMENT) |
| + .SetValue("RESULT_DEADLINE_EXCEEDED", MOJO_RESULT_DEADLINE_EXCEEDED) |
| + .SetValue("RESULT_NOT_FOUND", MOJO_RESULT_NOT_FOUND) |
| + .SetValue("RESULT_ALREADY_EXISTS", MOJO_RESULT_ALREADY_EXISTS) |
| + .SetValue("RESULT_PERMISSION_DENIED", MOJO_RESULT_PERMISSION_DENIED) |
| + .SetValue("RESULT_RESOURCE_EXHAUSTED", MOJO_RESULT_RESOURCE_EXHAUSTED) |
| + .SetValue("RESULT_FAILED_PRECONDITION", MOJO_RESULT_FAILED_PRECONDITION) |
| + .SetValue("RESULT_ABORTED", MOJO_RESULT_ABORTED) |
| + .SetValue("RESULT_OUT_OF_RANGE", MOJO_RESULT_OUT_OF_RANGE) |
| + .SetValue("RESULT_UNIMPLEMENTED", MOJO_RESULT_UNIMPLEMENTED) |
| + .SetValue("RESULT_INTERNAL", MOJO_RESULT_INTERNAL) |
| + .SetValue("RESULT_UNAVAILABLE", MOJO_RESULT_UNAVAILABLE) |
| + .SetValue("RESULT_DATA_LOSS", MOJO_RESULT_DATA_LOSS) |
| + |
| + .SetValue("DEADLINE_INDEFINITE", MOJO_DEADLINE_INDEFINITE) |
| + |
| + .SetValue("WAIT_FLAG_NONE", MOJO_WAIT_FLAG_NONE) |
| + .SetValue("WAIT_FLAG_READABLE", MOJO_WAIT_FLAG_READABLE) |
| + .SetValue("WAIT_FLAG_READABLE", MOJO_WAIT_FLAG_READABLE) |
| + .SetValue("WAIT_FLAG_EVERYTHING", MOJO_WAIT_FLAG_EVERYTHING) |
| + |
| + .SetValue("WRITE_MESSAGE_FLAG_NONE", MOJO_WRITE_MESSAGE_FLAG_NONE) |
| + |
| + .SetValue("READ_MESSAGE_FLAG_NONE", MOJO_READ_MESSAGE_FLAG_NONE) |
| + .SetValue("READ_MESSAGE_FLAG_MAY_DISCARD", |
| + MOJO_READ_MESSAGE_FLAG_MAY_DISCARD) |
| + .Build(); |
| data->SetObjectTemplate(&g_wrapper_info, templ); |
| } |