From: Mark Donnelly Date: Wed, 3 Dec 2014 17:28:52 +0000 (-0500) Subject: Handle errors of garbled JSON sent to the native host X-Git-Url: http://www.project-moonshot.org/gitweb/?p=gssweb.git;a=commitdiff_plain;h=3f9648750b03ba5f10297ff02c13bf9cef37f9c6 Handle errors of garbled JSON sent to the native host --- diff --git a/chrome/app/navigator.gss.js b/chrome/app/navigator.gss.js index 4a2e09c..a2ed28c 100644 --- a/chrome/app/navigator.gss.js +++ b/chrome/app/navigator.gss.js @@ -67,7 +67,7 @@ var GSSEap = (function () /* This message is destined for us only if all the following apply: * - The data.method_name is one of the methods implemented by this * object - * - data.return_values exists + * - data.return_values exists or data.error_mssage exists * - data.cookies exists * - One of my callbacks matches the nonce in * data.cookies.navigator_gss_tag @@ -78,7 +78,8 @@ var GSSEap = (function () method = event.data.method; if ( ( -1 == this.implemented_methods.indexOf(method) ) || - ("undefined" == typeof (event.data.return_values)) || + ( ("undefined" == typeof (event.data.return_values) ) && + ("undefined" == typeof (event.data.error_message) ) ) || ("undefined" == typeof (event.data.cookies))) { return; @@ -96,7 +97,11 @@ var GSSEap = (function () app_tag = event.data.cookies.app_tag; error = this.errors[nonce] || this.default_error; - if (this.gss_error(event.data.return_values.major_status)) + if ("undefined" != typeof(event.data.error_message) ) + { + error(-1, -1, "Error parsing message: " + event.data.error_message, app_tag); + } + else if (this.gss_error(event.data.return_values.major_status)) { var errMsg = "Error during " + method + ": " + "Major status message: " +