| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1267 response.success = false; | 1267 response.success = false; |
| 1268 response.message = %ToString(e); | 1268 response.message = %ToString(e); |
| 1269 } | 1269 } |
| 1270 | 1270 |
| 1271 // Return the response as a JSON encoded string. | 1271 // Return the response as a JSON encoded string. |
| 1272 try { | 1272 try { |
| 1273 if (!IS_UNDEFINED(response.running)) { | 1273 if (!IS_UNDEFINED(response.running)) { |
| 1274 // Response controls running state. | 1274 // Response controls running state. |
| 1275 this.running_ = response.running; | 1275 this.running_ = response.running; |
| 1276 } | 1276 } |
| 1277 response.running = this.running_; | 1277 response.running = this.running_; |
| 1278 return response.toJSONProtocol(); | 1278 return response.toJSONProtocol(); |
| 1279 } catch (e) { | 1279 } catch (e) { |
| 1280 // Failed to generate response - return generic error. | 1280 // Failed to generate response - return generic error. |
| 1281 return '{"seq":' + response.seq + ',' + | 1281 return '{"seq":' + response.seq + ',' + |
| 1282 '"request_seq":' + request.seq + ',' + | 1282 '"request_seq":' + request.seq + ',' + |
| 1283 '"type":"response",' + | 1283 '"type":"response",' + |
| 1284 '"success":false,' + | 1284 '"success":false,' + |
| 1285 '"message":"Internal error: ' + %ToString(e) + '"}'; | 1285 '"message":"Internal error: ' + %ToString(e) + '"}'; |
| 1286 } | 1286 } |
| 1287 } catch (e) { | 1287 } catch (e) { |
| (...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1863 var includeSource = false; | 1863 var includeSource = false; |
| 1864 var idsToInclude = null; | 1864 var idsToInclude = null; |
| 1865 if (request.arguments) { | 1865 if (request.arguments) { |
| 1866 // Pull out arguments. | 1866 // Pull out arguments. |
| 1867 if (!IS_UNDEFINED(request.arguments.types)) { | 1867 if (!IS_UNDEFINED(request.arguments.types)) { |
| 1868 types = %ToNumber(request.arguments.types); | 1868 types = %ToNumber(request.arguments.types); |
| 1869 if (isNaN(types) || types < 0) { | 1869 if (isNaN(types) || types < 0) { |
| 1870 return response.failed('Invalid types "' + request.arguments.types + '"'
); | 1870 return response.failed('Invalid types "' + request.arguments.types + '"'
); |
| 1871 } | 1871 } |
| 1872 } | 1872 } |
| 1873 | 1873 |
| 1874 if (!IS_UNDEFINED(request.arguments.includeSource)) { | 1874 if (!IS_UNDEFINED(request.arguments.includeSource)) { |
| 1875 includeSource = %ToBoolean(request.arguments.includeSource); | 1875 includeSource = %ToBoolean(request.arguments.includeSource); |
| 1876 response.setOption('includeSource', includeSource); | 1876 response.setOption('includeSource', includeSource); |
| 1877 } | 1877 } |
| 1878 | 1878 |
| 1879 if (IS_ARRAY(request.arguments.ids)) { | 1879 if (IS_ARRAY(request.arguments.ids)) { |
| 1880 idsToInclude = {}; | 1880 idsToInclude = {}; |
| 1881 var ids = request.arguments.ids; | 1881 var ids = request.arguments.ids; |
| 1882 for (var i = 0; i < ids.length; i++) { | 1882 for (var i = 0; i < ids.length; i++) { |
| 1883 idsToInclude[ids[i]] = true; | 1883 idsToInclude[ids[i]] = true; |
| 1884 } | 1884 } |
| 1885 } | 1885 } |
| 1886 } | 1886 } |
| 1887 | 1887 |
| 1888 // Collect all scripts in the heap. | 1888 // Collect all scripts in the heap. |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1966 return response.failed('Missing arguments'); | 1966 return response.failed('Missing arguments'); |
| 1967 } | 1967 } |
| 1968 var script_id = request.arguments.script_id; | 1968 var script_id = request.arguments.script_id; |
| 1969 var change_pos = parseInt(request.arguments.change_pos); | 1969 var change_pos = parseInt(request.arguments.change_pos); |
| 1970 var change_len = parseInt(request.arguments.change_len); | 1970 var change_len = parseInt(request.arguments.change_len); |
| 1971 var new_string = request.arguments.new_string; | 1971 var new_string = request.arguments.new_string; |
| 1972 if (!IS_STRING(new_string)) { | 1972 if (!IS_STRING(new_string)) { |
| 1973 response.failed('Argument "new_string" is not a string value'); | 1973 response.failed('Argument "new_string" is not a string value'); |
| 1974 return; | 1974 return; |
| 1975 } | 1975 } |
| 1976 | 1976 |
| 1977 var scripts = %DebugGetLoadedScripts(); | 1977 var scripts = %DebugGetLoadedScripts(); |
| 1978 | 1978 |
| 1979 var the_script = null; | 1979 var the_script = null; |
| 1980 for (var i = 0; i < scripts.length; i++) { | 1980 for (var i = 0; i < scripts.length; i++) { |
| 1981 if (scripts[i].id == script_id) { | 1981 if (scripts[i].id == script_id) { |
| 1982 the_script = scripts[i]; | 1982 the_script = scripts[i]; |
| 1983 } | 1983 } |
| 1984 } | 1984 } |
| 1985 if (!the_script) { | 1985 if (!the_script) { |
| 1986 response.failed('Script not found'); | 1986 response.failed('Script not found'); |
| 1987 return; | 1987 return; |
| 1988 } | 1988 } |
| 1989 | 1989 |
| 1990 var change_log = new Array(); | 1990 var change_log = new Array(); |
| 1991 try { | 1991 try { |
| 1992 Debug.LiveEditChangeScript(the_script, change_pos, change_len, new_string, | 1992 Debug.LiveEditChangeScript(the_script, change_pos, change_len, new_string, |
| 1993 change_log); | 1993 change_log); |
| 1994 } catch (e) { | 1994 } catch (e) { |
| 1995 if (e instanceof Debug.LiveEditChangeScript.Failure) { | 1995 if (e instanceof Debug.LiveEditChangeScript.Failure) { |
| 1996 // Let's treat it as a "success" so that body with change_log will be | 1996 // Let's treat it as a "success" so that body with change_log will be |
| 1997 // sent back. "change_log" will have "failure" field set. | 1997 // sent back. "change_log" will have "failure" field set. |
| 1998 change_log.push( { failure: true } ); | 1998 change_log.push( { failure: true } ); |
| 1999 } else { | 1999 } else { |
| 2000 throw e; | 2000 throw e; |
| 2001 } | 2001 } |
| 2002 } | 2002 } |
| 2003 response.body = {change_log: change_log}; | 2003 response.body = {change_log: change_log}; |
| 2004 }; | 2004 }; |
| 2005 | 2005 |
| 2006 | 2006 |
| 2007 // Check whether the previously processed command caused the VM to become | 2007 // Check whether the previously processed command caused the VM to become |
| 2008 // running. | 2008 // running. |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2069 if (typeof key == 'string') { | 2069 if (typeof key == 'string') { |
| 2070 // Format the value based on its type. | 2070 // Format the value based on its type. |
| 2071 var property_value_json = ValueToProtocolValue_(object[key], | 2071 var property_value_json = ValueToProtocolValue_(object[key], |
| 2072 mirror_serializer); | 2072 mirror_serializer); |
| 2073 // Add the property if relevant. | 2073 // Add the property if relevant. |
| 2074 if (!IS_UNDEFINED(property_value_json)) { | 2074 if (!IS_UNDEFINED(property_value_json)) { |
| 2075 content[key] = property_value_json; | 2075 content[key] = property_value_json; |
| 2076 } | 2076 } |
| 2077 } | 2077 } |
| 2078 } | 2078 } |
| 2079 | 2079 |
| 2080 return content; | 2080 return content; |
| 2081 } | 2081 } |
| 2082 | 2082 |
| 2083 | 2083 |
| 2084 /** | 2084 /** |
| 2085 * Convert an array to its debugger protocol representation. It will convert | 2085 * Convert an array to its debugger protocol representation. It will convert |
| 2086 * each array element to a protocol value. | 2086 * each array element to a protocol value. |
| 2087 * @param {Array} array The array to format as protocol array. | 2087 * @param {Array} array The array to format as protocol array. |
| 2088 * @param {MirrorSerializer} mirror_serializer The serializer to use if any | 2088 * @param {MirrorSerializer} mirror_serializer The serializer to use if any |
| 2089 * mirror objects are encountered. | 2089 * mirror objects are encountered. |
| 2090 * @return {Array} Protocol array value. | 2090 * @return {Array} Protocol array value. |
| 2091 */ | 2091 */ |
| 2092 function ArrayToProtocolArray_(array, mirror_serializer) { | 2092 function ArrayToProtocolArray_(array, mirror_serializer) { |
| 2093 var json = []; | 2093 var json = []; |
| 2094 for (var i = 0; i < array.length; i++) { | 2094 for (var i = 0; i < array.length; i++) { |
| 2095 json.push(ValueToProtocolValue_(array[i], mirror_serializer)); | 2095 json.push(ValueToProtocolValue_(array[i], mirror_serializer)); |
| 2096 } | 2096 } |
| 2097 return json; | 2097 return json; |
| 2098 } | 2098 } |
| 2099 | 2099 |
| 2100 | 2100 |
| 2101 /** | 2101 /** |
| 2102 * Convert a value to its debugger protocol representation. | 2102 * Convert a value to its debugger protocol representation. |
| 2103 * @param {*} value The value to format as protocol value. | 2103 * @param {*} value The value to format as protocol value. |
| 2104 * @param {MirrorSerializer} mirror_serializer The serializer to use if any | 2104 * @param {MirrorSerializer} mirror_serializer The serializer to use if any |
| 2105 * mirror objects are encountered. | 2105 * mirror objects are encountered. |
| 2106 * @return {*} Protocol value. | 2106 * @return {*} Protocol value. |
| 2107 */ | 2107 */ |
| 2108 function ValueToProtocolValue_(value, mirror_serializer) { | 2108 function ValueToProtocolValue_(value, mirror_serializer) { |
| 2109 // Format the value based on its type. | 2109 // Format the value based on its type. |
| 2110 var json; | 2110 var json; |
| 2111 switch (typeof value) { | 2111 switch (typeof value) { |
| 2112 case 'object': | 2112 case 'object': |
| (...skipping 10 matching lines...) Expand all Loading... |
| 2123 case 'string': | 2123 case 'string': |
| 2124 case 'number': | 2124 case 'number': |
| 2125 json = value; | 2125 json = value; |
| 2126 break | 2126 break |
| 2127 | 2127 |
| 2128 default: | 2128 default: |
| 2129 json = null; | 2129 json = null; |
| 2130 } | 2130 } |
| 2131 return json; | 2131 return json; |
| 2132 } | 2132 } |
| OLD | NEW |