| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // @dart = 2.8 |
| |
| import 'dart:async'; |
| |
| import '../base/file_system.dart'; |
| import '../globals.dart' as globals; |
| |
| /// Manages a Font configuration that can be shared across multiple tests. |
| class FontConfigManager { |
| Directory _fontsDirectory; |
| File _cachedFontConfig; |
| |
| /// Returns a Font configuration that limits font fallback to the artifact |
| /// cache directory. |
| File get fontConfigFile { |
| if (_cachedFontConfig != null) { |
| return _cachedFontConfig; |
| } |
| |
| final StringBuffer sb = StringBuffer(); |
| sb.writeln('<fontconfig>'); |
| sb.writeln(' <dir>${globals.cache.getCacheArtifacts().path}</dir>'); |
| sb.writeln(' <cachedir>/var/cache/fontconfig</cachedir>'); |
| sb.writeln('</fontconfig>'); |
| |
| if (_fontsDirectory == null) { |
| _fontsDirectory = globals.fs.systemTempDirectory.createTempSync('flutter_test_fonts.'); |
| globals.printTrace('Using this directory for fonts configuration: ${_fontsDirectory.path}'); |
| } |
| |
| _cachedFontConfig = globals.fs.file('${_fontsDirectory.path}/fonts.conf'); |
| _cachedFontConfig.createSync(); |
| _cachedFontConfig.writeAsStringSync(sb.toString()); |
| return _cachedFontConfig; |
| } |
| |
| Future<void> dispose() async { |
| if (_fontsDirectory != null) { |
| globals.printTrace('Deleting ${_fontsDirectory.path}...'); |
| await _fontsDirectory.delete(recursive: true); |
| _fontsDirectory = null; |
| } |
| } |
| } |