OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "mojo/public/bindings/js/core.h" | 5 #include "mojo/public/bindings/js/core.h" |
6 | 6 |
7 #include "gin/arguments.h" | 7 #include "gin/arguments.h" |
8 #include "gin/array_buffer.h" | 8 #include "gin/array_buffer.h" |
9 #include "gin/converter.h" | 9 #include "gin/converter.h" |
10 #include "gin/dictionary.h" | 10 #include "gin/dictionary.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 if (!args.GetNext(&handles) || | 53 if (!args.GetNext(&handles) || |
54 !args.GetNext(&flags) || | 54 !args.GetNext(&flags) || |
55 !args.GetNext(&deadline)) { | 55 !args.GetNext(&deadline)) { |
56 return args.ThrowError(); | 56 return args.ThrowError(); |
57 } | 57 } |
58 | 58 |
59 if (handles.size() != flags.size()) | 59 if (handles.size() != flags.size()) |
60 return args.ThrowTypeError("Arrays must have the same length."); | 60 return args.ThrowTypeError("Arrays must have the same length."); |
61 | 61 |
62 args.Return(mojo::WaitMany(handles.data(), flags.data(), | 62 args.Return(mojo::WaitMany(handles.data(), flags.data(), |
63 handles.size(), deadline)); | 63 static_cast<uint32_t>(handles.size()), deadline)); |
64 } | 64 } |
65 | 65 |
66 void CreateMessagePipe(const v8::FunctionCallbackInfo<v8::Value>& info) { | 66 void CreateMessagePipe(const v8::FunctionCallbackInfo<v8::Value>& info) { |
67 gin::Arguments args(info); | 67 gin::Arguments args(info); |
68 | 68 |
69 mojo::Handle handle_0 = mojo::kInvalidHandle; | 69 mojo::Handle handle_0 = mojo::kInvalidHandle; |
70 mojo::Handle handle_1 = mojo::kInvalidHandle; | 70 mojo::Handle handle_1 = mojo::kInvalidHandle; |
71 MojoResult result = mojo::CreateMessagePipe(&handle_0, &handle_1); | 71 MojoResult result = mojo::CreateMessagePipe(&handle_0, &handle_1); |
72 | 72 |
73 gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(info.GetIsolate()); | 73 gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(info.GetIsolate()); |
(...skipping 11 matching lines...) Expand all Loading... |
85 std::vector<mojo::Handle> handles; | 85 std::vector<mojo::Handle> handles; |
86 MojoWriteMessageFlags flags = MOJO_WRITE_MESSAGE_FLAG_NONE; | 86 MojoWriteMessageFlags flags = MOJO_WRITE_MESSAGE_FLAG_NONE; |
87 | 87 |
88 if (!args.GetNext(&handle) || | 88 if (!args.GetNext(&handle) || |
89 !args.GetNext(&buffer) || | 89 !args.GetNext(&buffer) || |
90 !args.GetNext(&handles) || | 90 !args.GetNext(&handles) || |
91 !args.GetNext(&flags)) { | 91 !args.GetNext(&flags)) { |
92 return args.ThrowError(); | 92 return args.ThrowError(); |
93 } | 93 } |
94 | 94 |
95 args.Return(mojo::WriteMessage(handle, buffer.bytes(), buffer.num_bytes(), | 95 args.Return(mojo::WriteMessage(handle, buffer.bytes(), |
96 handles.data(), handles.size(), flags)); | 96 static_cast<uint32_t>(buffer.num_bytes()), |
| 97 handles.data(), |
| 98 static_cast<uint32_t>(handles.size()), |
| 99 flags)); |
97 } | 100 } |
98 | 101 |
99 void ReadMessage(const v8::FunctionCallbackInfo<v8::Value>& info) { | 102 void ReadMessage(const v8::FunctionCallbackInfo<v8::Value>& info) { |
100 gin::Arguments args(info); | 103 gin::Arguments args(info); |
101 | 104 |
102 mojo::Handle handle = mojo::kInvalidHandle; | 105 mojo::Handle handle = mojo::kInvalidHandle; |
103 gin::ArrayBufferView buffer(args.isolate()); | 106 gin::ArrayBufferView buffer(args.isolate()); |
104 uint32_t num_handles = 0; | 107 uint32_t num_handles = 0; |
105 MojoReadMessageFlags flags = MOJO_READ_MESSAGE_FLAG_NONE; | 108 MojoReadMessageFlags flags = MOJO_READ_MESSAGE_FLAG_NONE; |
106 | 109 |
107 if (!args.GetNext(&handle) || | 110 if (!args.GetNext(&handle) || |
108 !args.GetNext(&buffer) || | 111 !args.GetNext(&buffer) || |
109 !args.GetNext(&num_handles) || | 112 !args.GetNext(&num_handles) || |
110 !args.GetNext(&flags)) { | 113 !args.GetNext(&flags)) { |
111 return args.ThrowError(); | 114 return args.ThrowError(); |
112 } | 115 } |
113 | 116 |
114 uint32_t num_bytes = buffer.num_bytes(); | 117 uint32_t num_bytes = static_cast<uint32_t>(buffer.num_bytes()); |
115 std::vector<mojo::Handle> handles(num_handles); | 118 std::vector<mojo::Handle> handles(num_handles); |
116 MojoResult result = mojo::ReadMessage(handle, buffer.bytes(), &num_bytes, | 119 MojoResult result = mojo::ReadMessage(handle, buffer.bytes(), &num_bytes, |
117 handles.data(), &num_handles, flags); | 120 handles.data(), &num_handles, flags); |
118 handles.resize(num_handles); | 121 handles.resize(num_handles); |
119 | 122 |
120 // TODO(abarth): We should benchmark this codepath to make sure it's ok to | 123 // TODO(abarth): We should benchmark this codepath to make sure it's ok to |
121 // allocate all this memory on each read. | 124 // allocate all this memory on each read. |
122 gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(info.GetIsolate()); | 125 gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(info.GetIsolate()); |
123 dictionary.Set("result", result); | 126 dictionary.Set("result", result); |
124 dictionary.Set("bytesRead", num_bytes); | 127 dictionary.Set("bytesRead", num_bytes); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 gin::ConvertToV8(isolate, MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); | 208 gin::ConvertToV8(isolate, MOJO_READ_MESSAGE_FLAG_MAY_DISCARD)); |
206 | 209 |
207 data->SetObjectTemplate(&g_core_wrapper_info, templ); | 210 data->SetObjectTemplate(&g_core_wrapper_info, templ); |
208 } | 211 } |
209 | 212 |
210 return templ; | 213 return templ; |
211 } | 214 } |
212 | 215 |
213 } // namespace js | 216 } // namespace js |
214 } // namespace mojo | 217 } // namespace mojo |
OLD | NEW |