mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
46 lines
1.5 KiB
Dart
46 lines
1.5 KiB
Dart
// Copyright 2016 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'dart:async';
|
|
|
|
import 'package:platform/platform.dart';
|
|
|
|
import 'context.dart';
|
|
import 'file_system.dart';
|
|
|
|
export 'package:platform/platform.dart';
|
|
|
|
const Platform _kLocalPlatform = const LocalPlatform();
|
|
const String _kRecordingType = 'platform';
|
|
|
|
Platform get platform => context[Platform] ?? _kLocalPlatform;
|
|
|
|
/// Serializes the current [platform] to the specified base recording
|
|
/// [location].
|
|
///
|
|
/// Platform metadata will be recorded in a subdirectory of [location] named
|
|
/// `"platform"`. It is permissible for [location] to represent an existing
|
|
/// non-empty directory as long as there is no collision with the `"platform"`
|
|
/// subdirectory.
|
|
///
|
|
/// Returns the existing platform.
|
|
Future<Platform> getRecordingPlatform(String location) async {
|
|
final Directory dir = getRecordingSink(location, _kRecordingType);
|
|
final File file = _getPlatformManifest(dir);
|
|
await file.writeAsString(platform.toJson(), flush: true);
|
|
return platform;
|
|
}
|
|
|
|
Future<FakePlatform> getReplayPlatform(String location) async {
|
|
final Directory dir = getReplaySource(location, _kRecordingType);
|
|
final File file = _getPlatformManifest(dir);
|
|
final String json = await file.readAsString();
|
|
return new FakePlatform.fromJson(json);
|
|
}
|
|
|
|
File _getPlatformManifest(Directory dir) {
|
|
final String path = dir.fileSystem.path.join(dir.path, 'MANIFEST.txt');
|
|
return dir.fileSystem.file(path);
|
|
}
|