Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Side by Side Diff: pkg/front_end/lib/src/incremental/file_state.dart

Issue 2928483005: Add an incremental reloader example and a utility tool to trigger a reload by (Closed)
Patch Set: CL comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:typed_data'; 6 import 'dart:typed_data';
7 7
8 import 'package:crypto/crypto.dart'; 8 import 'package:crypto/crypto.dart';
9 import 'package:front_end/file_system.dart'; 9 import 'package:front_end/file_system.dart';
10 import 'package:front_end/src/base/resolve_relative_uri.dart'; 10 import 'package:front_end/src/base/resolve_relative_uri.dart';
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 } 214 }
215 } 215 }
216 216
217 /// Information about known file system state. 217 /// Information about known file system state.
218 class FileSystemState { 218 class FileSystemState {
219 final FileSystem fileSystem; 219 final FileSystem fileSystem;
220 final TranslateUri uriTranslator; 220 final TranslateUri uriTranslator;
221 221
222 _FileSystemView _fileSystemView; 222 _FileSystemView _fileSystemView;
223 223
224 /// Mapping from file URIs to corresponding [FileState]s. 224 /// Mapping from import URIs to corresponding [FileState]s. For example, this
225 /// may contain an entry for `dart:core`.
225 final Map<Uri, FileState> _uriToFile = {}; 226 final Map<Uri, FileState> _uriToFile = {};
226 227
227 /// Mapping from file URIs to corresponding [FileState]s. 228 /// Mapping from file URIs to corresponding [FileState]s. This map should only
229 /// contain `file:*` URIs as keys.
228 final Map<Uri, FileState> _fileUriToFile = {}; 230 final Map<Uri, FileState> _fileUriToFile = {};
229 231
230 FileSystemState(this.fileSystem, this.uriTranslator); 232 FileSystemState(this.fileSystem, this.uriTranslator);
231 233
232 /// Return the [FileSystem] that is backed by this [FileSystemState]. The 234 /// Return the [FileSystem] that is backed by this [FileSystemState]. The
233 /// files in this [FileSystem] always have the same content as the 235 /// files in this [FileSystem] always have the same content as the
234 /// corresponding [FileState]s, thus avoiding race conditions when a file 236 /// corresponding [FileState]s, thus avoiding race conditions when a file
235 /// is updated on the actual file system. 237 /// is updated on the actual file system.
236 FileSystem get fileSystemView { 238 FileSystem get fileSystemView {
237 return _fileSystemView ??= new _FileSystemView(this); 239 return _fileSystemView ??= new _FileSystemView(this);
238 } 240 }
239 241
242 /// The `file:` URI of all files currently tracked by this instance.
243 Iterable<Uri> get fileUris => _fileUriToFile.keys;
244
240 /// Return the [FileState] for the given [absoluteUri], or `null` if the 245 /// Return the [FileState] for the given [absoluteUri], or `null` if the
241 /// [absoluteUri] cannot be resolved into a file URI. 246 /// [absoluteUri] cannot be resolved into a file URI.
242 /// 247 ///
243 /// The returned file has the last known state since it was last refreshed. 248 /// The returned file has the last known state since it was last refreshed.
244 Future<FileState> getFile(Uri absoluteUri) async { 249 Future<FileState> getFile(Uri absoluteUri) async {
245 // Resolve the absolute URI into the absolute file URI. 250 // Resolve the absolute URI into the absolute file URI.
246 Uri fileUri; 251 Uri fileUri;
247 if (absoluteUri.isScheme('file')) { 252 if (absoluteUri.isScheme('file')) {
248 fileUri = absoluteUri; 253 fileUri = absoluteUri;
249 } else { 254 } else {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 node.isEvaluated = true; 403 node.isEvaluated = true;
399 cycle.libraries.add(node.file); 404 cycle.libraries.add(node.file);
400 } 405 }
401 topologicallySortedCycles.add(cycle); 406 topologicallySortedCycles.add(cycle);
402 } 407 }
403 408
404 _LibraryNode getNode(FileState file) { 409 _LibraryNode getNode(FileState file) {
405 return nodesOfFiles.putIfAbsent(file, () => new _LibraryNode(this, file)); 410 return nodesOfFiles.putIfAbsent(file, () => new _LibraryNode(this, file));
406 } 411 }
407 } 412 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698