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

Unified Diff: webkit/browser/fileapi/file_system_operation_runner.cc

Issue 539143002: Migrate webkit/browser/ to storage/browser/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: webkit/browser/fileapi/file_system_operation_runner.cc
diff --git a/webkit/browser/fileapi/file_system_operation_runner.cc b/webkit/browser/fileapi/file_system_operation_runner.cc
deleted file mode 100644
index 0644b2fdfd7e11958a39f5e4856ad1d8b806a133..0000000000000000000000000000000000000000
--- a/webkit/browser/fileapi/file_system_operation_runner.cc
+++ /dev/null
@@ -1,687 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "webkit/browser/fileapi/file_system_operation_runner.h"
-
-#include "base/bind.h"
-#include "base/message_loop/message_loop_proxy.h"
-#include "base/stl_util.h"
-#include "net/url_request/url_request_context.h"
-#include "webkit/browser/blob/blob_url_request_job_factory.h"
-#include "webkit/browser/fileapi/file_observers.h"
-#include "webkit/browser/fileapi/file_stream_writer.h"
-#include "webkit/browser/fileapi/file_system_context.h"
-#include "webkit/browser/fileapi/file_system_operation.h"
-#include "webkit/browser/fileapi/file_writer_delegate.h"
-#include "webkit/common/blob/shareable_file_reference.h"
-
-namespace storage {
-
-typedef FileSystemOperationRunner::OperationID OperationID;
-
-class FileSystemOperationRunner::BeginOperationScoper
- : public base::SupportsWeakPtr<
- FileSystemOperationRunner::BeginOperationScoper> {
- public:
- BeginOperationScoper() {}
- private:
- DISALLOW_COPY_AND_ASSIGN(BeginOperationScoper);
-};
-
-FileSystemOperationRunner::OperationHandle::OperationHandle() {}
-FileSystemOperationRunner::OperationHandle::~OperationHandle() {}
-
-FileSystemOperationRunner::~FileSystemOperationRunner() {
-}
-
-void FileSystemOperationRunner::Shutdown() {
- operations_.Clear();
-}
-
-OperationID FileSystemOperationRunner::CreateFile(
- const FileSystemURL& url,
- bool exclusive,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
-
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForWrite(handle.id, url);
- operation->CreateFile(
- url, exclusive,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::CreateDirectory(
- const FileSystemURL& url,
- bool exclusive,
- bool recursive,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForWrite(handle.id, url);
- operation->CreateDirectory(
- url, exclusive, recursive,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::Copy(
- const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- CopyOrMoveOption option,
- const CopyProgressCallback& progress_callback,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(dest_url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForWrite(handle.id, dest_url);
- PrepareForRead(handle.id, src_url);
- operation->Copy(
- src_url, dest_url, option,
- progress_callback.is_null() ?
- CopyProgressCallback() :
- base::Bind(&FileSystemOperationRunner::OnCopyProgress, AsWeakPtr(),
- handle, progress_callback),
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::Move(
- const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- CopyOrMoveOption option,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(dest_url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForWrite(handle.id, dest_url);
- PrepareForWrite(handle.id, src_url);
- operation->Move(
- src_url, dest_url, option,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::DirectoryExists(
- const FileSystemURL& url,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForRead(handle.id, url);
- operation->DirectoryExists(
- url,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::FileExists(
- const FileSystemURL& url,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForRead(handle.id, url);
- operation->FileExists(
- url,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::GetMetadata(
- const FileSystemURL& url,
- const GetMetadataCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidGetMetadata(handle, callback, error, base::File::Info());
- return handle.id;
- }
- PrepareForRead(handle.id, url);
- operation->GetMetadata(
- url,
- base::Bind(&FileSystemOperationRunner::DidGetMetadata, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::ReadDirectory(
- const FileSystemURL& url,
- const ReadDirectoryCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidReadDirectory(handle, callback, error, std::vector<DirectoryEntry>(),
- false);
- return handle.id;
- }
- PrepareForRead(handle.id, url);
- operation->ReadDirectory(
- url,
- base::Bind(&FileSystemOperationRunner::DidReadDirectory, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::Remove(
- const FileSystemURL& url, bool recursive,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForWrite(handle.id, url);
- operation->Remove(
- url, recursive,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::Write(
- const net::URLRequestContext* url_request_context,
- const FileSystemURL& url,
- scoped_ptr<storage::BlobDataHandle> blob,
- int64 offset,
- const WriteCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
-
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidWrite(handle, callback, error, 0, true);
- return handle.id;
- }
-
- scoped_ptr<FileStreamWriter> writer(
- file_system_context_->CreateFileStreamWriter(url, offset));
- if (!writer) {
- // Write is not supported.
- DidWrite(handle, callback, base::File::FILE_ERROR_SECURITY, 0, true);
- return handle.id;
- }
-
- FileWriterDelegate::FlushPolicy flush_policy =
- file_system_context_->ShouldFlushOnWriteCompletion(url.type())
- ? FileWriterDelegate::FLUSH_ON_COMPLETION
- : FileWriterDelegate::NO_FLUSH_ON_COMPLETION;
- scoped_ptr<FileWriterDelegate> writer_delegate(
- new FileWriterDelegate(writer.Pass(), flush_policy));
-
- scoped_ptr<net::URLRequest> blob_request(
- storage::BlobProtocolHandler::CreateBlobRequest(
- blob.Pass(), url_request_context, writer_delegate.get()));
-
- PrepareForWrite(handle.id, url);
- operation->Write(
- url, writer_delegate.Pass(), blob_request.Pass(),
- base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::Truncate(
- const FileSystemURL& url, int64 length,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForWrite(handle.id, url);
- operation->Truncate(
- url, length,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-void FileSystemOperationRunner::Cancel(
- OperationID id,
- const StatusCallback& callback) {
- if (ContainsKey(finished_operations_, id)) {
- DCHECK(!ContainsKey(stray_cancel_callbacks_, id));
- stray_cancel_callbacks_[id] = callback;
- return;
- }
- FileSystemOperation* operation = operations_.Lookup(id);
- if (!operation) {
- // There is no operation with |id|.
- callback.Run(base::File::FILE_ERROR_INVALID_OPERATION);
- return;
- }
- operation->Cancel(callback);
-}
-
-OperationID FileSystemOperationRunner::TouchFile(
- const FileSystemURL& url,
- const base::Time& last_access_time,
- const base::Time& last_modified_time,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- PrepareForWrite(handle.id, url);
- operation->TouchFile(
- url, last_access_time, last_modified_time,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::OpenFile(
- const FileSystemURL& url,
- int file_flags,
- const OpenFileCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidOpenFile(handle, callback, base::File(error), base::Closure());
- return handle.id;
- }
- if (file_flags &
- (base::File::FLAG_CREATE | base::File::FLAG_OPEN_ALWAYS |
- base::File::FLAG_CREATE_ALWAYS | base::File::FLAG_OPEN_TRUNCATED |
- base::File::FLAG_WRITE | base::File::FLAG_EXCLUSIVE_WRITE |
- base::File::FLAG_DELETE_ON_CLOSE |
- base::File::FLAG_WRITE_ATTRIBUTES)) {
- PrepareForWrite(handle.id, url);
- } else {
- PrepareForRead(handle.id, url);
- }
- operation->OpenFile(
- url, file_flags,
- base::Bind(&FileSystemOperationRunner::DidOpenFile, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::CreateSnapshotFile(
- const FileSystemURL& url,
- const SnapshotFileCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidCreateSnapshot(handle, callback, error, base::File::Info(),
- base::FilePath(), NULL);
- return handle.id;
- }
- PrepareForRead(handle.id, url);
- operation->CreateSnapshotFile(
- url,
- base::Bind(&FileSystemOperationRunner::DidCreateSnapshot, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::CopyInForeignFile(
- const base::FilePath& src_local_disk_path,
- const FileSystemURL& dest_url,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(dest_url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- operation->CopyInForeignFile(
- src_local_disk_path, dest_url,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::RemoveFile(
- const FileSystemURL& url,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- operation->RemoveFile(
- url,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::RemoveDirectory(
- const FileSystemURL& url,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- operation->RemoveDirectory(
- url,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::CopyFileLocal(
- const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- CopyOrMoveOption option,
- const CopyFileProgressCallback& progress_callback,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(src_url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- operation->CopyFileLocal(
- src_url, dest_url, option, progress_callback,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-OperationID FileSystemOperationRunner::MoveFileLocal(
- const FileSystemURL& src_url,
- const FileSystemURL& dest_url,
- CopyOrMoveOption option,
- const StatusCallback& callback) {
- base::File::Error error = base::File::FILE_OK;
- FileSystemOperation* operation =
- file_system_context_->CreateFileSystemOperation(src_url, &error);
- BeginOperationScoper scope;
- OperationHandle handle = BeginOperation(operation, scope.AsWeakPtr());
- if (!operation) {
- DidFinish(handle, callback, error);
- return handle.id;
- }
- operation->MoveFileLocal(
- src_url, dest_url, option,
- base::Bind(&FileSystemOperationRunner::DidFinish, AsWeakPtr(),
- handle, callback));
- return handle.id;
-}
-
-base::File::Error FileSystemOperationRunner::SyncGetPlatformPath(
- const FileSystemURL& url,
- base::FilePath* platform_path) {
- base::File::Error error = base::File::FILE_OK;
- scoped_ptr<FileSystemOperation> operation(
- file_system_context_->CreateFileSystemOperation(url, &error));
- if (!operation.get())
- return error;
- return operation->SyncGetPlatformPath(url, platform_path);
-}
-
-FileSystemOperationRunner::FileSystemOperationRunner(
- FileSystemContext* file_system_context)
- : file_system_context_(file_system_context) {}
-
-void FileSystemOperationRunner::DidFinish(
- const OperationHandle& handle,
- const StatusCallback& callback,
- base::File::Error rv) {
- if (handle.scope) {
- finished_operations_.insert(handle.id);
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE, base::Bind(&FileSystemOperationRunner::DidFinish,
- AsWeakPtr(), handle, callback, rv));
- return;
- }
- callback.Run(rv);
- FinishOperation(handle.id);
-}
-
-void FileSystemOperationRunner::DidGetMetadata(
- const OperationHandle& handle,
- const GetMetadataCallback& callback,
- base::File::Error rv,
- const base::File::Info& file_info) {
- if (handle.scope) {
- finished_operations_.insert(handle.id);
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE, base::Bind(&FileSystemOperationRunner::DidGetMetadata,
- AsWeakPtr(), handle, callback, rv, file_info));
- return;
- }
- callback.Run(rv, file_info);
- FinishOperation(handle.id);
-}
-
-void FileSystemOperationRunner::DidReadDirectory(
- const OperationHandle& handle,
- const ReadDirectoryCallback& callback,
- base::File::Error rv,
- const std::vector<DirectoryEntry>& entries,
- bool has_more) {
- if (handle.scope) {
- finished_operations_.insert(handle.id);
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE, base::Bind(&FileSystemOperationRunner::DidReadDirectory,
- AsWeakPtr(), handle, callback, rv,
- entries, has_more));
- return;
- }
- callback.Run(rv, entries, has_more);
- if (rv != base::File::FILE_OK || !has_more)
- FinishOperation(handle.id);
-}
-
-void FileSystemOperationRunner::DidWrite(
- const OperationHandle& handle,
- const WriteCallback& callback,
- base::File::Error rv,
- int64 bytes,
- bool complete) {
- if (handle.scope) {
- finished_operations_.insert(handle.id);
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE, base::Bind(&FileSystemOperationRunner::DidWrite, AsWeakPtr(),
- handle, callback, rv, bytes, complete));
- return;
- }
- callback.Run(rv, bytes, complete);
- if (rv != base::File::FILE_OK || complete)
- FinishOperation(handle.id);
-}
-
-void FileSystemOperationRunner::DidOpenFile(
- const OperationHandle& handle,
- const OpenFileCallback& callback,
- base::File file,
- const base::Closure& on_close_callback) {
- if (handle.scope) {
- finished_operations_.insert(handle.id);
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE, base::Bind(&FileSystemOperationRunner::DidOpenFile,
- AsWeakPtr(), handle, callback, Passed(&file),
- on_close_callback));
- return;
- }
- callback.Run(file.Pass(), on_close_callback);
- FinishOperation(handle.id);
-}
-
-void FileSystemOperationRunner::DidCreateSnapshot(
- const OperationHandle& handle,
- const SnapshotFileCallback& callback,
- base::File::Error rv,
- const base::File::Info& file_info,
- const base::FilePath& platform_path,
- const scoped_refptr<storage::ShareableFileReference>& file_ref) {
- if (handle.scope) {
- finished_operations_.insert(handle.id);
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE, base::Bind(&FileSystemOperationRunner::DidCreateSnapshot,
- AsWeakPtr(), handle, callback, rv, file_info,
- platform_path, file_ref));
- return;
- }
- callback.Run(rv, file_info, platform_path, file_ref);
- FinishOperation(handle.id);
-}
-
-void FileSystemOperationRunner::OnCopyProgress(
- const OperationHandle& handle,
- const CopyProgressCallback& callback,
- FileSystemOperation::CopyProgressType type,
- const FileSystemURL& source_url,
- const FileSystemURL& dest_url,
- int64 size) {
- if (handle.scope) {
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE, base::Bind(
- &FileSystemOperationRunner::OnCopyProgress,
- AsWeakPtr(), handle, callback, type, source_url, dest_url, size));
- return;
- }
- callback.Run(type, source_url, dest_url, size);
-}
-
-void FileSystemOperationRunner::PrepareForWrite(OperationID id,
- const FileSystemURL& url) {
- if (file_system_context_->GetUpdateObservers(url.type())) {
- file_system_context_->GetUpdateObservers(url.type())->Notify(
- &FileUpdateObserver::OnStartUpdate, MakeTuple(url));
- }
- write_target_urls_[id].insert(url);
-}
-
-void FileSystemOperationRunner::PrepareForRead(OperationID id,
- const FileSystemURL& url) {
- if (file_system_context_->GetAccessObservers(url.type())) {
- file_system_context_->GetAccessObservers(url.type())->Notify(
- &FileAccessObserver::OnAccess, MakeTuple(url));
- }
-}
-
-FileSystemOperationRunner::OperationHandle
-FileSystemOperationRunner::BeginOperation(
- FileSystemOperation* operation,
- base::WeakPtr<BeginOperationScoper> scope) {
- OperationHandle handle;
- handle.id = operations_.Add(operation);
- handle.scope = scope;
- return handle;
-}
-
-void FileSystemOperationRunner::FinishOperation(OperationID id) {
- OperationToURLSet::iterator found = write_target_urls_.find(id);
- if (found != write_target_urls_.end()) {
- const FileSystemURLSet& urls = found->second;
- for (FileSystemURLSet::const_iterator iter = urls.begin();
- iter != urls.end(); ++iter) {
- if (file_system_context_->GetUpdateObservers(iter->type())) {
- file_system_context_->GetUpdateObservers(iter->type())->Notify(
- &FileUpdateObserver::OnEndUpdate, MakeTuple(*iter));
- }
- }
- write_target_urls_.erase(found);
- }
-
- // IDMap::Lookup fails if the operation is NULL, so we don't check
- // operations_.Lookup(id) here.
-
- operations_.Remove(id);
- finished_operations_.erase(id);
-
- // Dispatch stray cancel callback if exists.
- std::map<OperationID, StatusCallback>::iterator found_cancel =
- stray_cancel_callbacks_.find(id);
- if (found_cancel != stray_cancel_callbacks_.end()) {
- // This cancel has been requested after the operation has finished,
- // so report that we failed to stop it.
- found_cancel->second.Run(base::File::FILE_ERROR_INVALID_OPERATION);
- stray_cancel_callbacks_.erase(found_cancel);
- }
-}
-
-} // namespace storage

Powered by Google App Engine
This is Rietveld 408576698