Unverified Commit f41fa9dd authored by Jenn Magder's avatar Jenn Magder Committed by GitHub

Migrate deferred_components_prebuild_validator to null safety (#83854)

parent 97dfafbb
...@@ -2,9 +2,6 @@ ...@@ -2,9 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// @dart = 2.8
import 'package:meta/meta.dart';
import 'package:xml/xml.dart'; import 'package:xml/xml.dart';
import '../base/deferred_component.dart'; import '../base/deferred_component.dart';
...@@ -34,12 +31,12 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator { ...@@ -34,12 +31,12 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
/// change. This defaults to true. /// change. This defaults to true.
DeferredComponentsPrebuildValidator(Directory projectDir, Logger logger, Platform platform, { DeferredComponentsPrebuildValidator(Directory projectDir, Logger logger, Platform platform, {
bool exitOnFail = true, bool exitOnFail = true,
String title, String? title,
Directory templatesDir, Directory? templatesDir,
}) : _templatesDir = templatesDir, }) : _templatesDir = templatesDir,
super(projectDir, logger, platform, exitOnFail: exitOnFail, title: title); super(projectDir, logger, platform, exitOnFail: exitOnFail, title: title);
final Directory _templatesDir; final Directory? _templatesDir;
/// Checks if an android dynamic feature module exists for each deferred /// Checks if an android dynamic feature module exists for each deferred
/// component. /// component.
...@@ -69,17 +66,20 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator { ...@@ -69,17 +66,20 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
); );
if (!androidFiles.verifyFilesExist()) { if (!androidFiles.verifyFilesExist()) {
// generate into temp directory // generate into temp directory
final Map<String, List<File>> results = final Map<String, List<File>> results = await androidFiles.generateFiles(
await androidFiles.generateFiles(
alternateAndroidDir: outputDir, alternateAndroidDir: outputDir,
clearAlternateOutputDir: true, clearAlternateOutputDir: true,
); );
for (final File file in results['outputs']) { if (results.containsKey('outputs')) {
for (final File file in results['outputs']!) {
generatedFiles.add(file.path); generatedFiles.add(file.path);
changesMade = true; changesMade = true;
} }
outputs.addAll(results['outputs']); outputs.addAll(results['outputs']!);
inputs.addAll(results['inputs']); }
if (results.containsKey('inputs')) {
inputs.addAll(results['inputs']!);
}
} }
} }
return !changesMade; return !changesMade;
...@@ -148,16 +148,16 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator { ...@@ -148,16 +148,16 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
// wrong string stored. // wrong string stored.
for (final XmlElement resources in document.findAllElements('resources')) { for (final XmlElement resources in document.findAllElements('resources')) {
for (final XmlElement element in resources.findElements('string')) { for (final XmlElement element in resources.findElements('string')) {
final String name = element.getAttribute('name'); final String? name = element.getAttribute('name');
if (requiredEntriesMap.containsKey(name)) { if (requiredEntriesMap.containsKey(name)) {
if (element.text != null && element.text != requiredEntriesMap[name]) { if (element.text != null && element.text != requiredEntriesMap[name]) {
element.innerText = requiredEntriesMap[name]; element.innerText = requiredEntriesMap[name]!;
modified = true; modified = true;
} }
requiredEntriesMap.remove(name); requiredEntriesMap.remove(name);
} }
} }
for (final String key in requiredEntriesMap.keys) { requiredEntriesMap.forEach((String key, String value) {
modified = true; modified = true;
final XmlElement newStringElement = XmlElement( final XmlElement newStringElement = XmlElement(
XmlName.fromString('string'), XmlName.fromString('string'),
...@@ -165,11 +165,11 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator { ...@@ -165,11 +165,11 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
XmlAttribute(XmlName.fromString('name'), key), XmlAttribute(XmlName.fromString('name'), key),
], ],
<XmlNode>[ <XmlNode>[
XmlText(requiredEntriesMap[key]), XmlText(value),
], ],
); );
resources.children.add(newStringElement); resources.children.add(newStringElement);
} });
break; break;
} }
if (modified) { if (modified) {
...@@ -211,17 +211,17 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator { ...@@ -211,17 +211,17 @@ class DeferredComponentsPrebuildValidator extends DeferredComponentsValidator {
// directory. // directory.
class _DeferredComponentAndroidFiles { class _DeferredComponentAndroidFiles {
_DeferredComponentAndroidFiles({ _DeferredComponentAndroidFiles({
@required this.name, required this.name,
@required this.projectDir, required this.projectDir,
this.logger, required this.logger,
Directory templatesDir, Directory? templatesDir,
}) : _templatesDir = templatesDir; }) : _templatesDir = templatesDir;
// The name of the deferred component. // The name of the deferred component.
final String name; final String name;
final Directory projectDir; final Directory projectDir;
final Logger logger; final Logger logger;
final Directory _templatesDir; final Directory? _templatesDir;
Directory get androidDir => projectDir.childDirectory('android'); Directory get androidDir => projectDir.childDirectory('android');
Directory get componentDir => androidDir.childDirectory(name); Directory get componentDir => androidDir.childDirectory(name);
...@@ -235,7 +235,7 @@ class _DeferredComponentAndroidFiles { ...@@ -235,7 +235,7 @@ class _DeferredComponentAndroidFiles {
} }
// Generates any missing basic files for the dynamic feature into a temporary directory. // Generates any missing basic files for the dynamic feature into a temporary directory.
Future<Map<String, List<File>>> generateFiles({Directory alternateAndroidDir, bool clearAlternateOutputDir = false}) async { Future<Map<String, List<File>>> generateFiles({Directory? alternateAndroidDir, bool clearAlternateOutputDir = false}) async {
final Directory outputDir = alternateAndroidDir?.childDirectory(name) ?? componentDir; final Directory outputDir = alternateAndroidDir?.childDirectory(name) ?? componentDir;
if (clearAlternateOutputDir && alternateAndroidDir != null) { if (clearAlternateOutputDir && alternateAndroidDir != null) {
ErrorHandlingFileSystem.deleteIfExists(outputDir); ErrorHandlingFileSystem.deleteIfExists(outputDir);
...@@ -251,9 +251,10 @@ class _DeferredComponentAndroidFiles { ...@@ -251,9 +251,10 @@ class _DeferredComponentAndroidFiles {
// generates default build.gradle and AndroidManifest.xml for the deferred component. // generates default build.gradle and AndroidManifest.xml for the deferred component.
Future<List<File>> _setupComponentFiles(Directory outputDir) async { Future<List<File>> _setupComponentFiles(Directory outputDir) async {
Template template; Template template;
if (_templatesDir != null) { final Directory? templatesDir = _templatesDir;
final Directory templateComponentDir = _templatesDir.childDirectory('module${globals.fs.path.separator}android${globals.fs.path.separator}deferred_component'); if (templatesDir != null) {
template = Template(templateComponentDir, templateComponentDir, _templatesDir, final Directory templateComponentDir = templatesDir.childDirectory('module${globals.fs.path.separator}android${globals.fs.path.separator}deferred_component');
template = Template(templateComponentDir, templateComponentDir, templatesDir,
fileSystem: globals.fs, fileSystem: globals.fs,
templateManifest: null, templateManifest: null,
logger: logger, logger: logger,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment