OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "webkit/plugins/ppapi/ppb_file_io_impl.h" | 5 #include "webkit/plugins/ppapi/ppb_file_io_impl.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/callback.h" | 8 #include "base/callback.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/file_util_proxy.h" | 10 #include "base/file_util_proxy.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 PPB_FileIO_Impl::CallbackEntry::CallbackEntry(const CallbackEntry& entry) | 44 PPB_FileIO_Impl::CallbackEntry::CallbackEntry(const CallbackEntry& entry) |
45 : callback(entry.callback), | 45 : callback(entry.callback), |
46 read_buffer(entry.read_buffer) { | 46 read_buffer(entry.read_buffer) { |
47 } | 47 } |
48 | 48 |
49 PPB_FileIO_Impl::CallbackEntry::~CallbackEntry() { | 49 PPB_FileIO_Impl::CallbackEntry::~CallbackEntry() { |
50 } | 50 } |
51 | 51 |
52 PPB_FileIO_Impl::PPB_FileIO_Impl(PP_Instance instance) | 52 PPB_FileIO_Impl::PPB_FileIO_Impl(PP_Instance instance) |
53 : Resource(instance), | 53 : Resource(instance), |
54 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), | |
55 file_(base::kInvalidPlatformFileValue), | 54 file_(base::kInvalidPlatformFileValue), |
56 file_system_type_(PP_FILESYSTEMTYPE_INVALID), | 55 file_system_type_(PP_FILESYSTEMTYPE_INVALID), |
57 pending_op_(OPERATION_NONE), | 56 pending_op_(OPERATION_NONE), |
58 info_(NULL), | 57 info_(NULL), |
59 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 58 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
60 } | 59 } |
61 | 60 |
62 PPB_FileIO_Impl::~PPB_FileIO_Impl() { | 61 PPB_FileIO_Impl::~PPB_FileIO_Impl() { |
63 Close(); | 62 Close(); |
64 } | 63 } |
65 | 64 |
66 PPB_FileIO_API* PPB_FileIO_Impl::AsPPB_FileIO_API() { | 65 PPB_FileIO_API* PPB_FileIO_Impl::AsPPB_FileIO_API() { |
67 return this; | 66 return this; |
68 } | 67 } |
69 | 68 |
(...skipping 21 matching lines...) Expand all Loading... |
91 if (file_system_type_ != PP_FILESYSTEMTYPE_LOCALPERSISTENT && | 90 if (file_system_type_ != PP_FILESYSTEMTYPE_LOCALPERSISTENT && |
92 file_system_type_ != PP_FILESYSTEMTYPE_LOCALTEMPORARY && | 91 file_system_type_ != PP_FILESYSTEMTYPE_LOCALTEMPORARY && |
93 file_system_type_ != PP_FILESYSTEMTYPE_EXTERNAL) | 92 file_system_type_ != PP_FILESYSTEMTYPE_EXTERNAL) |
94 return PP_ERROR_FAILED; | 93 return PP_ERROR_FAILED; |
95 | 94 |
96 if (file_ref->HasValidFileSystem()) { | 95 if (file_ref->HasValidFileSystem()) { |
97 file_system_url_ = file_ref->GetFileSystemURL(); | 96 file_system_url_ = file_ref->GetFileSystemURL(); |
98 if (!plugin_delegate->AsyncOpenFileSystemURL( | 97 if (!plugin_delegate->AsyncOpenFileSystemURL( |
99 file_system_url_, flags, | 98 file_system_url_, flags, |
100 base::Bind(&PPB_FileIO_Impl::AsyncOpenFileCallback, | 99 base::Bind(&PPB_FileIO_Impl::AsyncOpenFileCallback, |
101 weak_ptr_factory_.GetWeakPtr()))) | 100 weak_factory_.GetWeakPtr()))) |
102 return PP_ERROR_FAILED; | 101 return PP_ERROR_FAILED; |
103 } else { | 102 } else { |
104 if (file_system_type_ != PP_FILESYSTEMTYPE_EXTERNAL) | 103 if (file_system_type_ != PP_FILESYSTEMTYPE_EXTERNAL) |
105 return PP_ERROR_FAILED; | 104 return PP_ERROR_FAILED; |
106 if (!plugin_delegate->AsyncOpenFile( | 105 if (!plugin_delegate->AsyncOpenFile( |
107 file_ref->GetSystemPath(), flags, | 106 file_ref->GetSystemPath(), flags, |
108 base::Bind(&PPB_FileIO_Impl::AsyncOpenFileCallback, | 107 base::Bind(&PPB_FileIO_Impl::AsyncOpenFileCallback, |
109 weak_ptr_factory_.GetWeakPtr()))) | 108 weak_factory_.GetWeakPtr()))) |
110 return PP_ERROR_FAILED; | 109 return PP_ERROR_FAILED; |
111 } | 110 } |
112 | 111 |
113 RegisterCallback(OPERATION_EXCLUSIVE, callback, NULL); | 112 RegisterCallback(OPERATION_EXCLUSIVE, callback, NULL); |
114 return PP_OK_COMPLETIONPENDING; | 113 return PP_OK_COMPLETIONPENDING; |
115 } | 114 } |
116 | 115 |
117 int32_t PPB_FileIO_Impl::Query(PP_FileInfo* info, | 116 int32_t PPB_FileIO_Impl::Query(PP_FileInfo* info, |
118 PP_CompletionCallback callback) { | 117 PP_CompletionCallback callback) { |
119 int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE, callback); | 118 int32_t rv = CommonCallValidation(true, OPERATION_EXCLUSIVE, callback); |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 if (error_code != base::PLATFORM_FILE_OK) { | 480 if (error_code != base::PLATFORM_FILE_OK) { |
482 RunAndRemoveFirstPendingCallback( | 481 RunAndRemoveFirstPendingCallback( |
483 PlatformFileErrorToPepperError(error_code)); | 482 PlatformFileErrorToPepperError(error_code)); |
484 } else { | 483 } else { |
485 RunAndRemoveFirstPendingCallback(bytes_written); | 484 RunAndRemoveFirstPendingCallback(bytes_written); |
486 } | 485 } |
487 } | 486 } |
488 | 487 |
489 } // namespace ppapi | 488 } // namespace ppapi |
490 } // namespace webkit | 489 } // namespace webkit |
OLD | NEW |