Send OnModifyFile Notification when File Write completes successfully or fails but something was written. e.g. partial write before failure.

BUG=150060

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@158784 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/webkit/fileapi/file_writer_delegate.h b/webkit/fileapi/file_writer_delegate.h
index 1b7bb16..6a6dff8 100644
--- a/webkit/fileapi/file_writer_delegate.h
+++ b/webkit/fileapi/file_writer_delegate.h
@@ -25,8 +25,20 @@
 class FILEAPI_EXPORT_PRIVATE FileWriterDelegate
     : public net::URLRequest::Delegate {
  public:
+  enum WriteProgressStatus {
+    SUCCESS_IO_PENDING,
+    SUCCESS_COMPLETED,
+    ERROR_WRITE_STARTED,
+    ERROR_WRITE_NOT_STARTED,
+  };
+
+  typedef base::Callback<void(
+      base::PlatformFileError result,
+      int64 bytes,
+      WriteProgressStatus write_status)> DelegateWriteCallback;
+
   FileWriterDelegate(
-      const FileSystemOperation::WriteCallback& write_callback,
+      const DelegateWriteCallback& write_callback,
       scoped_ptr<FileStreamWriter> file_writer);
   virtual ~FileWriterDelegate();
 
@@ -67,10 +79,12 @@
   void OnWriteCancelled(int status);
 
   FileSystemQuotaUtil* quota_util() const;
+  WriteProgressStatus GetCompletionStatusOnError() const;
 
-  FileSystemOperation::WriteCallback write_callback_;
+  DelegateWriteCallback write_callback_;
   scoped_ptr<FileStreamWriter> file_stream_writer_;
   base::Time last_progress_event_time_;
+  bool writing_started_;
   int bytes_written_backlog_;
   int bytes_written_;
   int bytes_read_;