| Index: content/child/fileapi/webfilesystem_impl.cc
|
| diff --git a/content/child/fileapi/webfilesystem_impl.cc b/content/child/fileapi/webfilesystem_impl.cc
|
| index c149afd3ff628eb1ab28634122b38720109e6761..93765cb9d7ca1bc9a8238c59b9022823f5196f00 100644
|
| --- a/content/child/fileapi/webfilesystem_impl.cc
|
| +++ b/content/child/fileapi/webfilesystem_impl.cc
|
| @@ -42,32 +42,32 @@ base::LazyInstance<base::ThreadLocalPointer<WebFileSystemImpl> >::Leaky
|
|
|
| class WaitableCallbackResults {
|
| public:
|
| - static WaitableCallbackResults* MaybeCreate(
|
| + static scoped_ptr<WaitableCallbackResults> MaybeCreate(
|
| const WebFileSystemCallbacks& callbacks) {
|
| if (callbacks.shouldBlockUntilCompletion())
|
| - return new WaitableCallbackResults;
|
| - return NULL;
|
| + return make_scoped_ptr(new WaitableCallbackResults);
|
| + return scoped_ptr<WaitableCallbackResults>();
|
| }
|
| ~WaitableCallbackResults() {}
|
|
|
| void SetResultsAndSignal(const base::Closure& results_closure) {
|
| results_closure_ = results_closure;
|
| - event_->Signal();
|
| + event_.Signal();
|
| }
|
|
|
| void WaitAndRun() {
|
| {
|
| blink::WebHeap::SafePointScope safe_point;
|
| - event_->Wait();
|
| + event_.Wait();
|
| }
|
| DCHECK(!results_closure_.is_null());
|
| results_closure_.Run();
|
| }
|
|
|
| private:
|
| - WaitableCallbackResults() : event_(new base::WaitableEvent(true, false)) {}
|
| + WaitableCallbackResults() : event_(true, false) {}
|
|
|
| - base::WaitableEvent* event_;
|
| + base::WaitableEvent event_;
|
| base::Closure results_closure_;
|
| DISALLOW_COPY_AND_ASSIGN(WaitableCallbackResults);
|
| };
|
| @@ -198,7 +198,7 @@ void ReadMetadataCallbackAdapter(int thread_id, int callbacks_id,
|
| MakeTuple(web_file_info));
|
| }
|
|
|
| -void ReadDirectoryCallbackAdapater(
|
| +void ReadDirectoryCallbackAdapter(
|
| int thread_id, int callbacks_id, WaitableCallbackResults* waitable_results,
|
| const std::vector<fileapi::DirectoryEntry>& entries,
|
| bool has_more) {
|
| @@ -332,8 +332,9 @@ void WebFileSystemImpl::openFileSystem(
|
| blink::WebFileSystemType type,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::OpenFileSystem,
|
| @@ -341,30 +342,31 @@ void WebFileSystemImpl::openFileSystem(
|
| static_cast<fileapi::FileSystemType>(type),
|
| base::Bind(&OpenFileSystemCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results)),
|
| + waitable_results_ptr),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::resolveURL(
|
| const blink::WebURL& filesystem_url,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::ResolveURL,
|
| MakeTuple(GURL(filesystem_url),
|
| base::Bind(&ResolveURLCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results)),
|
| + waitable_results_ptr),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::deleteFileSystem(
|
| @@ -372,8 +374,9 @@ void WebFileSystemImpl::deleteFileSystem(
|
| blink::WebFileSystemType type,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::DeleteFileSystem,
|
| @@ -381,8 +384,8 @@ void WebFileSystemImpl::deleteFileSystem(
|
| static_cast<fileapi::FileSystemType>(type),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::move(
|
| @@ -390,16 +393,17 @@ void WebFileSystemImpl::move(
|
| const blink::WebURL& dest_path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::Move,
|
| MakeTuple(GURL(src_path), GURL(dest_path),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::copy(
|
| @@ -407,67 +411,71 @@ void WebFileSystemImpl::copy(
|
| const blink::WebURL& dest_path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::Copy,
|
| MakeTuple(GURL(src_path), GURL(dest_path),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::remove(
|
| const blink::WebURL& path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::Remove,
|
| MakeTuple(GURL(path), false /* recursive */,
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::removeRecursively(
|
| const blink::WebURL& path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::Remove,
|
| MakeTuple(GURL(path), true /* recursive */,
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::readMetadata(
|
| const blink::WebURL& path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::ReadMetadata,
|
| MakeTuple(GURL(path),
|
| base::Bind(&ReadMetadataCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results)),
|
| + waitable_results_ptr),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::createFile(
|
| @@ -475,16 +483,17 @@ void WebFileSystemImpl::createFile(
|
| bool exclusive,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::CreateFile,
|
| MakeTuple(GURL(path), exclusive,
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::createDirectory(
|
| @@ -492,67 +501,71 @@ void WebFileSystemImpl::createDirectory(
|
| bool exclusive,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::CreateDirectory,
|
| MakeTuple(GURL(path), exclusive, false /* recursive */,
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::fileExists(
|
| const blink::WebURL& path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::Exists,
|
| MakeTuple(GURL(path), false /* directory */,
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::directoryExists(
|
| const blink::WebURL& path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::Exists,
|
| MakeTuple(GURL(path), true /* directory */,
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::readDirectory(
|
| const blink::WebURL& path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::ReadDirectory,
|
| MakeTuple(GURL(path),
|
| - base::Bind(&ReadDirectoryCallbackAdapater,
|
| + base::Bind(&ReadDirectoryCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results)),
|
| + waitable_results_ptr),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| -base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::createFileWriter(
|
| @@ -560,40 +573,42 @@ void WebFileSystemImpl::createFileWriter(
|
| blink::WebFileWriterClient* client,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::ReadMetadata,
|
| MakeTuple(GURL(path),
|
| base::Bind(&CreateFileWriterCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results),
|
| + waitable_results_ptr,
|
| main_thread_loop_, GURL(path), client),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| void WebFileSystemImpl::createSnapshotFileAndReadMetadata(
|
| const blink::WebURL& path,
|
| WebFileSystemCallbacks callbacks) {
|
| int callbacks_id = RegisterCallbacks(callbacks);
|
| - WaitableCallbackResults* waitable_results =
|
| + scoped_ptr<WaitableCallbackResults> waitable_results =
|
| WaitableCallbackResults::MaybeCreate(callbacks);
|
| + WaitableCallbackResults* waitable_results_ptr = waitable_results.get();
|
| CallDispatcherOnMainThread(
|
| main_thread_loop_.get(),
|
| &FileSystemDispatcher::CreateSnapshotFile,
|
| MakeTuple(GURL(path),
|
| base::Bind(&CreateSnapshotFileCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results),
|
| + waitable_results_ptr,
|
| main_thread_loop_),
|
| base::Bind(&StatusCallbackAdapter,
|
| CurrentWorkerId(), callbacks_id,
|
| - base::Unretained(waitable_results))),
|
| - make_scoped_ptr(waitable_results));
|
| + waitable_results_ptr)),
|
| + waitable_results.Pass());
|
| }
|
|
|
| int WebFileSystemImpl::RegisterCallbacks(
|
|
|