 Chromium Code Reviews
 Chromium Code Reviews Issue 2469453002:
  Send highlight and navigation notifications on result.  (Closed)
    
  
    Issue 2469453002:
  Send highlight and navigation notifications on result.  (Closed) 
  | Index: pkg/analysis_server/lib/src/analysis_server.dart | 
| diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart | 
| index b0396660bf83358c429080a8866a95657549466e..d43a6318dee6e2b99021c5a53235914d38357bfe 100644 | 
| --- a/pkg/analysis_server/lib/src/analysis_server.dart | 
| +++ b/pkg/analysis_server/lib/src/analysis_server.dart | 
| @@ -16,6 +16,8 @@ import 'package:analysis_server/src/analysis_logger.dart'; | 
| import 'package:analysis_server/src/channel/channel.dart'; | 
| import 'package:analysis_server/src/computer/new_notifications.dart'; | 
| import 'package:analysis_server/src/context_manager.dart'; | 
| +import 'package:analysis_server/src/domains/analysis/navigation.dart'; | 
| +import 'package:analysis_server/src/domains/analysis/navigation_dart.dart'; | 
| import 'package:analysis_server/src/operation/operation.dart'; | 
| import 'package:analysis_server/src/operation/operation_analysis.dart'; | 
| import 'package:analysis_server/src/operation/operation_queue.dart'; | 
| @@ -1103,6 +1105,7 @@ class AnalysisServer { | 
| void setAnalysisSubscriptions( | 
| Map<AnalysisService, Set<String>> subscriptions) { | 
| if (options.enableNewAnalysisDriver) { | 
| + this.analysisServices = subscriptions; | 
| // TODO(scheglov) implement for the new analysis driver | 
| 
Brian Wilkerson
2016/10/31 17:56:00
Is there still more to do, or should the TODO be r
 
scheglov
2016/10/31 18:05:29
Done.
 | 
| return; | 
| } | 
| @@ -1541,6 +1544,10 @@ class AnalysisServer { | 
| }); | 
| } | 
| + bool _hasAnalysisServiceSubscription(AnalysisService service, String file) { | 
| + return analysisServices[service]?.contains(file) ?? false; | 
| + } | 
| + | 
| _scheduleAnalysisImplementedNotification() async { | 
| Set<String> files = analysisServices[AnalysisService.IMPLEMENTED]; | 
| if (files != null) { | 
| @@ -1691,27 +1698,27 @@ class ServerContextManagerCallbacks extends ContextManagerCallbacks { | 
| }); | 
| analysisDriver.results.listen((result) { | 
| new_sendErrorNotification(analysisServer, result); | 
| + CompilationUnit unit = result.unit; | 
| + if (unit != null) { | 
| + if (analysisServer._hasAnalysisServiceSubscription( | 
| + AnalysisService.HIGHLIGHTS, result.path)) { | 
| + sendAnalysisNotificationHighlights(analysisServer, result.path, unit); | 
| + } | 
| + if (analysisServer._hasAnalysisServiceSubscription( | 
| + AnalysisService.NAVIGATION, result.path)) { | 
| + NavigationCollectorImpl collector = new NavigationCollectorImpl(); | 
| + computeSimpleDartNavigation(collector, unit); | 
| + collector.createRegions(); | 
| + var params = new AnalysisNavigationParams(result.path, | 
| + collector.regions, collector.targets, collector.files); | 
| + analysisServer.sendNotification(params.toNotification()); | 
| + } | 
| + } | 
| // TODO(scheglov) Implement more notifications. | 
| - // HIGHLIGHTS | 
| // IMPLEMENTED | 
| - // NAVIGATION | 
| // OVERRIDES | 
| // OCCURRENCES (not used in IDEA) | 
| // OUTLINE (not used in IDEA) | 
| -// { | 
| -// var unit = result.unit; | 
| -// if (unit != null) { | 
| -// print('[results][${analysisDriver.name}] ${result.path}'); | 
| -// sendAnalysisNotificationHighlights(analysisServer, result.path, unit); | 
| -// { | 
| -// NavigationCollectorImpl collector = | 
| -// computeSimpleDartNavigation(unit); | 
| -// var params = new protocol.AnalysisNavigationParams(result.path, | 
| -// collector.regions, collector.targets, collector.files); | 
| -// analysisServer.sendNotification(params.toNotification()); | 
| -// } | 
| -// } | 
| -// } | 
| }); | 
| analysisServer.driverMap[folder] = analysisDriver; | 
| return analysisDriver; |