Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(594)

Side by Side Diff: webkit/fileapi/local_file_system_operation.cc

Issue 10956064: Send OnModifyFile Notification when File Write Finishes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/fileapi/local_file_system_operation.h" 5 #include "webkit/fileapi/local_file_system_operation.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/single_thread_task_runner.h" 8 #include "base/single_thread_task_runner.h"
9 #include "base/time.h" 9 #include "base/time.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 if (!writer.get()) { 307 if (!writer.get()) {
308 // Write is not supported. 308 // Write is not supported.
309 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, 0, false); 309 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, 0, false);
310 delete this; 310 delete this;
311 return; 311 return;
312 } 312 }
313 313
314 DCHECK(blob_url.is_valid()); 314 DCHECK(blob_url.is_valid());
315 file_writer_delegate_.reset(new FileWriterDelegate( 315 file_writer_delegate_.reset(new FileWriterDelegate(
316 base::Bind(&LocalFileSystemOperation::DidWrite, 316 base::Bind(&LocalFileSystemOperation::DidWrite,
317 weak_factory_.GetWeakPtr()), 317 weak_factory_.GetWeakPtr(), url),
318 writer.Pass())); 318 writer.Pass()));
319 319
320 set_write_callback(callback); 320 set_write_callback(callback);
321 scoped_ptr<net::URLRequest> blob_request(url_request_context->CreateRequest( 321 scoped_ptr<net::URLRequest> blob_request(url_request_context->CreateRequest(
322 blob_url, file_writer_delegate_.get())); 322 blob_url, file_writer_delegate_.get()));
323 323
324 file_writer_delegate_->Start(blob_request.Pass()); 324 file_writer_delegate_->Start(blob_request.Pass());
325 } 325 }
326 326
327 void LocalFileSystemOperation::Truncate(const FileSystemURL& url, int64 length, 327 void LocalFileSystemOperation::Truncate(const FileSystemURL& url, int64 length,
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 670
671 void LocalFileSystemOperation::DidReadDirectory( 671 void LocalFileSystemOperation::DidReadDirectory(
672 const ReadDirectoryCallback& callback, 672 const ReadDirectoryCallback& callback,
673 base::PlatformFileError rv, 673 base::PlatformFileError rv,
674 const std::vector<base::FileUtilProxy::Entry>& entries, 674 const std::vector<base::FileUtilProxy::Entry>& entries,
675 bool has_more) { 675 bool has_more) {
676 callback.Run(rv, entries, has_more); 676 callback.Run(rv, entries, has_more);
677 } 677 }
678 678
679 void LocalFileSystemOperation::DidWrite( 679 void LocalFileSystemOperation::DidWrite(
680 const FileSystemURL& url,
680 base::PlatformFileError rv, 681 base::PlatformFileError rv,
681 int64 bytes, 682 int64 bytes,
682 bool complete) { 683 bool complete) {
683 if (write_callback_.is_null()) { 684 if (write_callback_.is_null()) {
684 // If cancelled, callback is already invoked and set to null in Cancel(). 685 // If cancelled, callback is already invoked and set to null in Cancel().
685 // We must not call it twice. Just shut down this operation object. 686 // We must not call it twice. Just shut down this operation object.
686 delete this; 687 delete this;
687 return; 688 return;
688 } 689 }
690
691 if (complete) {
692 operation_context_->change_observers()->Notify(
693 &FileChangeObserver::OnModifyFile, MakeTuple(url));
kinuko 2012/09/25 04:12:26 On the second thought (and on the contrary to what
694 }
695
689 write_callback_.Run(rv, bytes, complete); 696 write_callback_.Run(rv, bytes, complete);
690 if (complete || rv != base::PLATFORM_FILE_OK) 697 if (complete || rv != base::PLATFORM_FILE_OK)
691 delete this; 698 delete this;
692 } 699 }
693 700
694 void LocalFileSystemOperation::DidTouchFile(const StatusCallback& callback, 701 void LocalFileSystemOperation::DidTouchFile(const StatusCallback& callback,
695 base::PlatformFileError rv) { 702 base::PlatformFileError rv) {
696 callback.Run(rv); 703 callback.Run(rv);
697 } 704 }
698 705
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 } 775 }
769 776
770 bool LocalFileSystemOperation::SetPendingOperationType(OperationType type) { 777 bool LocalFileSystemOperation::SetPendingOperationType(OperationType type) {
771 if (pending_operation_ != kOperationNone) 778 if (pending_operation_ != kOperationNone)
772 return false; 779 return false;
773 pending_operation_ = type; 780 pending_operation_ = type;
774 return true; 781 return true;
775 } 782 }
776 783
777 } // namespace fileapi 784 } // namespace fileapi
OLDNEW
« no previous file with comments | « webkit/fileapi/local_file_system_operation.h ('k') | webkit/fileapi/local_file_system_operation_write_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698