Index: webkit/plugins/ppapi/ppb_file_ref_impl.cc |
=================================================================== |
--- webkit/plugins/ppapi/ppb_file_ref_impl.cc (revision 81454) |
+++ webkit/plugins/ppapi/ppb_file_ref_impl.cc (working copy) |
@@ -6,6 +6,7 @@ |
#include "base/string_util.h" |
#include "base/utf_string_conversions.h" |
+#include "googleurl/src/gurl.h" |
#include "ppapi/c/pp_errors.h" |
#include "webkit/plugins/ppapi/common.h" |
#include "webkit/plugins/ppapi/file_callbacks.h" |
@@ -126,7 +127,7 @@ |
PluginInstance* instance = file_system->instance(); |
if (!instance->delegate()->MakeDirectory( |
- directory_ref->GetSystemPath(), PPBoolToBool(make_ancestors), |
+ directory_ref->GetFileSystemURL(), PPBoolToBool(make_ancestors), |
new FileCallbacks(instance->module()->AsWeakPtr(), directory_ref_id, |
callback, NULL, NULL, NULL))) |
return PP_ERROR_FAILED; |
@@ -150,7 +151,8 @@ |
PluginInstance* instance = file_system->instance(); |
if (!instance->delegate()->Touch( |
- file_ref->GetSystemPath(), base::Time::FromDoubleT(last_access_time), |
+ file_ref->GetFileSystemURL(), |
+ base::Time::FromDoubleT(last_access_time), |
base::Time::FromDoubleT(last_modified_time), |
new FileCallbacks(instance->module()->AsWeakPtr(), file_ref_id, |
callback, NULL, NULL, NULL))) |
@@ -173,7 +175,7 @@ |
PluginInstance* instance = file_system->instance(); |
if (!instance->delegate()->Delete( |
- file_ref->GetSystemPath(), |
+ file_ref->GetFileSystemURL(), |
new FileCallbacks(instance->module()->AsWeakPtr(), file_ref_id, |
callback, NULL, NULL, NULL))) |
return PP_ERROR_FAILED; |
@@ -204,7 +206,7 @@ |
// http://crbug.com/67624 |
PluginInstance* instance = file_system->instance(); |
if (!instance->delegate()->Rename( |
- file_ref->GetSystemPath(), new_file_ref->GetSystemPath(), |
+ file_ref->GetFileSystemURL(), new_file_ref->GetFileSystemURL(), |
new FileCallbacks(instance->module()->AsWeakPtr(), file_ref_id, |
callback, NULL, NULL, NULL))) |
return PP_ERROR_FAILED; |
@@ -320,22 +322,25 @@ |
} |
FilePath PPB_FileRef_Impl::GetSystemPath() const { |
- if (GetFileSystemType() == PP_FILESYSTEMTYPE_EXTERNAL) |
- return system_path_; |
+ if (GetFileSystemType() != PP_FILESYSTEMTYPE_EXTERNAL) { |
+ NOTREACHED(); |
+ return FilePath(); |
+ } |
+ return system_path_; |
+} |
- // Since |virtual_path_| starts with a '/', it is considered an absolute path |
- // on POSIX systems. We need to remove the '/' before calling Append() or we |
- // will run into a DCHECK. |
- FilePath virtual_file_path( |
-#if defined(OS_WIN) |
- UTF8ToWide(virtual_path_.substr(1)) |
-#elif defined(OS_POSIX) |
- virtual_path_.substr(1) |
-#else |
-#error "Unsupported platform." |
-#endif |
- ); |
- return file_system_->root_path().Append(virtual_file_path); |
+GURL PPB_FileRef_Impl::GetFileSystemURL() const { |
+ if (GetFileSystemType() != PP_FILESYSTEMTYPE_LOCALPERSISTENT && |
+ GetFileSystemType() != PP_FILESYSTEMTYPE_LOCALTEMPORARY) { |
+ NOTREACHED(); |
+ return GURL(); |
+ } |
+ if (!virtual_path_.size()) |
+ return file_system_->root_url(); |
+ // Since |virtual_path_| starts with a '/', it looks like an absolute path. |
+ // We need to trim off the '/' before calling Resolve, as FileSystem URLs |
+ // start with a storage type identifier that looks like a path segment. |
+ return file_system_->root_url().Resolve(virtual_path_.substr(1)); |
} |
} // namespace ppapi |