summaryrefslogtreecommitdiff
path: root/chromium/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc')
-rw-r--r--chromium/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc55
1 files changed, 47 insertions, 8 deletions
diff --git a/chromium/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc b/chromium/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc
index cdc4ab29cde..628f9c9bab7 100644
--- a/chromium/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc
+++ b/chromium/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc
@@ -7,7 +7,7 @@
#include <string.h>
#include "base/files/file_path.h"
-#include "base/files/file_util_proxy.h"
+#include "base/files/file_util.h"
#include "base/task_scheduler/post_task.h"
#include "content/browser/child_process_security_policy_impl.h"
#include "content/public/browser/browser_thread.h"
@@ -20,6 +20,43 @@
namespace content {
+namespace {
+
+struct GetFileInfoResults {
+ base::File::Error error;
+ base::File::Info info;
+};
+
+using GetFileInfoCallback =
+ base::OnceCallback<void(base::File::Error, const base::File::Info&)>;
+
+GetFileInfoResults DoGetFileInfo(const base::FilePath& path) {
+ GetFileInfoResults results;
+ if (!base::PathExists(path)) {
+ results.error = base::File::FILE_ERROR_NOT_FOUND;
+ return results;
+ }
+ results.error = base::GetFileInfo(path, &results.info)
+ ? base::File::FILE_OK
+ : base::File::FILE_ERROR_FAILED;
+ return results;
+}
+
+void SendGetFileInfoResults(GetFileInfoCallback callback,
+ const GetFileInfoResults& results) {
+ std::move(callback).Run(results.error, results.info);
+}
+
+base::File::Error CallTouchFile(const base::FilePath& path,
+ PP_Time last_access_time,
+ PP_Time last_modified_time) {
+ bool result = base::TouchFile(path, ppapi::PPTimeToTime(last_access_time),
+ ppapi::PPTimeToTime(last_modified_time));
+ return result ? base::File::FILE_OK : base::File::FILE_ERROR_FAILED;
+}
+
+} // namespace
+
PepperExternalFileRefBackend::PepperExternalFileRefBackend(
ppapi::host::PpapiHost* host,
int render_process_id,
@@ -46,9 +83,9 @@ int32_t PepperExternalFileRefBackend::Touch(
PP_Time last_access_time,
PP_Time last_modified_time) {
IPC::Message reply_msg = PpapiPluginMsg_FileRef_TouchReply();
- base::FileUtilProxy::Touch(
- task_runner_.get(), path_, ppapi::PPTimeToTime(last_access_time),
- ppapi::PPTimeToTime(last_modified_time),
+ base::PostTaskAndReplyWithResult(
+ task_runner_.get(), FROM_HERE,
+ BindOnce(&CallTouchFile, path_, last_access_time, last_modified_time),
base::BindOnce(&PepperExternalFileRefBackend::DidFinish,
weak_factory_.GetWeakPtr(), reply_context, reply_msg));
return PP_OK_COMPLETIONPENDING;
@@ -69,10 +106,12 @@ int32_t PepperExternalFileRefBackend::Rename(
int32_t PepperExternalFileRefBackend::Query(
ppapi::host::ReplyMessageContext reply_context) {
- bool ok = base::FileUtilProxy::GetFileInfo(
- task_runner_.get(), path_,
- base::BindOnce(&PepperExternalFileRefBackend::GetMetadataComplete,
- weak_factory_.GetWeakPtr(), reply_context));
+ bool ok = base::PostTaskAndReplyWithResult(
+ task_runner_.get(), FROM_HERE, base::BindOnce(&DoGetFileInfo, path_),
+ base::BindOnce(
+ &SendGetFileInfoResults,
+ base::BindOnce(&PepperExternalFileRefBackend::GetMetadataComplete,
+ weak_factory_.GetWeakPtr(), reply_context)));
DCHECK(ok);
return PP_OK_COMPLETIONPENDING;
}