Skip to content

Commit 685e4ff

Browse files
committed
Revert "Remove unused option in server API"
Review URL: https://codereview.chromium.org/2382033003 .
1 parent 2972bd0 commit 685e4ff

22 files changed

+866
-43
lines changed

pkg/analysis_server/doc/api.html

-1
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,6 @@ <h4>parameters:</h4><dl><dt class="field"><b>included (List&lt;<a href="#type_Fi
814814
</p>
815815
</dd><dt class="field"><b>packageRoots (<span style="color:#999999">optional</span> Map&lt;<a href="#type_FilePath">FilePath</a>, <a href="#type_FilePath">FilePath</a>&gt;)</b></dt><dd>
816816

817-
<p><b><i>Deprecated</i></b>: This field is now ignored by server.</p>
818817
<p>
819818
A mapping from source directories to package roots
820819
that should override the normal package: URI resolution

pkg/analysis_server/lib/plugin/protocol/generated_protocol.dart

-4
Original file line numberDiff line numberDiff line change
@@ -1714,8 +1714,6 @@ class AnalysisSetAnalysisRootsParams implements HasToJson {
17141714
}
17151715

17161716
/**
1717-
* Deprecated: This field is now ignored by server.
1718-
*
17191717
* A mapping from source directories to package roots that should override
17201718
* the normal package: URI resolution mechanism.
17211719
*
@@ -1739,8 +1737,6 @@ class AnalysisSetAnalysisRootsParams implements HasToJson {
17391737
Map<String, String> get packageRoots => _packageRoots;
17401738

17411739
/**
1742-
* Deprecated: This field is now ignored by server.
1743-
*
17441740
* A mapping from source directories to package roots that should override
17451741
* the normal package: URI resolution mechanism.
17461742
*

pkg/analysis_server/lib/src/analysis_server.dart

+16
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ import 'package:analyzer/exception/exception.dart';
3030
import 'package:analyzer/file_system/file_system.dart';
3131
import 'package:analyzer/instrumentation/instrumentation.dart';
3232
import 'package:analyzer/plugin/resolver_provider.dart';
33+
import 'package:analyzer/source/pub_package_map_provider.dart';
3334
import 'package:analyzer/src/context/builder.dart';
3435
import 'package:analyzer/src/dart/ast/utilities.dart';
3536
import 'package:analyzer/src/generated/engine.dart';
3637
import 'package:analyzer/src/generated/sdk.dart';
3738
import 'package:analyzer/src/generated/source.dart';
3839
import 'package:analyzer/src/generated/source_io.dart';
3940
import 'package:analyzer/src/generated/utilities_general.dart';
41+
import 'package:analyzer/src/summary/package_bundle_reader.dart';
4042
import 'package:analyzer/src/summary/pub_summary.dart';
4143
import 'package:analyzer/src/task/dart.dart';
4244
import 'package:analyzer/src/util/glob.dart';
@@ -318,6 +320,7 @@ class AnalysisServer {
318320
AnalysisServer(
319321
this.channel,
320322
this.resourceProvider,
323+
PubPackageMapProvider packageMapProvider,
321324
Index _index,
322325
this.serverPlugin,
323326
this.options,
@@ -347,6 +350,7 @@ class AnalysisServer {
347350
resourceProvider,
348351
sdkManager,
349352
packageResolverProvider,
353+
packageMapProvider,
350354
analyzedFilesGlobs,
351355
instrumentationService,
352356
defaultContextOptions);
@@ -1424,6 +1428,14 @@ class AnalysisServer {
14241428
});
14251429
}
14261430

1431+
void _computingPackageMap(bool computing) {
1432+
if (serverServices.contains(ServerService.STATUS)) {
1433+
PubStatus pubStatus = new PubStatus(computing);
1434+
ServerStatusParams params = new ServerStatusParams(pub: pubStatus);
1435+
sendNotification(params.toNotification());
1436+
}
1437+
}
1438+
14271439
/**
14281440
* Return a set of all contexts whose associated folder is contained within,
14291441
* or equal to, one of the resources in the given list of [resources].
@@ -1613,6 +1625,10 @@ class ServerContextManagerCallbacks extends ContextManagerCallbacks {
16131625
}
16141626
}
16151627

1628+
@override
1629+
void computingPackageMap(bool computing) =>
1630+
analysisServer._computingPackageMap(computing);
1631+
16161632
@override
16171633
ContextBuilder createContextBuilder(Folder folder, AnalysisOptions options) {
16181634
String defaultPackageFilePath = null;

pkg/analysis_server/lib/src/context_manager.dart

+42-12
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@ import 'dart:collection';
99
import 'dart:convert';
1010
import 'dart:core';
1111

12+
import 'package:analysis_server/src/analysis_server.dart';
1213
import 'package:analyzer/exception/exception.dart';
1314
import 'package:analyzer/file_system/file_system.dart';
1415
import 'package:analyzer/instrumentation/instrumentation.dart';
1516
import 'package:analyzer/plugin/options.dart';
1617
import 'package:analyzer/plugin/resolver_provider.dart';
1718
import 'package:analyzer/source/analysis_options_provider.dart';
1819
import 'package:analyzer/source/config.dart';
20+
import 'package:analyzer/source/package_map_provider.dart';
1921
import 'package:analyzer/source/package_map_resolver.dart';
2022
import 'package:analyzer/source/path_filter.dart';
23+
import 'package:analyzer/source/pub_package_map_provider.dart';
2124
import 'package:analyzer/source/sdk_ext.dart';
2225
import 'package:analyzer/src/context/builder.dart';
2326
import 'package:analyzer/src/context/context.dart' as context;
@@ -330,6 +333,12 @@ abstract class ContextManagerCallbacks {
330333
*/
331334
void applyChangesToContext(Folder contextFolder, ChangeSet changeSet);
332335

336+
/**
337+
* Signals that the context manager has started to compute a package map (if
338+
* [computing] is `true`) or has finished (if [computing] is `false`).
339+
*/
340+
void computingPackageMap(bool computing);
341+
333342
/**
334343
* Create and return a context builder that can be used to create a context
335344
* for the files in the given [folder] when analyzed using the given [options].
@@ -446,8 +455,12 @@ class ContextManagerImpl implements ContextManager {
446455
final ResolverProvider packageResolverProvider;
447456

448457
/**
449-
* Provider of analysis options.
458+
* Provider which is used to determine the mapping from package name to
459+
* package folder.
450460
*/
461+
final PubPackageMapProvider _packageMapProvider;
462+
463+
/// Provider of analysis options.
451464
AnalysisOptionsProvider analysisOptionsProvider =
452465
new AnalysisOptionsProvider();
453466

@@ -493,6 +506,7 @@ class ContextManagerImpl implements ContextManager {
493506
this.resourceProvider,
494507
this.sdkManager,
495508
this.packageResolverProvider,
509+
this._packageMapProvider,
496510
this.analyzedFilesGlobs,
497511
this._instrumentationService,
498512
this.defaultContextOptions) {
@@ -969,19 +983,35 @@ class ContextManagerImpl implements ContextManager {
969983
// resolve packages.
970984
return new NoPackageFolderDisposition(packageRoot: packageRoot);
971985
} else {
972-
// Try .packages first.
973-
if (absolutePathContext.basename(packagespecFile.path) ==
974-
PACKAGE_SPEC_NAME) {
975-
Packages packages = _readPackagespec(packagespecFile);
976-
return new PackagesFileDisposition(packages);
977-
}
978-
if (packageResolverProvider != null) {
979-
UriResolver resolver = packageResolverProvider(folder);
980-
if (resolver != null) {
981-
return new CustomPackageResolverDisposition(resolver);
986+
PackageMapInfo packageMapInfo;
987+
callbacks.computingPackageMap(true);
988+
try {
989+
// Try .packages first.
990+
if (absolutePathContext.basename(packagespecFile.path) ==
991+
PACKAGE_SPEC_NAME) {
992+
Packages packages = _readPackagespec(packagespecFile);
993+
return new PackagesFileDisposition(packages);
982994
}
995+
if (packageResolverProvider != null) {
996+
UriResolver resolver = packageResolverProvider(folder);
997+
if (resolver != null) {
998+
return new CustomPackageResolverDisposition(resolver);
999+
}
1000+
}
1001+
1002+
ServerPerformanceStatistics.pub.makeCurrentWhile(() {
1003+
packageMapInfo = _packageMapProvider.computePackageMap(folder);
1004+
});
1005+
} finally {
1006+
callbacks.computingPackageMap(false);
1007+
}
1008+
for (String dependencyPath in packageMapInfo.dependencies) {
1009+
addDependency(dependencyPath);
1010+
}
1011+
if (packageMapInfo.packageMap == null) {
1012+
return new NoPackageFolderDisposition();
9831013
}
984-
return new NoPackageFolderDisposition();
1014+
return new PackageMapDisposition(packageMapInfo.packageMap);
9851015
}
9861016
}
9871017

pkg/analysis_server/lib/src/socket_server.dart

+10-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'package:analysis_server/src/services/index/index.dart';
1212
import 'package:analyzer/file_system/physical_file_system.dart';
1313
import 'package:analyzer/instrumentation/instrumentation.dart';
1414
import 'package:analyzer/plugin/resolver_provider.dart';
15+
import 'package:analyzer/source/pub_package_map_provider.dart';
1516
import 'package:analyzer/src/generated/sdk.dart';
1617
import 'package:plugin/plugin.dart';
1718

@@ -88,8 +89,15 @@ class SocketServer {
8889
index = createMemoryIndex();
8990
}
9091

91-
analysisServer = new AnalysisServer(serverChannel, resourceProvider, index,
92-
serverPlugin, analysisServerOptions, sdkManager, instrumentationService,
92+
analysisServer = new AnalysisServer(
93+
serverChannel,
94+
resourceProvider,
95+
new PubPackageMapProvider(resourceProvider, defaultSdk),
96+
index,
97+
serverPlugin,
98+
analysisServerOptions,
99+
sdkManager,
100+
instrumentationService,
93101
fileResolverProvider: fileResolverProvider,
94102
packageResolverProvider: packageResolverProvider,
95103
useSingleContextManager: useSingleContextManager,

0 commit comments

Comments
 (0)