Commit Graph

85 Commits

Author SHA1 Message Date
nweiz@google.com 884404dca2 Add an OutputStream.closed getter.
BUG=3603

Review URL: https://chromiumcodereview.appspot.com//10832188

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@10455 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-09 20:09:19 +00:00
whesse@google.com 015c40188c Add .fromPath constructors to File and Directory.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10639004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9024 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-22 10:36:20 +00:00
floitsch@google.com a51dc25968 Make isUtc a getter, change some method names in Date. Weekday is now 1 based.
isUtc is now a getter.
Date.hours -> Date.hour
Date.minutes -> Date.minute
Date.seconds -> Date.second
Date.milliseconds -> Date.millisecond
Date.fromEpoch -> Date.fromMillisecondsSinceEpoch
Date.value -> Date.millisecondsSinceEpoch
Date.MON == 1 (up to Date.SUN == 7).

Fixes issue 3444, 1985.

Review URL: https://chromiumcodereview.appspot.com//10538105

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8899 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-20 11:43:46 +00:00
whesse@google.com c914f33159 Make sure that _FileInputStream._fillBuffer is not entered again before it finishes.
Also fix a bug where _fillBuffer did not reset _position correctly.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10533110

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8553 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-12 16:06:12 +00:00
whesse@google.com 2d68705170 Fix file buffering code that uses RemoveRange on a fixed-length Uint8 array.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10544110

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8548 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-12 14:00:06 +00:00
whesse@google.com 31f1777851 Add buffering to _FileInputStream implementation.
Revert "Revert dart:io file InputStream buffering to fix bugs in it."
Recommits r8435, r8401, r8396, r8395, with additional fixes.

BUG=3434
TEST=

Review URL: https://chromiumcodereview.appspot.com//10542102

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8537 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-12 10:55:51 +00:00
ager@google.com a0c90242b8 Add missing closed check to random access file.
R=iposva@google.com
BUG=
TEST=standalone/io/file_error_test

Review URL: https://chromiumcodereview.appspot.com//10536112

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8525 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-12 07:28:29 +00:00
whesse@google.com 118a9ad7e7 Revert dart:io file InputStream buffering to fix bugs in it. Reverts r8435, r8401, r8396, r8395.
BUG=dart:3450, dart:3434
TEST=

Review URL: https://chromiumcodereview.appspot.com//10537077

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8441 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-08 14:39:02 +00:00
whesse@google.com 842194bd39 Fix dart:io File.openInputStream input stream to cancel outstanding onData events when EOF reached.
BUG=
TEST=standalone/io/file_test

Review URL: https://chromiumcodereview.appspot.com//10543078

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8435 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-08 12:05:53 +00:00
sgjesse@google.com b5995d1d9b Add method flush to output stream
R=ager@google.com

BUG=dart:1407
TEST=tests/standalone/src/io/FileOutputStreamTest.dart

Review URL: https://chromiumcodereview.appspot.com//9969202

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8422 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-08 07:56:15 +00:00
whesse@google.com ada680e28f Change FileInputStream to only call onClosed callback when underlying file has been closed. Change standalone/io/file_test to check this.
TBR=ricow@google.com

BUG=
TEST=standalone/io/file_test

Review URL: https://chromiumcodereview.appspot.com//10546051

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8401 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-07 16:43:41 +00:00
whesse@google.com 4b1c96b722 Remove erroneous assert from dart:io's File class.
BUG=
TEST=standalone/io/file_test.dart

Review URL: https://chromiumcodereview.appspot.com//10537053

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8396 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-07 14:23:16 +00:00
whesse@google.com b939ba1480 Add buffering to File.openInputStream, so that the entire file is not read in at once.
BUG=dart:3334
TEST=

Review URL: https://chromiumcodereview.appspot.com//10536029

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8395 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-07 13:44:31 +00:00
ager@google.com 379695ee2b Implement File.lastModified.
R=sgjesse@google.com,ajohnsen@google.com
BUG=dartbug/2988
TEST=standalone/io/file*

Review URL: https://chromiumcodereview.appspot.com//10443008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7945 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-24 13:10:02 +00:00
ager@google.com 169e2ae549 Finish file 'fuzzer' and fix issues.
- One integer extraction issue.
- Changed to using nativeport.call().transform to make sure that exceptions during the processing of the reply are propagated to the future.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10411053

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7843 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-22 09:52:36 +00:00
ager@google.com a47410bbed Reland: Add more API fuzzing and fix the issues encountered.
Only change from original code review is the closing of files
opened in the test.

- Fixed integer checks in a couple of places.
- Added closed checks to async operations.

More changes like this coming but I'm splitting the work up to not
make the review too large.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10414021

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7790 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-21 10:52:01 +00:00
ager@google.com 330aa1ab66 Revert "Add more API fuzzing and fix the issues encountered."
I know what is wrong but don't have the time to fix it right now.
I open a lot of files that are not closed and therefore the directory
cannot be deleted on Windows. Will fix ASAP.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10398053

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7684 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-16 13:02:48 +00:00
ager@google.com ceb6a9b621 Add more API fuzzing and fix the issues encountered.
- Fixed integer checks in a couple of places.
- Added closed checks to async operations.

More changes like this coming but I'm splitting the work up to not
make the review too large.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10382194

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7683 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-16 12:52:10 +00:00
ager@google.com 5fb75d3952 Change dart:io to use Future for one-shot operations.
This appears to be what a lot of our users are doing and it is the
style used in our other libraries.

Noteworthy changes:

- File and Directory objects are now immutable.

- Directory.list returns an active lister object.

- Write operations on files return futures and the
  onNoPendingWrites handler is gone. The same
  functionality is there by using 'then' on the
  future returned from the last write operation.

- Process starting is now done with static methods:
  -- Process.start yields an InteractiveProcess.
  -- Process.run yields a Future<ProcessResult>

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10392023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7529 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-11 06:09:42 +00:00
cshapiro@google.com 1472427af8 Revert "Revert "Implement {Int,Uint}{8,16,32,64} and Float{32,64} typed arrays.""
This reverts commit 63480a81fccbde001494dd535cd06a8fa02ed261.

Review URL: https://chromiumcodereview.appspot.com//10379018

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7352 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-04 23:16:09 +00:00
ager@google.com 4cbcc366bb Fix inconsistent file error messages.
R=iposva@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10361003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7273 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-03 11:48:19 +00:00
ager@google.com c2e4045ecd Fix type assertion error in dart:io File library.
R=sgjesse@google.com
BUG=dartbug.com/2776

Review URL: https://chromiumcodereview.appspot.com//10265023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7179 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-01 06:32:17 +00:00
ager@google.com 29a3df3e1a Add the name of the file to exceptions on failed file operations.
R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10270012

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7155 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-30 13:40:10 +00:00
ager@google.com a638ccc0f7 Make sure that errors are thrown when there is no error handler
on a FileInputStream.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10206023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7075 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-27 12:01:17 +00:00
sgjesse@google.com 33565cd64a Change the error handling in dart:io
1. Change the argument on all onError handlers from Exception to
Dynamic

2. Throw an exception if an error ocours and there is no error handler
present for handling it.

For sockets there is the complication that an error on a socket is
reported to the socket error handler, and each of the stream error
handlers. The solution to this is to throw an exception if there was
no error handler on either the socket or one of the streams.

Fixed a number of bugs in tests revealed by errors no longer being
silently ignored.

R=ager@google.com

BUG=none
TEST=tests/standalone/src/io/*

Review URL: https://chromiumcodereview.appspot.com//10173024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6994 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-26 08:12:17 +00:00
ager@google.com f366f9d913 Make it an error to call close twice on a file using the async API.
This is to make it consistent with the sync API.

Additionally, fix situations where a non-exception was passed to
error handlers on File objects.

R=sgjesse@google.com
BUG=dartbug.com/2451
TEST=standalone/io/File*

Review URL: https://chromiumcodereview.appspot.com//10095009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6564 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-16 11:32:03 +00:00
ager@google.com aba2e48950 Support length operation without opening file.
Use fstat instead of multiple seek calls to get length of
opened files.

R=sgjesse@google.com
BUG=dartbug.com/1592
TEST=standalone/io/File*Test

Review URL: https://chromiumcodereview.appspot.com//10065013

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6459 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-12 11:47:32 +00:00
ager@google.com c6a91ef4b6 Remove check whether async has been used from File objects.
It makes it hard to use libraries and doesn't really help.

R=sgjesse@google.com
BUG=dartbug.com/2426
TEST=

Review URL: https://chromiumcodereview.appspot.com//10054005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6400 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-11 09:27:53 +00:00
sgjesse@google.com 471f1c772c Add error handling to directory
The directory object now has error handling like the rest of the
dart:io. The added tests to some extend overlaps with some of the
tests in DirectpryTest.dart, but I found it better to have error tests
in a single place.

I removed a few type checks sitting in the C++ code for the native
functions as for file we currently don't have them. I have opened
issue 2305 regarding where to do type checks for dart:io native
functions.

R=ager@google.com

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9773018

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5866 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-27 08:50:35 +00:00
sgjesse@google.com cdc29b23f0 Add error handling to random access file
Now all both sync and async methods on File and RandomAccessFile
should have correct error handling.

Changed readByte and readByteSync to return -1 instead of
reporting an error when end of file is reached. It seems to make
the most sense.

The amount of boiler-plate code in both the native functions and
native port functions in file.cc is growing. Maybe we should
consider some refactoring, e.g. with a table of the expected
argument types for each native port functions together with known
position of the FILE* argument.

R=ager@google.com

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9839053

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5812 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-26 05:54:49 +00:00
sgjesse@google.com 7fa9f1fe88 Add error handling to socket streams
Change the streams onError callbacks to get an Exception argument on
all streams.

Added actual error handling to the socket streams.

As it is difficult to determine where an error should be reported I
decided to call all the registered onError callbacks, that is on the
socket itself and on both input and output stream.

Did some additional cleanup of the naming of OnError argument in some tests.

R=ager@google.com

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9812007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5717 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-21 14:40:15 +00:00
iposva@google.com 5ee85db5f4 Reapply part of r5325.
- Fix use of String operator + in IO libraries.

Previously reviewed as part of https://chromiumcodereview.appspot.com/9690003
Review URL: https://chromiumcodereview.appspot.com//9725001

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5597 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-16 22:19:23 +00:00
whesse@google.com d51bb2b427 Fix some minor static type issues in dart:io implementation.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9703023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5514 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-15 09:34:51 +00:00
sgjesse@google.com 84836f8c56 Error reporting on File in dart:io
This implements consistent error reporting on all methods on File in dart:io. The async onError method is called with an exception argument which is the same exception as would have been thrown from the corresponding sync method.

The one method on Directory which already did this has been updated as well.

R=ager@google.com

BUG=none
TEST=tests/standalone/src/io/FileTest.dart, tests/standalone/src/io/FileInvalidArgumentsTest.dart

Review URL: https://chromiumcodereview.appspot.com//9630012

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5396 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-13 13:00:47 +00:00
sigmund@google.com 2b5952ac6c SendPort + ReceivePort changes:
- document what are valid messages in SendPort.send
- change SendPort.call to return a future of the reply
- remove ReceivePort.singleShot

Review URL: https://chromiumcodereview.appspot.com//9652001

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5368 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-12 22:52:36 +00:00
iposva@google.com 993cd03e41 - Fix build by rolling back r5324, r5325.
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5333 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-12 16:31:12 +00:00
iposva@google.com 8ca5ba4d15 - Fix use of String operator + in corelib and standalone libraries.
Review URL: https://chromiumcodereview.appspot.com//9690003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5325 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-12 15:26:55 +00:00
sgjesse@google.com 4491ea144d Add writeString method to OutputStream
All output streams now supports writeString which takes the encoding
to be used when transforming the string into a sequence of bytes.

This change also introduces an Encoding interface and Encodings class
as a repository for the supported encodings. Currently this is only
UTF-8, ISO-8859-1 and ASCII. All methods in dart:io which previously
used a String to represent the encoding now uses objects implementing
Encoding.

In this change dart:io is still using the internal UTF-8 encoder used
by the HTTP implementation. I will look into using the one in dart:utf
in a separate change.

R=ager@google.com

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9653026

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5231 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-09 13:49:20 +00:00
ager@google.com b2b123d24b Update Timer API to take the callback as the last parameter.
This makes the code easier to read when the callback actually does
work:

  new Timer(1000, (t) {
    // do
    // lots
    // of
    // stuff
  });

Also, it is more consistent with the rest of the APIs.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9597015

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4945 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-05 12:43:41 +00:00
ager@google.com 242bba108b Reapply dart:io API changes.
R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9568004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4790 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-01 10:07:35 +00:00
ager@google.com fd31551ca4 Revert "Rename blahHandler to onBlah throughout dart:io."
D'oh! I need to update the test binaries as well. Reverting, building
and putting back in again.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9570004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4785 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-01 09:43:15 +00:00
ager@google.com 40e0bceab5 Rename blahHandler to onBlah throughout dart:io.
Additionally, change all single-shot methods to take their callback as an argument instead of registering it on the object.

I have attempted to find all uses in the repo but there might
be some firefighting to do when this lands.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9500002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4784 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-01 09:36:04 +00:00
ager@google.com f1b2e219ce Fix close callback on FileInputStreams.
Not waiting for the underlying file to actually close before
setting streamMarkedClosed can lead to too early close callbacks.

R=sgjesse@google.com
BUG=dart:1922
TEST=standalone/FileTest.dart

Review URL: https://chromiumcodereview.appspot.com//9540009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4754 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-29 15:42:19 +00:00
ager@google.com 4d94b5c4d9 Move back to having File.open{Input,Output}Stream return the stream directly.
R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9487005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4677 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-28 12:28:42 +00:00
whesse@google.com 87466eccdd Fix type warnings in dart:io library.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9494004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4672 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-28 11:09:41 +00:00
ager@google.com acc7252c25 Fix type warning.
R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9487003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4663 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-28 08:51:07 +00:00
ager@google.com 103804d7f2 Make FileInputStream and FileOutputStream actually asynchronous.
Use the async API of the underlying file.

This also means that openInputStream and openOutputStream can
directly return the stream without performing IO. I'll do that
change as a follow-up.

R=sgjesse@google.com
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//9474004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4662 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-28 08:38:25 +00:00
ager@google.com e286176171 Implement File.{readAsBytes, readAsText, readAsLines}.
Convenience methods to use if all you care about is getting the
entire contents of a file.

R=sgjesse@google.com
BUG=1579
TEST=standalone/FileTest

Review URL: https://chromiumcodereview.appspot.com//9452014

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4568 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-24 13:31:38 +00:00
sgjesse@google.com 5a38a88099 Port async file operations to be using native ports instead or an isolate
R=ager@google.com

Review URL: https://chromiumcodereview.appspot.com//9415043

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4520 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-23 11:11:48 +00:00
ager@google.com 7e4a36278f Implement File.directory() and File.directorySync() to get
containing directory for a file.

BUG=dart:1618
TEST=standalone/FileTest

Review URL: https://chromiumcodereview.appspot.com//9416096

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4464 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-22 16:18:39 +00:00