Migrate browser_launcher to null-safety. (#27)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 90fd3b5..d83ac83 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.0
+
+ - Migrate to null-safety.
+
 ## 0.1.10
 
  - Support `webkit_inspection_protocol` version `^1.0.0`.
diff --git a/lib/src/chrome.dart b/lib/src/chrome.dart
index 04d0262..1391884 100644
--- a/lib/src/chrome.dart
+++ b/lib/src/chrome.dart
@@ -18,7 +18,7 @@
 String get _executable {
   for (var chromeEnv in _chromeEnvironments) {
     if (Platform.environment.containsKey(chromeEnv)) {
-      return Platform.environment[chromeEnv];
+      return Platform.environment[chromeEnv]!;
     }
   }
   if (Platform.isLinux) return _linuxExecutable;
@@ -34,7 +34,7 @@
         if (prefix == null) return false;
         final path = p.join(prefix, _windowsExecutable);
         return File(path).existsSync();
-      }, orElse: () => '.'),
+      }, orElse: () => '.')!,
       _windowsExecutable,
     );
   }
@@ -43,15 +43,19 @@
 
 /// Manager for an instance of Chrome.
 class Chrome {
-  Chrome._(this.debugPort, this.chromeConnection,
-      {Process process, Directory dataDir, this.deleteDataDir = false})
-      : _process = process,
+  Chrome._(
+    this.debugPort,
+    this.chromeConnection, {
+    Process? process,
+    Directory? dataDir,
+    this.deleteDataDir = false,
+  })  : _process = process,
         _dataDir = dataDir;
 
   final int debugPort;
   final ChromeConnection chromeConnection;
-  final Process _process;
-  final Directory _dataDir;
+  final Process? _process;
+  final Directory? _dataDir;
   final bool deleteDataDir;
 
   /// Connects to an instance of Chrome with an open debug port.
@@ -61,17 +65,19 @@
   /// Starts Chrome with the given arguments and a specific port.
   ///
   /// Each url in [urls] will be loaded in a separate tab.
-  static Future<Chrome> startWithDebugPort(List<String> urls,
-      {int debugPort, bool headless = false, String userDataDir}) async {
+  static Future<Chrome> startWithDebugPort(
+    List<String> urls, {
+    int debugPort = 0,
+    bool headless = false,
+    String? userDataDir,
+  }) async {
     Directory dataDir;
     if (userDataDir == null) {
       dataDir = Directory.systemTemp.createTempSync();
     } else {
       dataDir = Directory(userDataDir);
     }
-    final port = debugPort == null || debugPort == 0
-        ? await findUnusedPort()
-        : debugPort;
+    final port = debugPort == 0 ? await findUnusedPort() : debugPort;
     final args = [
       // Using a tmp directory ensures that a new instance of chrome launches
       // allowing for the remote debug port to be enabled.
@@ -117,7 +123,7 @@
       ChromeConnection('localhost', port),
       process: process,
       dataDir: dataDir,
-      deleteDataDir: userDataDir = null,
+      deleteDataDir: userDataDir == null,
     ));
   }
 
diff --git a/pubspec.yaml b/pubspec.yaml
index ad72432..7233840 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,17 +1,17 @@
 name: browser_launcher
 description: Provides a standardized way to launch web browsers for testing and tools.
 
-version: 0.1.10
+version: 1.0.0
 
 homepage: https://github.com/dart-lang/browser_launcher
 
 environment:
-  sdk: '>=2.2.0 <3.0.0'
+  sdk: '>=2.12.0 <3.0.0'
 
 dependencies:
-  path: ^1.6.2
+  path: ^1.8.0
   webkit_inspection_protocol: ^1.0.0
 
 dev_dependencies:
-  pedantic: ^1.5.0
-  test: ^1.0.0
+  pedantic: ^1.11.0
+  test: ^1.17.3
diff --git a/test/chrome_test.dart b/test/chrome_test.dart
index a63220f..0263225 100644
--- a/test/chrome_test.dart
+++ b/test/chrome_test.dart
@@ -10,9 +10,9 @@
 import 'package:webkit_inspection_protocol/webkit_inspection_protocol.dart';
 
 void main() {
-  Chrome chrome;
+  Chrome? chrome;
 
-  Future<void> launchChromeWithDebugPort({int port}) async {
+  Future<void> launchChromeWithDebugPort({int port = 0}) async {
     chrome = await Chrome.startWithDebugPort([_googleUrl], debugPort: port);
   }
 
@@ -37,7 +37,7 @@
 
   test('debugger is working', () async {
     await launchChromeWithDebugPort();
-    var tabs = await chrome.chromeConnection.getTabs();
+    var tabs = await chrome!.chromeConnection.getTabs();
     expect(
         tabs,
         contains(const TypeMatcher<ChromeTab>()
@@ -46,13 +46,13 @@
 
   test('uses open debug port if provided port is 0', () async {
     await launchChromeWithDebugPort(port: 0);
-    expect(chrome.debugPort, isNot(equals(0)));
+    expect(chrome!.debugPort, isNot(equals(0)));
   });
 
   test('can provide a specific debug port', () async {
     var port = await findUnusedPort();
     await launchChromeWithDebugPort(port: port);
-    expect(chrome.debugPort, port);
+    expect(chrome!.debugPort, port);
   });
 }