Chromium Code Reviews| Index: content/browser/renderer_host/pepper/pepper_file_io_host.cc |
| diff --git a/content/browser/renderer_host/pepper/pepper_file_io_host.cc b/content/browser/renderer_host/pepper/pepper_file_io_host.cc |
| index d9a11b7cc440a3eb2dc011f595e70b53de988957..e1e59a5558fdd5bae9ba0b9746c4c354291843a4 100644 |
| --- a/content/browser/renderer_host/pepper/pepper_file_io_host.cc |
| +++ b/content/browser/renderer_host/pepper/pepper_file_io_host.cc |
| @@ -78,6 +78,29 @@ bool FileOpenForWrite(int32_t open_flags) { |
| return (open_flags & (PP_FILEOPENFLAG_WRITE | PP_FILEOPENFLAG_APPEND)) != 0; |
| } |
| +void FileCloser(base::File auto_close) { |
| +} |
| + |
| +void DidCloseFile(const base::Closure& on_close_callback) { |
| + if (!on_close_callback.is_null()) |
| + on_close_callback.Run(); |
| +} |
| + |
| +void DidOpenFile(base::WeakPtr<PepperFileIOHost> file_host, |
| + fileapi::FileSystemOperation::OpenFileCallback callback, |
| + base::File file, |
| + const base::Closure& on_close_callback) { |
| + if (file_host) { |
| + callback.Run(file.Pass(), on_close_callback); |
| + } else { |
| + BrowserThread::PostTaskAndReply( |
| + BrowserThread::FILE, |
| + FROM_HERE, |
| + base::Bind(&FileCloser, Passed(&file)), |
|
bbudge
2014/06/03 23:43:09
nit: base::Passed
rvargas (doing something else)
2014/06/04 01:36:12
Done.
|
| + base::Bind(&DidCloseFile, on_close_callback)); |
| + } |
| +} |
| + |
| } // namespace |
| PepperFileIOHost::PepperFileIOHost(BrowserPpapiHostImpl* host, |
| @@ -90,8 +113,7 @@ PepperFileIOHost::PepperFileIOHost(BrowserPpapiHostImpl* host, |
| open_flags_(0), |
| file_system_type_(PP_FILESYSTEMTYPE_INVALID), |
| max_written_offset_(0), |
| - check_quota_(false), |
| - weak_factory_(this) { |
| + check_quota_(false) { |
| int unused; |
| if (!host->GetRenderFrameIDsForInstance( |
| instance, &render_process_id_, &unused)) { |
| @@ -184,7 +206,7 @@ int32_t PepperFileIOHost::OnHostMsgOpen( |
| FROM_HERE, |
| base::Bind(&GetUIThreadStuffForInternalFileSystems, render_process_id_), |
| base::Bind(&PepperFileIOHost::GotUIThreadStuffForInternalFileSystems, |
| - weak_factory_.GetWeakPtr(), |
| + AsWeakPtr(), |
| context->MakeReplyMessageContext(), |
| platform_file_flags)); |
| } else { |
| @@ -196,7 +218,7 @@ int32_t PepperFileIOHost::OnHostMsgOpen( |
| FROM_HERE, |
| base::Bind(&GetResolvedRenderProcessId, render_process_id_), |
| base::Bind(&PepperFileIOHost::GotResolvedRenderProcessId, |
| - weak_factory_.GetWeakPtr(), |
| + AsWeakPtr(), |
| context->MakeReplyMessageContext(), |
| path, |
| platform_file_flags)); |
| @@ -227,12 +249,15 @@ void PepperFileIOHost::GotUIThreadStuffForInternalFileSystems( |
| DCHECK(file_system_host_.get()); |
| DCHECK(file_system_host_->GetFileSystemOperationRunner()); |
| + |
| file_system_host_->GetFileSystemOperationRunner()->OpenFile( |
| file_system_url_, |
| platform_file_flags, |
| - base::Bind(&PepperFileIOHost::DidOpenInternalFile, |
| - weak_factory_.GetWeakPtr(), |
| - reply_context)); |
| + base::Bind(&DidOpenFile, |
| + AsWeakPtr(), |
| + base::Bind(&PepperFileIOHost::DidOpenInternalFile, |
| + AsWeakPtr(), |
| + reply_context))); |
| } |
| void PepperFileIOHost::DidOpenInternalFile( |
| @@ -248,7 +273,7 @@ void PepperFileIOHost::DidOpenInternalFile( |
| this, |
| file_system_url_, |
| base::Bind(&PepperFileIOHost::DidOpenQuotaFile, |
| - weak_factory_.GetWeakPtr(), |
| + AsWeakPtr(), |
| reply_context, |
| base::Passed(&file))); |
| return; |
| @@ -273,7 +298,7 @@ void PepperFileIOHost::GotResolvedRenderProcessId( |
| path, |
| file_flags, |
| base::Bind(&PepperFileIOHost::OnOpenProxyCallback, |
| - weak_factory_.GetWeakPtr(), |
| + AsWeakPtr(), |
| reply_context)); |
| } |
| @@ -290,7 +315,7 @@ int32_t PepperFileIOHost::OnHostMsgTouch( |
| PPTimeToTime(last_access_time), |
| PPTimeToTime(last_modified_time), |
| base::Bind(&PepperFileIOHost::ExecutePlatformGeneralCallback, |
| - weak_factory_.GetWeakPtr(), |
| + AsWeakPtr(), |
| context->MakeReplyMessageContext()))) { |
| return PP_ERROR_FAILED; |
| } |
| @@ -315,7 +340,7 @@ int32_t PepperFileIOHost::OnHostMsgSetLength( |
| if (!file_.SetLength( |
| length, |
| base::Bind(&PepperFileIOHost::ExecutePlatformGeneralCallback, |
| - weak_factory_.GetWeakPtr(), |
| + AsWeakPtr(), |
| context->MakeReplyMessageContext()))) { |
| return PP_ERROR_FAILED; |
| } |
| @@ -333,7 +358,7 @@ int32_t PepperFileIOHost::OnHostMsgFlush( |
| if (!file_.Flush( |
| base::Bind(&PepperFileIOHost::ExecutePlatformGeneralCallback, |
| - weak_factory_.GetWeakPtr(), |
| + AsWeakPtr(), |
| context->MakeReplyMessageContext()))) { |
| return PP_ERROR_FAILED; |
| } |
| @@ -352,7 +377,7 @@ int32_t PepperFileIOHost::OnHostMsgClose( |
| if (file_.IsValid()) { |
| file_.Close(base::Bind(&PepperFileIOHost::DidCloseFile, |
| - weak_factory_.GetWeakPtr())); |
| + AsWeakPtr())); |
| } |
| return PP_OK; |
| } |
| @@ -391,7 +416,7 @@ int32_t PepperFileIOHost::OnHostMsgRequestOSFileHandle( |
| render_process_id_, |
| document_url), |
| base::Bind(&PepperFileIOHost::GotPluginAllowedToCallRequestOSFileHandle, |
| - weak_factory_.GetWeakPtr(), |
| + AsWeakPtr(), |
| context->MakeReplyMessageContext())); |
| return PP_OK_COMPLETIONPENDING; |
| } |