1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "webkit/browser/fileapi/remove_operation_delegate.h"
8 #include "webkit/browser/fileapi/file_system_context.h"
9 #include "webkit/browser/fileapi/file_system_operation_runner.h"
13 RemoveOperationDelegate::RemoveOperationDelegate(
14 FileSystemContext
* file_system_context
,
15 const FileSystemURL
& url
,
16 const StatusCallback
& callback
)
17 : RecursiveOperationDelegate(file_system_context
),
23 RemoveOperationDelegate::~RemoveOperationDelegate() {}
25 void RemoveOperationDelegate::Run() {
26 operation_runner()->RemoveFile(url_
, base::Bind(
27 &RemoveOperationDelegate::DidTryRemoveFile
, weak_factory_
.GetWeakPtr()));
30 void RemoveOperationDelegate::RunRecursively() {
31 StartRecursiveOperation(url_
, callback_
);
34 void RemoveOperationDelegate::ProcessFile(const FileSystemURL
& url
,
35 const StatusCallback
& callback
) {
36 operation_runner()->RemoveFile(
38 base::Bind(&RemoveOperationDelegate::DidRemoveFile
,
39 weak_factory_
.GetWeakPtr(), callback
));
42 void RemoveOperationDelegate::ProcessDirectory(const FileSystemURL
& url
,
43 const StatusCallback
& callback
) {
44 callback
.Run(base::PLATFORM_FILE_OK
);
47 void RemoveOperationDelegate::PostProcessDirectory(
48 const FileSystemURL
& url
, const StatusCallback
& callback
) {
49 operation_runner()->RemoveDirectory(url
, callback
);
52 void RemoveOperationDelegate::DidTryRemoveFile(
53 base::PlatformFileError error
) {
54 if (error
!= base::PLATFORM_FILE_ERROR_NOT_A_FILE
&&
55 error
!= base::PLATFORM_FILE_ERROR_SECURITY
) {
59 operation_runner()->RemoveDirectory(
61 base::Bind(&RemoveOperationDelegate::DidTryRemoveDirectory
,
62 weak_factory_
.GetWeakPtr(), error
));
65 void RemoveOperationDelegate::DidTryRemoveDirectory(
66 base::PlatformFileError remove_file_error
,
67 base::PlatformFileError remove_directory_error
) {
69 remove_directory_error
== base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY
?
71 remove_directory_error
);
74 void RemoveOperationDelegate::DidRemoveFile(const StatusCallback
& callback
,
75 base::PlatformFileError error
) {
76 if (error
== base::PLATFORM_FILE_ERROR_NOT_FOUND
) {
77 callback
.Run(base::PLATFORM_FILE_OK
);
83 } // namespace fileapi