| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/renderer_host/pepper/pepper_file_ref_host.h" | 5 #include "content/browser/renderer_host/pepper/pepper_file_ref_host.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "content/browser/renderer_host/pepper/pepper_external_file_ref_backend.
h" | 9 #include "content/browser/renderer_host/pepper/pepper_external_file_ref_backend.
h" |
| 10 #include "content/browser/renderer_host/pepper/pepper_file_system_browser_host.h
" | 10 #include "content/browser/renderer_host/pepper/pepper_file_system_browser_host.h
" |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 return backend_->GetFileSystemURLSpec(); | 120 return backend_->GetFileSystemURLSpec(); |
| 121 return std::string(); | 121 return std::string(); |
| 122 } | 122 } |
| 123 | 123 |
| 124 base::FilePath PepperFileRefHost::GetExternalPath() const { | 124 base::FilePath PepperFileRefHost::GetExternalPath() const { |
| 125 if (backend_) | 125 if (backend_) |
| 126 return backend_->GetExternalPath(); | 126 return backend_->GetExternalPath(); |
| 127 return base::FilePath(); | 127 return base::FilePath(); |
| 128 } | 128 } |
| 129 | 129 |
| 130 int32_t PepperFileRefHost::HasPermissions(int permissions) const { | 130 int32_t PepperFileRefHost::CanRead() const { |
| 131 if (backend_) | 131 if (backend_) |
| 132 return backend_->HasPermissions(permissions); | 132 return backend_->CanRead(); |
| 133 return PP_ERROR_FAILED; | 133 return PP_ERROR_FAILED; |
| 134 } | 134 } |
| 135 | 135 |
| 136 int32_t PepperFileRefHost::CanWrite() const { |
| 137 if (backend_) |
| 138 return backend_->CanWrite(); |
| 139 return PP_ERROR_FAILED; |
| 140 } |
| 141 |
| 142 int32_t PepperFileRefHost::CanCreate() const { |
| 143 if (backend_) |
| 144 return backend_->CanCreate(); |
| 145 return PP_ERROR_FAILED; |
| 146 } |
| 147 |
| 148 int32_t PepperFileRefHost::CanReadWrite() const { |
| 149 if (backend_) |
| 150 return backend_->CanReadWrite(); |
| 151 return PP_ERROR_FAILED; |
| 152 } |
| 153 |
| 136 int32_t PepperFileRefHost::OnResourceMessageReceived( | 154 int32_t PepperFileRefHost::OnResourceMessageReceived( |
| 137 const IPC::Message& msg, | 155 const IPC::Message& msg, |
| 138 ppapi::host::HostMessageContext* context) { | 156 ppapi::host::HostMessageContext* context) { |
| 139 if (!backend_) | 157 if (!backend_) |
| 140 return PP_ERROR_FAILED; | 158 return PP_ERROR_FAILED; |
| 141 | 159 |
| 142 IPC_BEGIN_MESSAGE_MAP(PepperFileRefHost, msg) | 160 IPC_BEGIN_MESSAGE_MAP(PepperFileRefHost, msg) |
| 143 PPAPI_DISPATCH_HOST_RESOURCE_CALL(PpapiHostMsg_FileRef_MakeDirectory, | 161 PPAPI_DISPATCH_HOST_RESOURCE_CALL(PpapiHostMsg_FileRef_MakeDirectory, |
| 144 OnMakeDirectory); | 162 OnMakeDirectory); |
| 145 PPAPI_DISPATCH_HOST_RESOURCE_CALL(PpapiHostMsg_FileRef_Touch, | 163 PPAPI_DISPATCH_HOST_RESOURCE_CALL(PpapiHostMsg_FileRef_Touch, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 156 PPAPI_DISPATCH_HOST_RESOURCE_CALL_0(PpapiHostMsg_FileRef_GetAbsolutePath, | 174 PPAPI_DISPATCH_HOST_RESOURCE_CALL_0(PpapiHostMsg_FileRef_GetAbsolutePath, |
| 157 OnGetAbsolutePath); | 175 OnGetAbsolutePath); |
| 158 | 176 |
| 159 IPC_END_MESSAGE_MAP() | 177 IPC_END_MESSAGE_MAP() |
| 160 return PP_ERROR_FAILED; | 178 return PP_ERROR_FAILED; |
| 161 } | 179 } |
| 162 | 180 |
| 163 int32_t PepperFileRefHost::OnMakeDirectory( | 181 int32_t PepperFileRefHost::OnMakeDirectory( |
| 164 ppapi::host::HostMessageContext* context, | 182 ppapi::host::HostMessageContext* context, |
| 165 bool make_ancestors) { | 183 bool make_ancestors) { |
| 166 int32_t rv = HasPermissions(fileapi::kCreateFilePermissions); | 184 int32_t rv = CanCreate(); |
| 167 if (rv != PP_OK) | 185 if (rv != PP_OK) |
| 168 return rv; | 186 return rv; |
| 169 return backend_->MakeDirectory(context->MakeReplyMessageContext(), | 187 return backend_->MakeDirectory(context->MakeReplyMessageContext(), |
| 170 make_ancestors); | 188 make_ancestors); |
| 171 } | 189 } |
| 172 | 190 |
| 173 int32_t PepperFileRefHost::OnTouch(ppapi::host::HostMessageContext* context, | 191 int32_t PepperFileRefHost::OnTouch(ppapi::host::HostMessageContext* context, |
| 174 PP_Time last_access_time, | 192 PP_Time last_access_time, |
| 175 PP_Time last_modified_time) { | 193 PP_Time last_modified_time) { |
| 176 // TODO(teravest): Change this to be kWriteFilePermissions here and in | 194 // TODO(teravest): Change this to be kWriteFilePermissions here and in |
| 177 // fileapi_message_filter. | 195 // fileapi_message_filter. |
| 178 int32_t rv = HasPermissions(fileapi::kCreateFilePermissions); | 196 int32_t rv = CanCreate(); |
| 179 if (rv != PP_OK) | 197 if (rv != PP_OK) |
| 180 return rv; | 198 return rv; |
| 181 return backend_->Touch(context->MakeReplyMessageContext(), | 199 return backend_->Touch(context->MakeReplyMessageContext(), |
| 182 last_access_time, | 200 last_access_time, |
| 183 last_modified_time); | 201 last_modified_time); |
| 184 } | 202 } |
| 185 | 203 |
| 186 int32_t PepperFileRefHost::OnDelete(ppapi::host::HostMessageContext* context) { | 204 int32_t PepperFileRefHost::OnDelete(ppapi::host::HostMessageContext* context) { |
| 187 int32_t rv = HasPermissions(fileapi::kWriteFilePermissions); | 205 int32_t rv = CanWrite(); |
| 188 if (rv != PP_OK) | 206 if (rv != PP_OK) |
| 189 return rv; | 207 return rv; |
| 190 return backend_->Delete(context->MakeReplyMessageContext()); | 208 return backend_->Delete(context->MakeReplyMessageContext()); |
| 191 } | 209 } |
| 192 | 210 |
| 193 int32_t PepperFileRefHost::OnRename(ppapi::host::HostMessageContext* context, | 211 int32_t PepperFileRefHost::OnRename(ppapi::host::HostMessageContext* context, |
| 194 PP_Resource new_file_ref) { | 212 PP_Resource new_file_ref) { |
| 195 int32_t rv = HasPermissions( | 213 int32_t rv = CanReadWrite(); |
| 196 fileapi::kReadFilePermissions | fileapi::kWriteFilePermissions); | |
| 197 if (rv != PP_OK) | 214 if (rv != PP_OK) |
| 198 return rv; | 215 return rv; |
| 199 | 216 |
| 200 ResourceHost* resource_host = | 217 ResourceHost* resource_host = |
| 201 host_->GetPpapiHost()->GetResourceHost(new_file_ref); | 218 host_->GetPpapiHost()->GetResourceHost(new_file_ref); |
| 202 if (!resource_host) | 219 if (!resource_host) |
| 203 return PP_ERROR_BADRESOURCE; | 220 return PP_ERROR_BADRESOURCE; |
| 204 | 221 |
| 205 PepperFileRefHost* file_ref_host = resource_host->AsPepperFileRefHost(); | 222 PepperFileRefHost* file_ref_host = resource_host->AsPepperFileRefHost(); |
| 206 if (!file_ref_host) | 223 if (!file_ref_host) |
| 207 return PP_ERROR_BADRESOURCE; | 224 return PP_ERROR_BADRESOURCE; |
| 208 | 225 |
| 209 rv = file_ref_host->HasPermissions(fileapi::kCreateFilePermissions); | 226 rv = file_ref_host->CanCreate(); |
| 210 if (rv != PP_OK) | 227 if (rv != PP_OK) |
| 211 return rv; | 228 return rv; |
| 212 | 229 |
| 213 return backend_->Rename(context->MakeReplyMessageContext(), | 230 return backend_->Rename(context->MakeReplyMessageContext(), |
| 214 file_ref_host); | 231 file_ref_host); |
| 215 } | 232 } |
| 216 | 233 |
| 217 int32_t PepperFileRefHost::OnQuery(ppapi::host::HostMessageContext* context) { | 234 int32_t PepperFileRefHost::OnQuery(ppapi::host::HostMessageContext* context) { |
| 218 int32_t rv = HasPermissions(fileapi::kReadFilePermissions); | 235 int32_t rv = CanRead(); |
| 219 if (rv != PP_OK) | 236 if (rv != PP_OK) |
| 220 return rv; | 237 return rv; |
| 221 return backend_->Query(context->MakeReplyMessageContext()); | 238 return backend_->Query(context->MakeReplyMessageContext()); |
| 222 } | 239 } |
| 223 | 240 |
| 224 int32_t PepperFileRefHost::OnReadDirectoryEntries( | 241 int32_t PepperFileRefHost::OnReadDirectoryEntries( |
| 225 ppapi::host::HostMessageContext* context) { | 242 ppapi::host::HostMessageContext* context) { |
| 226 int32_t rv = HasPermissions(fileapi::kReadFilePermissions); | 243 int32_t rv = CanRead(); |
| 227 if (rv != PP_OK) | 244 if (rv != PP_OK) |
| 228 return rv; | 245 return rv; |
| 229 return backend_->ReadDirectoryEntries(context->MakeReplyMessageContext()); | 246 return backend_->ReadDirectoryEntries(context->MakeReplyMessageContext()); |
| 230 } | 247 } |
| 231 | 248 |
| 232 int32_t PepperFileRefHost::OnGetAbsolutePath( | 249 int32_t PepperFileRefHost::OnGetAbsolutePath( |
| 233 ppapi::host::HostMessageContext* context) { | 250 ppapi::host::HostMessageContext* context) { |
| 234 if (!host_->GetPpapiHost()->permissions().HasPermission( | 251 if (!host_->GetPpapiHost()->permissions().HasPermission( |
| 235 ppapi::PERMISSION_PRIVATE)) | 252 ppapi::PERMISSION_PRIVATE)) |
| 236 return PP_ERROR_NOACCESS; | 253 return PP_ERROR_NOACCESS; |
| 237 return backend_->GetAbsolutePath(context->MakeReplyMessageContext()); | 254 return backend_->GetAbsolutePath(context->MakeReplyMessageContext()); |
| 238 } | 255 } |
| 239 | 256 |
| 240 } // namespace content | 257 } // namespace content |
| OLD | NEW |