Index: mojo/public/bindings/js/core.cc |
diff --git a/mojo/public/bindings/js/core.cc b/mojo/public/bindings/js/core.cc |
index 1a2d594f4e030396daf37d2e89ebf3572de6ad46..cb6a12ca7380c21c266e0d1bff5be81816720281 100644 |
--- a/mojo/public/bindings/js/core.cc |
+++ b/mojo/public/bindings/js/core.cc |
@@ -20,70 +20,47 @@ namespace js { |
namespace { |
-void CreateMessagePipe(const v8::FunctionCallbackInfo<v8::Value>& info) { |
- gin::Arguments args(info); |
- |
+gin::Dictionary CreateMessagePipe(const gin::Arguments& args) { |
MojoHandle handle_0 = MOJO_HANDLE_INVALID; |
MojoHandle handle_1 = MOJO_HANDLE_INVALID; |
MojoResult result = MojoCreateMessagePipe(&handle_0, &handle_1); |
CHECK(result == MOJO_RESULT_OK); |
- gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(info.GetIsolate()); |
+ gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(args.isolate()); |
dictionary.Set("handle0", handle_0); |
dictionary.Set("handle1", handle_1); |
- args.Return(dictionary); |
+ return dictionary; |
} |
-void WriteMessage(const v8::FunctionCallbackInfo<v8::Value>& info) { |
- gin::Arguments args(info); |
- |
- MojoHandle handle = MOJO_HANDLE_INVALID; |
- gin::ArrayBufferView buffer(args.isolate()); |
- std::vector<MojoHandle> handles; |
- MojoWriteMessageFlags flags = MOJO_WRITE_MESSAGE_FLAG_NONE; |
- |
- if (!args.GetNext(&handle) || |
- !args.GetNext(&buffer) || |
- !args.GetNext(&handles) || |
- !args.GetNext(&flags)) { |
- return args.ThrowError(); |
- } |
- |
- args.Return(MojoWriteMessage(handle, |
- buffer.bytes(), |
- static_cast<uint32_t>(buffer.num_bytes()), |
- handles.empty() ? NULL : handles.data(), |
- static_cast<uint32_t>(handles.size()), |
- flags)); |
+MojoResult WriteMessage(MojoHandle handle, |
+ const gin::ArrayBufferView& buffer, |
+ const std::vector<MojoHandle>& handles, |
+ MojoWriteMessageFlags flags) { |
+ return MojoWriteMessage(handle, |
+ buffer.bytes(), |
+ static_cast<uint32_t>(buffer.num_bytes()), |
+ handles.empty() ? NULL : handles.data(), |
+ static_cast<uint32_t>(handles.size()), |
+ flags); |
} |
-void ReadMessage(const v8::FunctionCallbackInfo<v8::Value>& info) { |
- gin::Arguments args(info); |
- |
- MojoHandle handle = MOJO_HANDLE_INVALID; |
- MojoReadMessageFlags flags = MOJO_READ_MESSAGE_FLAG_NONE; |
- |
- if (!args.GetNext(&handle) || |
- !args.GetNext(&flags)) { |
- return args.ThrowError(); |
- } |
- |
+gin::Dictionary ReadMessage(const gin::Arguments& args, MojoHandle handle, |
+ MojoReadMessageFlags flags) { |
uint32_t num_bytes = 0; |
uint32_t num_handles = 0; |
MojoResult result = MojoReadMessage( |
handle, NULL, &num_bytes, NULL, &num_handles, flags); |
if (result != MOJO_RESULT_RESOURCE_EXHAUSTED) { |
- gin::Dictionary dictionary = gin::Dictionary::CreateEmpty( |
- info.GetIsolate()); |
+ gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(args.isolate()); |
dictionary.Set("result", result); |
- args.Return(dictionary); |
+ return dictionary; |
} |
v8::Handle<v8::ArrayBuffer> array_buffer = v8::ArrayBuffer::New(num_bytes); |
std::vector<MojoHandle> handles(num_handles); |
- gin::ArrayBuffer buffer(args.isolate()); |
- ConvertFromV8(array_buffer, &buffer); |
+ gin::ArrayBuffer buffer; |
+ ConvertFromV8(args.isolate(), array_buffer, &buffer); |
CHECK(buffer.num_bytes() == num_bytes); |
result = MojoReadMessage(handle, |
@@ -96,11 +73,11 @@ void ReadMessage(const v8::FunctionCallbackInfo<v8::Value>& info) { |
CHECK(buffer.num_bytes() == num_bytes); |
CHECK(handles.size() == num_handles); |
- gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(info.GetIsolate()); |
+ gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(args.isolate()); |
dictionary.Set("result", result); |
dictionary.Set("buffer", array_buffer); |
dictionary.Set("handles", handles); |
- args.Return(dictionary); |
+ return dictionary; |
} |
gin::WrapperInfo g_wrapper_info = { gin::kEmbedderNativeGin }; |
@@ -119,19 +96,23 @@ v8::Local<v8::ObjectTemplate> Core::GetTemplate(v8::Isolate* isolate) { |
templ->Set(gin::StringToSymbol(isolate, "close"), |
gin::CreateFunctionTemplate(isolate, |
- base::Bind(mojo::CloseRaw))); |
+ base::Bind(mojo::CloseRaw))); |
templ->Set(gin::StringToSymbol(isolate, "wait"), |
- gin::CreateFunctionTemplate(isolate, base::Bind(mojo::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"), |
- v8::FunctionTemplate::New(CreateMessagePipe)); |
+ gin::CreateFunctionTemplate(isolate, |
+ base::Bind(CreateMessagePipe))); |
templ->Set(gin::StringToSymbol(isolate, "writeMessage"), |
- v8::FunctionTemplate::New(WriteMessage)); |
+ gin::CreateFunctionTemplate(isolate, |
+ base::Bind(WriteMessage))); |
templ->Set(gin::StringToSymbol(isolate, "readMessage"), |
- v8::FunctionTemplate::New(ReadMessage)); |
+ gin::CreateFunctionTemplate(isolate, |
+ base::Bind(ReadMessage))); |
// TODO(vtl): Change name of "kInvalidHandle", now that there's no such C++ |
// constant? |