--- main.js | 79 +++++++++++++++++++++++++++++++++++++-------------------- spice.html | 5 ++++ spice_auto.html | 5 ++++ 3 files changed, 61 insertions(+), 28 deletions(-) diff --git a/main.js b/main.js index 6a04da9..e93536b 100644 --- a/main.js +++ b/main.js @@ -375,36 +375,49 @@ SpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status) return; } xfer_task = this.file_xfer_tasks[file_xfer_status.id]; - switch (file_xfer_status.result) + + if (file_xfer_status.result != VD_AGENT_FILE_XFER_STATUS_SUCCESS) { - case VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA: - this.file_xfer_read(xfer_task); - return; - case VD_AGENT_FILE_XFER_STATUS_CANCELLED: - xfer_error = "transfer is cancelled by spice agent"; - break; - case VD_AGENT_FILE_XFER_STATUS_ERROR: - xfer_error = "some errors occurred in the spice agent"; - break; - case VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE: - xfer_error = "not enough space in the remote system"; - break; - case VD_AGENT_FILE_XFER_STATUS_SESSION_LOCKED: - xfer_error = "remote system is locked"; - break; - case VD_AGENT_FILE_XFER_STATUS_AGENT_NOT_CONNECTED: - xfer_error = "spice angent is not connected"; - break; - case VD_AGENT_FILE_XFER_STATUS_DISABLED: - xfer_error = "file transfer is disabled on the remote system"; - break; - default: - xfer_error = "unhandled status type: " + file_xfer_status.result; - break; - } + switch (file_xfer_status.result) + { + case VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA: + this.file_xfer_read(xfer_task); + return; + case VD_AGENT_FILE_XFER_STATUS_CANCELLED: + xfer_error = "transfer is cancelled by spice agent"; + break; + case VD_AGENT_FILE_XFER_STATUS_ERROR: + xfer_error = "some errors occurred in the spice agent"; + this.file_xfer_detailed_errors(xfer_error); + break; + case VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE: + xfer_error = "not enough space in the remote system"; + this.file_xfer_detailed_errors(xfer_error); + break; + case VD_AGENT_FILE_XFER_STATUS_SESSION_LOCKED: + xfer_error = "remote system is locked"; + this.file_xfer_detailed_errors(xfer_error); + break; + case VD_AGENT_FILE_XFER_STATUS_AGENT_NOT_CONNECTED: + xfer_error = "spice agent is not connected"; + this.file_xfer_detailed_errors(xfer_error); + break; + case VD_AGENT_FILE_XFER_STATUS_DISABLED: + xfer_error = "file transfer is disabled on the remote system"; + this.file_xfer_detailed_errors(xfer_error); + break; + default: + xfer_error = "unhandled status type: " + file_xfer_status.result; + break; + } - xfer_error = "File transfer: " + xfer_error; - this.file_xfer_completed(xfer_task, xfer_error) + xfer_error = "File transfer: " + xfer_error; + this.file_xfer_completed(xfer_task, xfer_error); + } + else + { + this.file_xfer_completed(xfer_task); + } } SpiceMainConn.prototype.file_xfer_read = function(file_xfer_task, start_byte) @@ -504,3 +517,13 @@ SpiceMainConn.prototype.relative_now = function() var ret = (Date.now() - this.our_mm_time) + this.mm_time; return ret; } + +SpiceMainConn.prototype.file_xfer_detailed_errors = function(status) +{ + var event = new CustomEvent('xfer-error', { + detail: { + data: "File transfer: " + status + } + }); + window.dispatchEvent(event); +} diff --git a/spice.html b/spice.html index 3a74e21..1e78e81 100644 --- a/spice.html +++ b/spice.html @@ -173,6 +173,11 @@ }); */ + window.addEventListener('xfer-error', function(event) + { + alert(event.detail.data); + }); + </script> </head> diff --git a/spice_auto.html b/spice_auto.html index 10f5508..92e75f1 100644 --- a/spice_auto.html +++ b/spice_auto.html @@ -196,6 +196,11 @@ }); */ + window.addEventListener('xfer-error', function(event) + { + alert(event.detail.data); + }); + connect(); </script> -- 2.9.5 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel