Skip to content

Commit

Permalink
Add a way to convert absolute uri to g3 relative uri
Browse files Browse the repository at this point in the history
  • Loading branch information
elliette committed Aug 22, 2023
1 parent b244b89 commit 54e24e2
Show file tree
Hide file tree
Showing 27 changed files with 93 additions and 25 deletions.
2 changes: 2 additions & 0 deletions dwds/lib/dart_web_debug_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import 'package:dwds/src/readers/asset_reader.dart';
import 'package:dwds/src/servers/devtools.dart';
import 'package:dwds/src/servers/extension_backend.dart';
import 'package:dwds/src/services/expression_compiler.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:logging/logging.dart';
import 'package:shelf/shelf.dart';
import 'package:sse/server/sse_handler.dart';
Expand Down Expand Up @@ -87,6 +88,7 @@ class Dwds {
Future<bool> Function()? isFlutterApp,
}) async {
globalLoadStrategy = loadStrategy;
globalIsInternalBuild = isInternalBuild;
isFlutterApp ??= () => Future.value(true);

DevTools? devTools;
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/debugging/classes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:dwds/src/debugging/metadata/class.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/services/chrome_debug_exception.dart';
import 'package:dwds/src/utilities/domain.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/shared.dart';
import 'package:vm_service/vm_service.dart';
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
Expand Down
1 change: 1 addition & 0 deletions dwds/lib/src/debugging/debugger.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/services/chrome_debug_exception.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/domain.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/objects.dart' show Property;
import 'package:dwds/src/utilities/server.dart';
import 'package:dwds/src/utilities/shared.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/debugging/inspector.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import 'package:dwds/src/debugging/instance.dart';
import 'package:dwds/src/debugging/libraries.dart';
import 'package:dwds/src/debugging/location.dart';
import 'package:dwds/src/debugging/remote_debugger.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/readers/asset_reader.dart';
import 'package:dwds/src/utilities/conversions.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/domain.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/objects.dart';
import 'package:dwds/src/utilities/server.dart';
import 'package:dwds/src/utilities/shared.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/debugging/instance.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import 'dart:math';
import 'package:dwds/src/debugging/inspector.dart';
import 'package:dwds/src/debugging/metadata/class.dart';
import 'package:dwds/src/debugging/metadata/function.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/conversions.dart';
import 'package:dwds/src/utilities/domain.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/objects.dart';
import 'package:dwds/src/utilities/shared.dart';
import 'package:logging/logging.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/debugging/libraries.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

import 'package:collection/collection.dart';
import 'package:dwds/src/debugging/metadata/class.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/services/chrome_debug_exception.dart';
import 'package:dwds/src/utilities/domain.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:logging/logging.dart';
import 'package:vm_service/vm_service.dart';
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/debugging/location.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

import 'package:async/async.dart';
import 'package:dwds/src/debugging/modules.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/readers/asset_reader.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:logging/logging.dart';
import 'package:path/path.dart' as p;
import 'package:source_maps/parser.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/debugging/metadata/class.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/services/chrome_debug_exception.dart';
import 'package:dwds/src/utilities/domain.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:logging/logging.dart';
import 'package:vm_service/vm_service.dart';
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/debugging/metadata/function.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:dwds/src/debugging/remote_debugger.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/server.dart';
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';

Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/debugging/modules.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:async/async.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:logging/logging.dart';

/// Tracks modules for the compiled application.
Expand Down
9 changes: 9 additions & 0 deletions dwds/lib/src/loaders/legacy.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,11 @@ class LegacyStrategy extends LoadStrategy {
///
final String? Function(String entrypoint) _packageConfigLocator;

/// Returns the relative path in google3, determined by the [absolutePath].
///
/// Returns `null` if not a google3 app.
final String? Function(String absolutePath) _g3RelativePath;

final Uri? _appEntrypoint;

LegacyStrategy(
Expand All @@ -88,6 +93,7 @@ class LegacyStrategy extends LoadStrategy {
AssetReader assetReader,
this._appEntrypoint,
this._packageConfigLocator,
this._g3RelativePath,
) : super(assetReader);

@override
Expand Down Expand Up @@ -137,4 +143,7 @@ class LegacyStrategy extends LoadStrategy {
@override
String? packageConfigLocator(String entrypoint) =>
_packageConfigLocator(entrypoint);

@override
String? g3RelativePath(String absolutePath) => _g3RelativePath(absolutePath);
}
3 changes: 3 additions & 0 deletions dwds/lib/src/loaders/require.dart
Original file line number Diff line number Diff line change
Expand Up @@ -286,4 +286,7 @@ if(!window.\$requireLoader) {

@override
String? packageConfigLocator(String entrypoint) => null;

@override
String? g3RelativePath(String absolutePath) => null;
}
11 changes: 5 additions & 6 deletions dwds/lib/src/loaders/strategy.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,6 @@ import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:path/path.dart' as p;
import 'package:shelf/shelf.dart';

late LoadStrategy _globalLoadStrategy;

set globalLoadStrategy(LoadStrategy strategy) => _globalLoadStrategy = strategy;

LoadStrategy get globalLoadStrategy => _globalLoadStrategy;

abstract class LoadStrategy {
final AssetReader _assetReader;
final _providers = <String, MetadataProvider>{};
Expand Down Expand Up @@ -116,6 +110,11 @@ abstract class LoadStrategy {
///
String? packageConfigLocator(String entrypoint);

/// Returns the relative path in google3, determined by the [absolutePath].
///
/// Returns `null` if not a google3 app.
String? g3RelativePath(String absolutePath);

/// The absolute path to the app's package config, or null if not provided by
/// [packageConfigLocator].
String get packageConfigPath {
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/services/chrome_proxy_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ import 'package:dwds/src/debugging/modules.dart';
import 'package:dwds/src/debugging/remote_debugger.dart';
import 'package:dwds/src/debugging/skip_list.dart';
import 'package:dwds/src/events.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/readers/asset_reader.dart';
import 'package:dwds/src/services/batched_expression_evaluator.dart';
import 'package:dwds/src/services/expression_compiler.dart';
import 'package:dwds/src/services/expression_evaluator.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/shared.dart';
import 'package:logging/logging.dart' hide LogRecord;
import 'package:pub_semver/pub_semver.dart' as semver;
Expand Down
2 changes: 1 addition & 1 deletion dwds/lib/src/services/expression_evaluator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ import 'package:dwds/src/debugging/dart_scope.dart';
import 'package:dwds/src/debugging/debugger.dart';
import 'package:dwds/src/debugging/location.dart';
import 'package:dwds/src/debugging/modules.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/services/expression_compiler.dart';
import 'package:dwds/src/services/javascript_builder.dart';
import 'package:dwds/src/utilities/conversions.dart';
import 'package:dwds/src/utilities/domain.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/objects.dart' as chrome;
import 'package:logging/logging.dart';
import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
Expand Down
35 changes: 34 additions & 1 deletion dwds/lib/src/utilities/dart_uri.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:dwds/data/extension_request.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:logging/logging.dart';
import 'package:package_config/package_config.dart';
import 'package:path/path.dart' as p;
Expand Down Expand Up @@ -134,11 +136,27 @@ class DartUri {
static final Map<String, String> _resolvedUriToUri = {};

/// Returns package, app, or dart uri for a resolved path.
static String? toPackageUri(String uri) => _resolvedUriToUri[uri];
static String? toPackageUri(String uri) {
final packageUri = _resolvedUriToUri[uri];
if (packageUri != null) return packageUri;

// If this is an internal app, then the given uri might be g3-relative:
if (globalIsInternalBuild) {
final resolvedUri = _g3RelativeUriToResolvedUri[uri];
return _resolvedUriToUri[resolvedUri];
}

return null;
}

/// Returns resolved path for a package, app, or dart uri.
static String? toResolvedUri(String uri) => _uriToResolvedUri[uri];

/// Returns a resolved path for a g3-relative URI.
///
/// This map is empty if not a google3 app.
static final Map<String, String> _g3RelativeUriToResolvedUri = {};

/// The directory in which we're running.
///
/// We store this here because for tests we may want to act as if we're
Expand All @@ -165,7 +183,22 @@ class DartUri {
/// Record all of the libraries, indexed by their absolute file: URI.
static void recordAbsoluteUris(Iterable<String> libraryUris) {
for (var uri in libraryUris) {
print('recording $uri');
_recordAbsoluteUri(uri);
if (globalIsInternalBuild) {
_recordG3RelativeUri(uri);
}
}
}

static void _recordG3RelativeUri(String libraryUri) {
final absoluteUri = _uriToResolvedUri[libraryUri];
if (absoluteUri == null) return;

final g3RelativeUri = globalLoadStrategy.g3RelativePath(absoluteUri);
print('now recording $g3RelativeUri');
if (g3RelativeUri != null) {
_g3RelativeUriToResolvedUri[g3RelativeUri] = absoluteUri;
}
}

Expand Down
16 changes: 16 additions & 0 deletions dwds/lib/src/utilities/globals.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:dwds/src/loaders/strategy.dart';

/// The load strategy for the connected app.
late LoadStrategy _globalLoadStrategy;
set globalLoadStrategy(LoadStrategy strategy) => _globalLoadStrategy = strategy;
LoadStrategy get globalLoadStrategy => _globalLoadStrategy;

/// Whether or not the connected app is an internal (e.g. google3) app.
bool get globalIsInternalBuild => _isInternalBuild ?? false;
bool? _isInternalBuild;
set globalIsInternalBuild(bool isInternalBuild) =>
_isInternalBuild = isInternalBuild;
2 changes: 1 addition & 1 deletion dwds/test/chrome_proxy_service_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import 'dart:async';
import 'dart:convert';
import 'dart:io';

import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/services/chrome_proxy_service.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/shared.dart';
import 'package:http/http.dart' as http;
import 'package:path/path.dart' as path;
Expand Down
2 changes: 1 addition & 1 deletion dwds/test/dart_uri_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
@Timeout(Duration(minutes: 2))

import 'package:dwds/asset_reader.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:test/test.dart';
import 'package:test_common/logging.dart';

Expand Down
2 changes: 1 addition & 1 deletion dwds/test/debugger_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import 'package:dwds/src/debugging/frame_computer.dart';
import 'package:dwds/src/debugging/inspector.dart';
import 'package:dwds/src/debugging/location.dart';
import 'package:dwds/src/debugging/skip_list.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:logging/logging.dart';
import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart' hide LogRecord;
Expand Down
2 changes: 1 addition & 1 deletion dwds/test/expression_evaluator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import 'dart:async';
import 'package:dwds/src/debugging/debugger.dart';
import 'package:dwds/src/debugging/location.dart';
import 'package:dwds/src/debugging/skip_list.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/services/batched_expression_evaluator.dart';
import 'package:dwds/src/services/expression_evaluator.dart';
import 'package:dwds/src/utilities/globals.dart';

import 'package:test/test.dart';
import 'package:vm_service/vm_service.dart' hide LogRecord;
Expand Down
4 changes: 4 additions & 0 deletions dwds/test/fixtures/fakes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import 'package:dwds/src/debugging/webkit_debugger.dart';
import 'package:dwds/src/handlers/socket_connections.dart';
import 'package:dwds/src/loaders/require.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:dwds/src/utilities/objects.dart';
import 'package:shelf/shelf.dart' as shelf;
import 'package:vm_service/vm_service.dart';
Expand Down Expand Up @@ -343,6 +344,9 @@ class FakeStrategy extends LoadStrategy {
@override
String? packageConfigLocator(String entrypoint) => null;

@override
String? g3RelativePath(String absolutePath) => null;

@override
ReloadConfiguration get reloadConfiguration => ReloadConfiguration.none;

Expand Down
2 changes: 1 addition & 1 deletion dwds/test/inspector_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

import 'package:dwds/dwds.dart';
import 'package:dwds/src/debugging/inspector.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/conversions.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:test/test.dart';
import 'package:test_common/test_sdk_configuration.dart';
import 'package:vm_service/vm_service.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/test/instances/common/instance_common.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.

import 'package:dwds/src/debugging/inspector.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:test/test.dart';
import 'package:test_common/logging.dart';
import 'package:test_common/test_sdk_configuration.dart';
Expand Down
1 change: 1 addition & 0 deletions dwds/test/location_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:dwds/asset_reader.dart';
import 'package:dwds/src/debugging/location.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:test/test.dart';

import 'fixtures/fakes.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/test/metadata_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import 'package:dwds/src/debugging/metadata/module_metadata.dart';
import 'package:dwds/src/debugging/metadata/provider.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:test/test.dart';

import 'fixtures/fakes.dart';
Expand Down
2 changes: 1 addition & 1 deletion dwds/test/skip_list_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import 'package:dwds/asset_reader.dart';
import 'package:dwds/src/debugging/location.dart';
import 'package:dwds/src/debugging/skip_list.dart';
import 'package:dwds/src/loaders/strategy.dart';
import 'package:dwds/src/utilities/dart_uri.dart';
import 'package:dwds/src/utilities/globals.dart';
import 'package:source_maps/parser.dart';
import 'package:test/test.dart';

Expand Down

0 comments on commit 54e24e2

Please sign in to comment.