| Index: runtime/bin/directory_impl.dart
|
| diff --git a/runtime/bin/directory_impl.dart b/runtime/bin/directory_impl.dart
|
| index 485dfadfcac5e6b83b22824b6f9ee4ff70552399..ee4cbaa9c04282743e4d22ff3b1f4e0803a1a256 100644
|
| --- a/runtime/bin/directory_impl.dart
|
| +++ b/runtime/bin/directory_impl.dart
|
| @@ -29,6 +29,22 @@ class _DirectoryListingIsolate extends Isolate {
|
| }
|
|
|
|
|
| +class _DirectoryCreateTempIsolate extends Isolate {
|
| +
|
| + _DirectoryCreateTempIsolate() : super.heavy();
|
| +
|
| + void main() {
|
| + port.receive((path, replyTo) {
|
| + // Call function to get file name
|
| + replyTo.send(_createTemp(path, (Math.random() * 0x8000000).toInt()));
|
| + port.close();
|
| + });
|
| + }
|
| +
|
| + String _createTemp(String template, int num) native "Directory_CreateTemp";
|
| +}
|
| +
|
| +
|
| class _Directory implements Directory {
|
|
|
| _Directory(String this._path);
|
| @@ -47,6 +63,23 @@ class _Directory implements Directory {
|
| }
|
| }
|
|
|
| + void createTemp() {
|
| + new _DirectoryCreateTempIsolate().spawn().then((port) {
|
| + port.call(_path).receive((result, ignored) {
|
| + if (result != '') {
|
| + _path = result;
|
| + if (_createTempHandler !== null) {
|
| + _createTempHandler();
|
| + }
|
| + } else {
|
| + if (_errorHandler !== null) {
|
| + _errorHandler("Could not create temporary directory: $_path");
|
| + }
|
| + }
|
| + });
|
| + });
|
| + }
|
| +
|
| void deleteSync() {
|
| if (!_delete(_path)) {
|
| throw new DirectoryException("Directory deletion failed: $_path");
|
| @@ -129,6 +162,10 @@ class _Directory implements Directory {
|
| _doneHandler = doneHandler;
|
| }
|
|
|
| + void set createTempHandler(void createTempHandler()) {
|
| + _createTempHandler = createTempHandler;
|
| + }
|
| +
|
| void set errorHandler(void errorHandler(String error)) {
|
| _errorHandler = errorHandler;
|
| }
|
| @@ -148,6 +185,7 @@ class _Directory implements Directory {
|
| var _dirHandler;
|
| var _fileHandler;
|
| var _doneHandler;
|
| + var _createTempHandler;
|
| var _errorHandler;
|
|
|
| String _path;
|
|
|