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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 | 28 |
29 namespace { | 29 namespace { |
30 | 30 |
31 MojoResult CloseHandle(gin::Handle<HandleWrapper> handle) { | 31 MojoResult CloseHandle(gin::Handle<HandleWrapper> handle) { |
32 if (!handle->get().is_valid()) | 32 if (!handle->get().is_valid()) |
33 return MOJO_RESULT_INVALID_ARGUMENT; | 33 return MOJO_RESULT_INVALID_ARGUMENT; |
34 handle->Close(); | 34 handle->Close(); |
35 return MOJO_RESULT_OK; | 35 return MOJO_RESULT_OK; |
36 } | 36 } |
37 | 37 |
| 38 gin::Dictionary QueryHandleSignalsState(const gin::Arguments& args, |
| 39 mojo::Handle handle) { |
| 40 gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(args.isolate()); |
| 41 if (!handle.is_valid()) { |
| 42 dictionary.Set("result", MOJO_RESULT_INVALID_ARGUMENT); |
| 43 } else { |
| 44 HandleSignalsState state = handle.QuerySignalsState(); |
| 45 dictionary.Set("result", MOJO_RESULT_OK); |
| 46 dictionary.Set("satisfiedSignals", state.satisfied_signals); |
| 47 dictionary.Set("satisfiableSignals", state.satisfiable_signals); |
| 48 } |
| 49 return dictionary; |
| 50 } |
| 51 |
38 gin::Dictionary WaitHandle(const gin::Arguments& args, | 52 gin::Dictionary WaitHandle(const gin::Arguments& args, |
39 mojo::Handle handle, | 53 mojo::Handle handle, |
40 MojoHandleSignals signals, | 54 MojoHandleSignals signals, |
41 MojoDeadline deadline) { | 55 MojoDeadline deadline) { |
42 v8::Isolate* isolate = args.isolate(); | 56 v8::Isolate* isolate = args.isolate(); |
43 gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(isolate); | 57 gin::Dictionary dictionary = gin::Dictionary::CreateEmpty(isolate); |
44 | 58 |
45 MojoHandleSignalsState signals_state; | 59 MojoHandleSignalsState signals_state; |
46 MojoResult result = mojo::Wait(handle, signals, deadline, &signals_state); | 60 MojoResult result = mojo::Wait(handle, signals, deadline, &signals_state); |
47 dictionary.Set("result", result); | 61 dictionary.Set("result", result); |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 gin::PerIsolateData* data = gin::PerIsolateData::From(isolate); | 395 gin::PerIsolateData* data = gin::PerIsolateData::From(isolate); |
382 v8::Local<v8::ObjectTemplate> templ = data->GetObjectTemplate( | 396 v8::Local<v8::ObjectTemplate> templ = data->GetObjectTemplate( |
383 &g_wrapper_info); | 397 &g_wrapper_info); |
384 | 398 |
385 if (templ.IsEmpty()) { | 399 if (templ.IsEmpty()) { |
386 templ = | 400 templ = |
387 gin::ObjectTemplateBuilder(isolate) | 401 gin::ObjectTemplateBuilder(isolate) |
388 // TODO(mpcomplete): Should these just be methods on the JS Handle | 402 // TODO(mpcomplete): Should these just be methods on the JS Handle |
389 // object? | 403 // object? |
390 .SetMethod("close", CloseHandle) | 404 .SetMethod("close", CloseHandle) |
| 405 .SetMethod("queryHandleSignalsState", QueryHandleSignalsState) |
391 .SetMethod("wait", WaitHandle) | 406 .SetMethod("wait", WaitHandle) |
392 .SetMethod("waitMany", WaitMany) | 407 .SetMethod("waitMany", WaitMany) |
393 .SetMethod("createMessagePipe", CreateMessagePipe) | 408 .SetMethod("createMessagePipe", CreateMessagePipe) |
394 .SetMethod("writeMessage", WriteMessage) | 409 .SetMethod("writeMessage", WriteMessage) |
395 .SetMethod("readMessage", ReadMessage) | 410 .SetMethod("readMessage", ReadMessage) |
396 .SetMethod("createDataPipe", CreateDataPipe) | 411 .SetMethod("createDataPipe", CreateDataPipe) |
397 .SetMethod("writeData", WriteData) | 412 .SetMethod("writeData", WriteData) |
398 .SetMethod("readData", ReadData) | 413 .SetMethod("readData", ReadData) |
399 .SetMethod("drainData", DoDrainData) | 414 .SetMethod("drainData", DoDrainData) |
400 .SetMethod("isHandle", IsHandle) | 415 .SetMethod("isHandle", IsHandle) |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 | 483 |
469 data->SetObjectTemplate(&g_wrapper_info, templ); | 484 data->SetObjectTemplate(&g_wrapper_info, templ); |
470 } | 485 } |
471 | 486 |
472 return templ->NewInstance(); | 487 return templ->NewInstance(); |
473 } | 488 } |
474 | 489 |
475 } // namespace js | 490 } // namespace js |
476 } // namespace edk | 491 } // namespace edk |
477 } // namespace mojo | 492 } // namespace mojo |
OLD | NEW |