OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/edk/js/core.h" | 5 #include "mojo/edk/js/core.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "gin/arguments.h" | 9 #include "gin/arguments.h" |
10 #include "gin/array_buffer.h" | 10 #include "gin/array_buffer.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 | 50 |
51 MojoHandle handle0 = MOJO_HANDLE_INVALID; | 51 MojoHandle handle0 = MOJO_HANDLE_INVALID; |
52 MojoHandle handle1 = MOJO_HANDLE_INVALID; | 52 MojoHandle handle1 = MOJO_HANDLE_INVALID; |
53 MojoResult result = MOJO_RESULT_OK; | 53 MojoResult result = MOJO_RESULT_OK; |
54 | 54 |
55 v8::Handle<v8::Value> options_value = args.PeekNext(); | 55 v8::Handle<v8::Value> options_value = args.PeekNext(); |
56 if (options_value.IsEmpty() || options_value->IsNull() || | 56 if (options_value.IsEmpty() || options_value->IsNull() || |
57 options_value->IsUndefined()) { | 57 options_value->IsUndefined()) { |
58 result = MojoCreateMessagePipe(NULL, &handle0, &handle1); | 58 result = MojoCreateMessagePipe(NULL, &handle0, &handle1); |
59 } else if (options_value->IsObject()) { | 59 } else if (options_value->IsObject()) { |
60 gin::Dictionary options_dict(args.isolate(), options_value->ToObject()); | 60 gin::Dictionary options_dict(args.isolate(), |
| 61 options_value->ToObject(args.isolate())); |
61 MojoCreateMessagePipeOptions options; | 62 MojoCreateMessagePipeOptions options; |
62 // For future struct_size, we can probably infer that from the presence of | 63 // For future struct_size, we can probably infer that from the presence of |
63 // properties in options_dict. For now, it's always 8. | 64 // properties in options_dict. For now, it's always 8. |
64 options.struct_size = 8; | 65 options.struct_size = 8; |
65 // Ideally these would be optional. But the interface makes it hard to | 66 // Ideally these would be optional. But the interface makes it hard to |
66 // typecheck them then. | 67 // typecheck them then. |
67 if (!options_dict.Get("flags", &options.flags)) { | 68 if (!options_dict.Get("flags", &options.flags)) { |
68 return dictionary; | 69 return dictionary; |
69 } | 70 } |
70 | 71 |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 | 150 |
150 MojoHandle producer_handle = MOJO_HANDLE_INVALID; | 151 MojoHandle producer_handle = MOJO_HANDLE_INVALID; |
151 MojoHandle consumer_handle = MOJO_HANDLE_INVALID; | 152 MojoHandle consumer_handle = MOJO_HANDLE_INVALID; |
152 MojoResult result = MOJO_RESULT_OK; | 153 MojoResult result = MOJO_RESULT_OK; |
153 | 154 |
154 v8::Handle<v8::Value> options_value = args.PeekNext(); | 155 v8::Handle<v8::Value> options_value = args.PeekNext(); |
155 if (options_value.IsEmpty() || options_value->IsNull() || | 156 if (options_value.IsEmpty() || options_value->IsNull() || |
156 options_value->IsUndefined()) { | 157 options_value->IsUndefined()) { |
157 result = MojoCreateDataPipe(NULL, &producer_handle, &consumer_handle); | 158 result = MojoCreateDataPipe(NULL, &producer_handle, &consumer_handle); |
158 } else if (options_value->IsObject()) { | 159 } else if (options_value->IsObject()) { |
159 gin::Dictionary options_dict(args.isolate(), options_value->ToObject()); | 160 gin::Dictionary options_dict(args.isolate(), |
| 161 options_value->ToObject(args.isolate())); |
160 MojoCreateDataPipeOptions options; | 162 MojoCreateDataPipeOptions options; |
161 // For future struct_size, we can probably infer that from the presence of | 163 // For future struct_size, we can probably infer that from the presence of |
162 // properties in options_dict. For now, it's always 16. | 164 // properties in options_dict. For now, it's always 16. |
163 options.struct_size = 16; | 165 options.struct_size = 16; |
164 // Ideally these would be optional. But the interface makes it hard to | 166 // Ideally these would be optional. But the interface makes it hard to |
165 // typecheck them then. | 167 // typecheck them then. |
166 if (!options_dict.Get("flags", &options.flags) || | 168 if (!options_dict.Get("flags", &options.flags) || |
167 !options_dict.Get("elementNumBytes", &options.element_num_bytes) || | 169 !options_dict.Get("elementNumBytes", &options.element_num_bytes) || |
168 !options_dict.Get("capacityNumBytes", &options.capacity_num_bytes)) { | 170 !options_dict.Get("capacityNumBytes", &options.capacity_num_bytes)) { |
169 return dictionary; | 171 return dictionary; |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 .Build(); | 318 .Build(); |
317 | 319 |
318 data->SetObjectTemplate(&g_wrapper_info, templ); | 320 data->SetObjectTemplate(&g_wrapper_info, templ); |
319 } | 321 } |
320 | 322 |
321 return templ->NewInstance(); | 323 return templ->NewInstance(); |
322 } | 324 } |
323 | 325 |
324 } // namespace js | 326 } // namespace js |
325 } // namespace mojo | 327 } // namespace mojo |
OLD | NEW |