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 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))); |
|
abarth-chromium
2013/11/27 00:20:10
Nice!
|
| // TODO(vtl): Change name of "kInvalidHandle", now that there's no such C++ |
| // constant? |