| Index: pkg/analyzer_plugin/lib/protocol/protocol.dart
|
| diff --git a/pkg/analyzer_plugin/lib/protocol/protocol.dart b/pkg/analyzer_plugin/lib/protocol/protocol.dart
|
| index 4799f654b889c354f0f960c7724e2f7a1fe86304..708b4f20308aa8ad2b5a15dedc1e9d2f9b422363 100644
|
| --- a/pkg/analyzer_plugin/lib/protocol/protocol.dart
|
| +++ b/pkg/analyzer_plugin/lib/protocol/protocol.dart
|
| @@ -340,12 +340,6 @@ class RequestFailure implements Exception {
|
| */
|
| class Response {
|
| /**
|
| - * The [Response] instance that is returned when a real [Response] cannot
|
| - * be provided at the moment.
|
| - */
|
| - static final Response DELAYED_RESPONSE = new Response('DELAYED_RESPONSE');
|
| -
|
| - /**
|
| * The name of the JSON attribute containing the id of the request for which
|
| * this is a response.
|
| */
|
| @@ -357,6 +351,12 @@ class Response {
|
| static const String ERROR = 'error';
|
|
|
| /**
|
| + * The name of the JSON attribute containing the time at which the request was
|
| + * handled by the plugin.
|
| + */
|
| + static const String REQUEST_TIME = 'requestTime';
|
| +
|
| + /**
|
| * The name of the JSON attribute containing the result values.
|
| */
|
| static const String RESULT = 'result';
|
| @@ -374,6 +374,11 @@ class Response {
|
| final RequestError error;
|
|
|
| /**
|
| + * The time at which the request was handled by the plugin.
|
| + */
|
| + final int requestTime;
|
| +
|
| + /**
|
| * A table mapping the names of result fields to their values. Should be
|
| * `null` if there is no result to send.
|
| */
|
| @@ -385,56 +390,35 @@ class Response {
|
| * result; otherwise an empty result will be used. If an [error] is provided
|
| * then the response will represent an error condition.
|
| */
|
| - Response(this.id, {Map<String, Object> result, this.error}) : result = result;
|
| -
|
| -// /**
|
| -// * Initialize a newly created instance to represent the FILE_NOT_ANALYZED
|
| -// * error condition.
|
| -// */
|
| -// Response.fileNotAnalyzed(Request request, String file)
|
| -// : this(request.id,
|
| -// error: new RequestError(RequestErrorCode.FILE_NOT_ANALYZED,
|
| -// 'File is not analyzed: $file.'));
|
| -//
|
| -// /**
|
| -// * Initialize a newly created instance to represent the FORMAT_INVALID_FILE
|
| -// * error condition.
|
| -// */
|
| -// Response.formatInvalidFile(Request request)
|
| -// : this(request.id,
|
| -// error: new RequestError(RequestErrorCode.FORMAT_INVALID_FILE,
|
| -// 'Error during `edit.format`: invalid file.'));
|
| -//
|
| -// /**
|
| -// * Initialize a newly created instance to represent the FORMAT_WITH_ERROR
|
| -// * error condition.
|
| -// */
|
| -// Response.formatWithErrors(Request request)
|
| -// : this(request.id,
|
| -// error: new RequestError(RequestErrorCode.FORMAT_WITH_ERRORS,
|
| -// 'Error during `edit.format`: source contains syntax errors.'));
|
| + Response(this.id, this.requestTime, {this.error, Map<String, Object> result})
|
| + : result = result;
|
|
|
| /**
|
| * Initialize a newly created instance based on the given JSON data.
|
| */
|
| factory Response.fromJson(Map json) {
|
| try {
|
| - Object id = json[Response.ID];
|
| + Object id = json[ID];
|
| if (id is! String) {
|
| return null;
|
| }
|
| - Object error = json[Response.ERROR];
|
| + Object error = json[ERROR];
|
| RequestError decodedError;
|
| if (error is Map) {
|
| decodedError = new RequestError.fromJson(
|
| new ResponseDecoder(null), '.error', error);
|
| }
|
| - Object result = json[Response.RESULT];
|
| + Object requestTime = json[REQUEST_TIME];
|
| + if (requestTime is! int) {
|
| + return null;
|
| + }
|
| + Object result = json[RESULT];
|
| Map<String, Object> decodedResult;
|
| if (result is Map) {
|
| decodedResult = result as Map<String, Object>;
|
| }
|
| - return new Response(id, error: decodedError, result: decodedResult);
|
| + return new Response(id, requestTime,
|
| + error: decodedError, result: decodedResult);
|
| } catch (exception) {
|
| return null;
|
| }
|
| @@ -450,6 +434,7 @@ class Response {
|
| if (error != null) {
|
| jsonObject[ERROR] = error.toJson();
|
| }
|
| + jsonObject[REQUEST_TIME] = requestTime;
|
| if (result != null) {
|
| jsonObject[RESULT] = result;
|
| }
|
|
|