Skip to content

Commit 907bbe1

Browse files
authored
refactor asset bundle code to not depend on the global Cache.flutterRoot (flutter#142277)
Fixes flutter#142285. Part of work on flutter#141194. This is a refactor. There should be no changes in tool behavior.
1 parent 97fef98 commit 907bbe1

File tree

4 files changed

+41
-29
lines changed

4 files changed

+41
-29
lines changed

packages/flutter_tools/lib/src/asset.dart

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,12 @@ abstract class AssetBundleFactory {
6464
required FileSystem fileSystem,
6565
required Platform platform,
6666
bool splitDeferredAssets = false,
67-
}) => _ManifestAssetBundleFactory(logger: logger, fileSystem: fileSystem, platform: platform, splitDeferredAssets: splitDeferredAssets);
67+
}) => _ManifestAssetBundleFactory(
68+
logger: logger,
69+
fileSystem: fileSystem,
70+
platform: platform,
71+
splitDeferredAssets: splitDeferredAssets,
72+
);
6873

6974
/// Creates a new [AssetBundle].
7075
AssetBundle createBundle();
@@ -138,7 +143,13 @@ class _ManifestAssetBundleFactory implements AssetBundleFactory {
138143
final bool _splitDeferredAssets;
139144

140145
@override
141-
AssetBundle createBundle() => ManifestAssetBundle(logger: _logger, fileSystem: _fileSystem, platform: _platform, splitDeferredAssets: _splitDeferredAssets);
146+
AssetBundle createBundle() => ManifestAssetBundle(
147+
logger: _logger,
148+
fileSystem: _fileSystem,
149+
platform: _platform,
150+
flutterRoot: Cache.flutterRoot!,
151+
splitDeferredAssets: _splitDeferredAssets,
152+
);
142153
}
143154

144155
/// An asset bundle based on a pubspec.yaml file.
@@ -149,17 +160,20 @@ class ManifestAssetBundle implements AssetBundle {
149160
required Logger logger,
150161
required FileSystem fileSystem,
151162
required Platform platform,
163+
required String flutterRoot,
152164
bool splitDeferredAssets = false,
153165
}) : _logger = logger,
154166
_fileSystem = fileSystem,
155167
_platform = platform,
168+
_flutterRoot = flutterRoot,
156169
_splitDeferredAssets = splitDeferredAssets,
157170
_licenseCollector = LicenseCollector(fileSystem: fileSystem);
158171

159172
final Logger _logger;
160173
final FileSystem _fileSystem;
161174
final LicenseCollector _licenseCollector;
162175
final Platform _platform;
176+
final String _flutterRoot;
163177
final bool _splitDeferredAssets;
164178

165179
@override
@@ -584,7 +598,7 @@ class ManifestAssetBundle implements AssetBundle {
584598
final Uri entryUri = _fileSystem.path.toUri(asset);
585599
result.add(_Asset(
586600
baseDir: _fileSystem.path.join(
587-
Cache.flutterRoot!,
601+
_flutterRoot,
588602
'bin', 'cache', 'artifacts', 'material_fonts',
589603
),
590604
relativeUri: Uri(path: entryUri.pathSegments.last),
@@ -600,8 +614,7 @@ class ManifestAssetBundle implements AssetBundle {
600614

601615
List<_Asset> _getMaterialShaders() {
602616
final String shaderPath = _fileSystem.path.join(
603-
Cache.flutterRoot!,
604-
'packages', 'flutter', 'lib', 'src', 'material', 'shaders',
617+
_flutterRoot, 'packages', 'flutter', 'lib', 'src', 'material', 'shaders',
605618
);
606619
// This file will exist in a real invocation unless the git checkout is
607620
// corrupted somehow, but unit tests generally don't create this file

packages/flutter_tools/test/general.shard/asset_bundle_test.dart

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,11 @@ flutter:
368368
logger: logger,
369369
fileSystem: testFileSystem,
370370
platform: platform,
371+
flutterRoot: Cache.defaultFlutterRoot(
372+
platform: platform,
373+
fileSystem: testFileSystem,
374+
userMessages: UserMessages(),
375+
),
371376
splitDeferredAssets: true,
372377
);
373378

@@ -379,15 +384,6 @@ flutter:
379384
return bundle;
380385
}
381386

382-
late String? previousCacheFlutterRootValue;
383-
384-
setUp(() {
385-
previousCacheFlutterRootValue = Cache.flutterRoot;
386-
Cache.flutterRoot = Cache.defaultFlutterRoot(platform: platform, fileSystem: testFileSystem, userMessages: UserMessages());
387-
});
388-
389-
tearDown(() => Cache.flutterRoot = previousCacheFlutterRootValue);
390-
391387
testWithoutContext('correctly bundles assets given a simple asset manifest with flavors', () async {
392388
testFileSystem.file('.packages').createSync();
393389
testFileSystem.file(testFileSystem.path.join('assets', 'common', 'image.png')).createSync(recursive: true);

packages/flutter_tools/test/general.shard/asset_bundle_variant_test.dart

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,15 @@ void main() {
4242
group('AssetBundle asset variants (with Unix-style paths)', () {
4343
late Platform platform;
4444
late FileSystem fs;
45+
late String flutterRoot;
4546

4647
setUp(() {
4748
platform = FakePlatform();
4849
fs = MemoryFileSystem.test();
49-
Cache.flutterRoot = Cache.defaultFlutterRoot(
50+
flutterRoot = Cache.defaultFlutterRoot(
5051
platform: platform,
5152
fileSystem: fs,
52-
userMessages: UserMessages()
53+
userMessages: UserMessages(),
5354
);
5455

5556
fs.file('.packages').createSync();
@@ -94,6 +95,7 @@ ${assets.map((String entry) => ' - $entry').join('\n')}
9495
logger: BufferLogger.test(),
9596
fileSystem: fs,
9697
platform: platform,
98+
flutterRoot: flutterRoot,
9799
);
98100

99101
await bundle.build(
@@ -147,6 +149,7 @@ ${assets.map((String entry) => ' - $entry').join('\n')}
147149
final ManifestAssetBundle bundle = ManifestAssetBundle(
148150
logger: BufferLogger.test(),
149151
fileSystem: fs,
152+
flutterRoot: flutterRoot,
150153
platform: platform,
151154
);
152155

@@ -203,6 +206,7 @@ ${assets.map((String entry) => ' - $entry').join('\n')}
203206
logger: BufferLogger.test(),
204207
fileSystem: fs,
205208
platform: platform,
209+
flutterRoot: flutterRoot,
206210
);
207211

208212
await bundle.build(
@@ -248,6 +252,7 @@ ${assets.map((String entry) => ' - $entry').join('\n')}
248252
logger: BufferLogger.test(),
249253
fileSystem: fs,
250254
platform: platform,
255+
flutterRoot: flutterRoot,
251256
);
252257

253258
await bundle.build(
@@ -274,11 +279,12 @@ ${assets.map((String entry) => ' - $entry').join('\n')}
274279
group('AssetBundle asset variants (with Windows-style filepaths)', () {
275280
late final Platform platform;
276281
late final FileSystem fs;
282+
late final String flutterRoot;
277283

278284
setUp(() {
279285
platform = FakePlatform(operatingSystem: 'windows');
280286
fs = MemoryFileSystem.test(style: FileSystemStyle.windows);
281-
Cache.flutterRoot = Cache.defaultFlutterRoot(
287+
flutterRoot = Cache.defaultFlutterRoot(
282288
platform: platform,
283289
fileSystem: fs,
284290
userMessages: UserMessages()
@@ -318,6 +324,7 @@ flutter:
318324
logger: BufferLogger.test(),
319325
fileSystem: fs,
320326
platform: platform,
327+
flutterRoot: flutterRoot,
321328
);
322329

323330
await bundle.build(

packages/flutter_tools/test/general.shard/asset_test.dart

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,8 @@ void main() {
2626
group('Assets (${style.name} file system)', () {
2727
late FileSystem fileSystem;
2828
late BufferLogger logger;
29-
late String? previousCacheFlutterRootValue;
3029
late Platform platform;
31-
32-
setUpAll(() {
33-
previousCacheFlutterRootValue = Cache.flutterRoot;
34-
});
35-
36-
tearDownAll(() {
37-
Cache.flutterRoot = previousCacheFlutterRootValue;
38-
});
30+
late String flutterRoot;
3931

4032
setUp(() {
4133
fileSystem = MemoryFileSystem(
@@ -44,7 +36,7 @@ void main() {
4436
logger = BufferLogger.test();
4537
platform = FakePlatform(
4638
operatingSystem: style == Style.posix ? 'linux' : 'windows');
47-
Cache.flutterRoot = Cache.defaultFlutterRoot(
39+
flutterRoot = Cache.defaultFlutterRoot(
4840
platform: platform,
4941
fileSystem: fileSystem,
5042
userMessages: UserMessages(),
@@ -60,6 +52,7 @@ void main() {
6052
fileSystem: fileSystem,
6153
platform: platform,
6254
splitDeferredAssets: true,
55+
flutterRoot: flutterRoot,
6356
);
6457

6558
fileSystem.file(fileSystem.path.join('font', 'pubspec.yaml'))
@@ -157,6 +150,7 @@ dependencies:
157150
fileSystem: fileSystem,
158151
platform: platform,
159152
splitDeferredAssets: true,
153+
flutterRoot: flutterRoot,
160154
);
161155

162156
await assetBundle.build(
@@ -175,7 +169,7 @@ dependencies:
175169
testWithoutContext('bundles material shaders on non-web platforms',
176170
() async {
177171
final String shaderPath = fileSystem.path.join(
178-
Cache.flutterRoot!,
172+
flutterRoot,
179173
'packages',
180174
'flutter',
181175
'lib',
@@ -205,6 +199,7 @@ dependencies:
205199
logger: logger,
206200
fileSystem: fileSystem,
207201
platform: platform,
202+
flutterRoot: flutterRoot,
208203
);
209204

210205
await assetBundle.build(
@@ -219,7 +214,7 @@ dependencies:
219214
testWithoutContext('bundles material shaders on web platforms',
220215
() async {
221216
final String shaderPath = fileSystem.path.join(
222-
Cache.flutterRoot!,
217+
flutterRoot,
223218
'packages',
224219
'flutter',
225220
'lib',
@@ -249,6 +244,7 @@ dependencies:
249244
logger: logger,
250245
fileSystem: fileSystem,
251246
platform: platform,
247+
flutterRoot: flutterRoot,
252248
);
253249

254250
await assetBundle.build(

0 commit comments

Comments
 (0)