| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/proxy/file_io_resource.h" | 5 #include "ppapi/proxy/file_io_resource.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/task_runner_util.h" | 8 #include "base/task_runner_util.h" |
| 9 #include "ipc/ipc_message.h" | 9 #include "ipc/ipc_message.h" |
| 10 #include "ppapi/c/pp_errors.h" | 10 #include "ppapi/c/pp_errors.h" |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 // Release the proxy lock while making a potentially slow file call. | 147 // Release the proxy lock while making a potentially slow file call. |
| 148 ProxyAutoUnlock unlock; | 148 ProxyAutoUnlock unlock; |
| 149 result = query_op->DoWork(); | 149 result = query_op->DoWork(); |
| 150 } | 150 } |
| 151 return OnQueryComplete(query_op, info, result); | 151 return OnQueryComplete(query_op, info, result); |
| 152 } | 152 } |
| 153 | 153 |
| 154 // For the non-blocking case, post a task to the file thread and add a | 154 // For the non-blocking case, post a task to the file thread and add a |
| 155 // completion task to write the result. | 155 // completion task to write the result. |
| 156 base::PostTaskAndReplyWithResult( | 156 base::PostTaskAndReplyWithResult( |
| 157 PpapiGlobals::Get()->GetFileTaskRunner(pp_instance()), | 157 PpapiGlobals::Get()->GetFileTaskRunner(), |
| 158 FROM_HERE, | 158 FROM_HERE, |
| 159 Bind(&FileIOResource::QueryOp::DoWork, query_op), | 159 Bind(&FileIOResource::QueryOp::DoWork, query_op), |
| 160 RunWhileLocked(Bind(&TrackedCallback::Run, callback))); | 160 RunWhileLocked(Bind(&TrackedCallback::Run, callback))); |
| 161 callback->set_completion_task( | 161 callback->set_completion_task( |
| 162 Bind(&FileIOResource::OnQueryComplete, this, query_op, info)); | 162 Bind(&FileIOResource::OnQueryComplete, this, query_op, info)); |
| 163 | 163 |
| 164 return PP_OK_COMPLETIONPENDING; | 164 return PP_OK_COMPLETIONPENDING; |
| 165 } | 165 } |
| 166 | 166 |
| 167 int32_t FileIOResource::Touch(PP_Time last_access_time, | 167 int32_t FileIOResource::Touch(PP_Time last_access_time, |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 { | 310 { |
| 311 // Release the proxy lock while making a potentially slow file call. | 311 // Release the proxy lock while making a potentially slow file call. |
| 312 ProxyAutoUnlock unlock; | 312 ProxyAutoUnlock unlock; |
| 313 result = read_op->DoWork(); | 313 result = read_op->DoWork(); |
| 314 } | 314 } |
| 315 return OnReadComplete(read_op, array_output, result); | 315 return OnReadComplete(read_op, array_output, result); |
| 316 } | 316 } |
| 317 | 317 |
| 318 // For the non-blocking case, post a task to the file thread. | 318 // For the non-blocking case, post a task to the file thread. |
| 319 base::PostTaskAndReplyWithResult( | 319 base::PostTaskAndReplyWithResult( |
| 320 PpapiGlobals::Get()->GetFileTaskRunner(pp_instance()), | 320 PpapiGlobals::Get()->GetFileTaskRunner(), |
| 321 FROM_HERE, | 321 FROM_HERE, |
| 322 Bind(&FileIOResource::ReadOp::DoWork, read_op), | 322 Bind(&FileIOResource::ReadOp::DoWork, read_op), |
| 323 RunWhileLocked(Bind(&TrackedCallback::Run, callback))); | 323 RunWhileLocked(Bind(&TrackedCallback::Run, callback))); |
| 324 callback->set_completion_task( | 324 callback->set_completion_task( |
| 325 Bind(&FileIOResource::OnReadComplete, this, read_op, array_output)); | 325 Bind(&FileIOResource::OnReadComplete, this, read_op, array_output)); |
| 326 | 326 |
| 327 return PP_OK_COMPLETIONPENDING; | 327 return PP_OK_COMPLETIONPENDING; |
| 328 } | 328 } |
| 329 | 329 |
| 330 void FileIOResource::CloseFileHandle() { | 330 void FileIOResource::CloseFileHandle() { |
| 331 if (file_handle_ != base::kInvalidPlatformFileValue) { | 331 if (file_handle_ != base::kInvalidPlatformFileValue) { |
| 332 // Close our local fd on the file thread. | 332 // Close our local fd on the file thread. |
| 333 base::TaskRunner* file_task_runner = | 333 base::TaskRunner* file_task_runner = |
| 334 PpapiGlobals::Get()->GetFileTaskRunner(pp_instance()); | 334 PpapiGlobals::Get()->GetFileTaskRunner(); |
| 335 file_task_runner->PostTask(FROM_HERE, | 335 file_task_runner->PostTask(FROM_HERE, |
| 336 base::Bind(&DoClose, file_handle_)); | 336 base::Bind(&DoClose, file_handle_)); |
| 337 | 337 |
| 338 file_handle_ = base::kInvalidPlatformFileValue; | 338 file_handle_ = base::kInvalidPlatformFileValue; |
| 339 } | 339 } |
| 340 } | 340 } |
| 341 | 341 |
| 342 int32_t FileIOResource::OnQueryComplete(scoped_refptr<QueryOp> query_op, | 342 int32_t FileIOResource::OnQueryComplete(scoped_refptr<QueryOp> query_op, |
| 343 PP_FileInfo* info, | 343 PP_FileInfo* info, |
| 344 int32_t result) { | 344 int32_t result) { |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 428 *output_handle = IPC::PlatformFileForTransitToPlatformFile(transit_file); | 428 *output_handle = IPC::PlatformFileForTransitToPlatformFile(transit_file); |
| 429 | 429 |
| 430 // End this operation now, so the user's callback can execute another FileIO | 430 // End this operation now, so the user's callback can execute another FileIO |
| 431 // operation, assuming there are no other pending operations. | 431 // operation, assuming there are no other pending operations. |
| 432 state_manager_.SetOperationFinished(); | 432 state_manager_.SetOperationFinished(); |
| 433 callback->Run(result); | 433 callback->Run(result); |
| 434 } | 434 } |
| 435 | 435 |
| 436 } // namespace proxy | 436 } // namespace proxy |
| 437 } // namespace ppapi | 437 } // namespace ppapi |
| OLD | NEW |