| Index: native_client_sdk/src/libraries/nacl_io/devfs/jspipe_event_emitter.cc
|
| diff --git a/native_client_sdk/src/libraries/nacl_io/devfs/jspipe_event_emitter.cc b/native_client_sdk/src/libraries/nacl_io/devfs/jspipe_event_emitter.cc
|
| index a00dbfdf939662f5ec44c9ffae52139d7e9a355f..8bf4d037f517d9093607f3b6c688541cc03a0d3f 100644
|
| --- a/native_client_sdk/src/libraries/nacl_io/devfs/jspipe_event_emitter.cc
|
| +++ b/native_client_sdk/src/libraries/nacl_io/devfs/jspipe_event_emitter.cc
|
| @@ -112,8 +112,12 @@ Error JSPipeEventEmitter::Read_Locked(char* data, size_t len, int* out_bytes) {
|
|
|
| Error JSPipeEventEmitter::SendWriteMessage(const void* buf, size_t count) {
|
| TRACE("SendWriteMessage [%" PRIuS "] total=%" PRIuS, count, bytes_sent_);
|
| - if (!var_iface_ || !buffer_iface_)
|
| + if (!var_iface_ || !buffer_iface_) {
|
| + ERROR("Got NULL interface(s): %s%s",
|
| + var_iface_ ? "" : "Var ",
|
| + buffer_iface_ ? "" : "ArrayBuffer");
|
| return EIO;
|
| + }
|
|
|
| // Copy payload data in a new ArrayBuffer
|
| PP_Var buffer = buffer_iface_->Create(count);
|
| @@ -126,16 +130,23 @@ Error JSPipeEventEmitter::SendWriteMessage(const void* buf, size_t count) {
|
| }
|
|
|
| Error JSPipeEventEmitter::SetName(const char* name) {
|
| - if (var_iface_ == NULL)
|
| + if (var_iface_ == NULL) {
|
| + // No error here: many of the tests trigger this message.
|
| + LOG_TRACE("Got NULL interface: Var");
|
| return EIO;
|
| + }
|
|
|
| // name can only be set once
|
| - if (!name_.empty())
|
| + if (!name_.empty()) {
|
| + LOG_ERROR("Attempting to set name more than once.");
|
| return EIO;
|
| + }
|
|
|
| // new name must not be empty
|
| - if (!name || strlen(name) == 0)
|
| + if (!name || strlen(name) == 0) {
|
| + LOG_ERROR("Empty name is invalid.");
|
| return EIO;
|
| + }
|
|
|
| TRACE("set name: %s", name);
|
| name_ = name;
|
| @@ -144,8 +155,18 @@ Error JSPipeEventEmitter::SetName(const char* name) {
|
| }
|
|
|
| Error JSPipeEventEmitter::SendMessageToJS(PP_Var operation, PP_Var payload) {
|
| - if (!ppapi_ || !messaging_iface_ || !var_iface_ || !dict_iface_)
|
| + if (!ppapi_) {
|
| + LOG_ERROR("ppapi_ is NULL.");
|
| return EIO;
|
| + }
|
| +
|
| + if (!messaging_iface_ || !var_iface_ || !dict_iface_) {
|
| + LOG_ERROR("Got NULL interface(s): %s%s%s",
|
| + messaging_iface_ ? "" : "Messaging ",
|
| + dict_iface_ ? "" : "Dictionary ",
|
| + var_iface_ ? "" : "Var");
|
| + return EIO;
|
| + }
|
|
|
| // Create dict object which will be sent to JavaScript.
|
| PP_Var dict = dict_iface_->Create();
|
| @@ -180,7 +201,7 @@ size_t JSPipeEventEmitter::HandleJSWrite(const char* data, size_t len) {
|
|
|
| void JSPipeEventEmitter::HandleJSAck(size_t byte_count) {
|
| if (byte_count > bytes_sent_) {
|
| - ERROR("HandleAck unexpected byte count: %" PRIuS, byte_count);
|
| + ERROR("Unexpected byte count: %" PRIuS, byte_count);
|
| return;
|
| }
|
|
|
| @@ -192,12 +213,14 @@ void JSPipeEventEmitter::HandleJSAck(size_t byte_count) {
|
| Error JSPipeEventEmitter::HandleJSWrite(struct PP_Var message) {
|
| TRACE("HandleJSWrite");
|
| if (message.type != PP_VARTYPE_ARRAY_BUFFER) {
|
| - TRACE("HandleJSWrite expected ArrayBuffer but got %d.", message.type);
|
| + ERROR("Expected ArrayBuffer but got %d.", message.type);
|
| return EINVAL;
|
| }
|
| uint32_t length;
|
| - if (buffer_iface_->ByteLength(message, &length) != PP_TRUE)
|
| + if (buffer_iface_->ByteLength(message, &length) != PP_TRUE) {
|
| + ERROR("ArrayBuffer.ByteLength returned PP_FALSE");
|
| return EINVAL;
|
| + }
|
|
|
| char* buffer = (char*)buffer_iface_->Map(message);
|
|
|
| @@ -205,7 +228,7 @@ Error JSPipeEventEmitter::HandleJSWrite(struct PP_Var message) {
|
| size_t wrote = HandleJSWrite(buffer, length);
|
| buffer_iface_->Unmap(message);
|
| if (wrote != length) {
|
| - LOG_ERROR("Only wrote %d of %d bytes to pipe", (int)wrote, (int)length);
|
| + ERROR("Only wrote %d of %d bytes to pipe", (int)wrote, (int)length);
|
| return EIO;
|
| }
|
| TRACE("done HandleWrite: %d", length);
|
| @@ -214,7 +237,7 @@ Error JSPipeEventEmitter::HandleJSWrite(struct PP_Var message) {
|
|
|
| Error JSPipeEventEmitter::HandleJSAck(PP_Var message) {
|
| if (message.type != PP_VARTYPE_INT32) {
|
| - TRACE("HandleAck integer object expected but got %d.", message.type);
|
| + ERROR("Integer object expected but got %d.", message.type);
|
| return EINVAL;
|
| }
|
| HandleJSAck(message.value.as_int);
|
| @@ -234,20 +257,24 @@ int JSPipeEventEmitter::VarStrcmp(PP_Var a, PP_Var b) {
|
| Error JSPipeEventEmitter::HandleJSMessage(struct PP_Var message) {
|
| Error err = 0;
|
| if (!messaging_iface_ || !var_iface_ || !dict_iface_ || !buffer_iface_) {
|
| - TRACE("HandleJSMessage: missing PPAPI interfaces");
|
| + ERROR("Got NULL interface(s): %s%s%s%s",
|
| + messaging_iface_ ? "" : "Messaging ",
|
| + var_iface_ ? "" : "Var ",
|
| + dict_iface_ ? "" : "Dictionary ",
|
| + buffer_iface_ ? "" : "ArrayBuffer");
|
| return ENOSYS;
|
| }
|
|
|
| // Verify that we have an array with size two.
|
| if (message.type != PP_VARTYPE_DICTIONARY) {
|
| - TRACE("HandleJSMessage passed non-dictionary var");
|
| + ERROR("Expected Dictionary but got %d.", message.type);
|
| return EINVAL;
|
| }
|
|
|
| #ifndef NDEBUG
|
| PP_Var pipe_name_var = dict_iface_->Get(message, pipe_key_);
|
| if (VarStrcmp(pipe_name_var, pipe_name_var_)) {
|
| - TRACE("HandleJSMessage wrong pipe name");
|
| + ERROR("Wrong pipe name.");
|
| return EINVAL;
|
| }
|
| var_iface_->Release(pipe_name_var);
|
| @@ -255,7 +282,7 @@ Error JSPipeEventEmitter::HandleJSMessage(struct PP_Var message) {
|
|
|
| PP_Var operation_var = dict_iface_->Get(message, operation_key_);
|
| if (operation_var.type != PP_VARTYPE_STRING) {
|
| - TRACE("HandleJSMessage invalid operation");
|
| + ERROR("Expected String but got %d.", operation_var.type);
|
| err = EINVAL;
|
| } else {
|
| uint32_t length;
|
| @@ -270,7 +297,7 @@ Error JSPipeEventEmitter::HandleJSMessage(struct PP_Var message) {
|
| } else if (message_type == kOperationNameAck) {
|
| err = HandleJSAck(payload);
|
| } else {
|
| - TRACE("Unknown message type: %s", message_type.c_str());
|
| + ERROR("Unknown message type: %s", message_type.c_str());
|
| err = EINVAL;
|
| }
|
| var_iface_->Release(payload);
|
|
|