Allow passing in a user-data-dir (#14)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7922d36..4a1b460 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.1.5
+
+- Add a parameter to use a specified user-data-dir instead of a system temp.
+
## 0.1.4
- Start Chrome maximized.
diff --git a/lib/src/chrome.dart b/lib/src/chrome.dart
index ea1a144..2a8b3de 100644
--- a/lib/src/chrome.dart
+++ b/lib/src/chrome.dart
@@ -41,18 +41,16 @@
/// Manager for an instance of Chrome.
class Chrome {
- Chrome._(
- this.debugPort,
- this.chromeConnection, {
- Process process,
- Directory dataDir,
- }) : _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 bool deleteDataDir;
/// Connects to an instance of Chrome with an open debug port.
static Future<Chrome> fromExisting(int port) async =>
@@ -61,12 +59,14 @@
/// 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,
- }) async {
- final dataDir = Directory.systemTemp.createTempSync();
+ static Future<Chrome> startWithDebugPort(List<String> urls,
+ {int debugPort, 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;
@@ -108,6 +108,7 @@
ChromeConnection('localhost', port),
process: process,
dataDir: dataDir,
+ deleteDataDir: userDataDir = null,
));
}
@@ -150,8 +151,10 @@
// Chrome starts another process as soon as it dies that modifies the
// profile information. Give it some time before attempting to delete
// the directory.
- await Future.delayed(Duration(milliseconds: 500));
- await _dataDir?.delete(recursive: true);
+ if (deleteDataDir) {
+ await Future.delayed(Duration(milliseconds: 500));
+ await _dataDir?.delete(recursive: true);
+ }
} catch (_) {
// Silently fail if we can't clean up the profile information.
// It is a system tmp directory so it should get cleaned up eventually.
diff --git a/pubspec.yaml b/pubspec.yaml
index 9a3ffc6..59c3d46 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,7 +1,7 @@
name: browser_launcher
description: Provides a standardized way to launch web browsers for testing and tools.
-version: 0.1.4
+version: 0.1.5
author: Dart Team <misc@dartlang.org>
homepage: https://github.com/dart-lang/browser_launcher