summaryrefslogtreecommitdiffstats
path: root/webkit/plugins/ppapi/ppb_file_ref_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/plugins/ppapi/ppb_file_ref_impl.cc')
-rw-r--r--webkit/plugins/ppapi/ppb_file_ref_impl.cc43
1 files changed, 19 insertions, 24 deletions
diff --git a/webkit/plugins/ppapi/ppb_file_ref_impl.cc b/webkit/plugins/ppapi/ppb_file_ref_impl.cc
index b048caf..c2ec5b2 100644
--- a/webkit/plugins/ppapi/ppb_file_ref_impl.cc
+++ b/webkit/plugins/ppapi/ppb_file_ref_impl.cc
@@ -6,7 +6,6 @@
#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"
@@ -127,7 +126,7 @@ int32_t MakeDirectory(PP_Resource directory_ref_id,
PluginInstance* instance = file_system->instance();
if (!instance->delegate()->MakeDirectory(
- directory_ref->GetFileSystemURL(), PPBoolToBool(make_ancestors),
+ directory_ref->GetSystemPath(), PPBoolToBool(make_ancestors),
new FileCallbacks(instance->module()->AsWeakPtr(), directory_ref_id,
callback, NULL, NULL, NULL)))
return PP_ERROR_FAILED;
@@ -151,8 +150,7 @@ int32_t Touch(PP_Resource file_ref_id,
PluginInstance* instance = file_system->instance();
if (!instance->delegate()->Touch(
- file_ref->GetFileSystemURL(),
- base::Time::FromDoubleT(last_access_time),
+ file_ref->GetSystemPath(), base::Time::FromDoubleT(last_access_time),
base::Time::FromDoubleT(last_modified_time),
new FileCallbacks(instance->module()->AsWeakPtr(), file_ref_id,
callback, NULL, NULL, NULL)))
@@ -175,7 +173,7 @@ int32_t Delete(PP_Resource file_ref_id,
PluginInstance* instance = file_system->instance();
if (!instance->delegate()->Delete(
- file_ref->GetFileSystemURL(),
+ file_ref->GetSystemPath(),
new FileCallbacks(instance->module()->AsWeakPtr(), file_ref_id,
callback, NULL, NULL, NULL)))
return PP_ERROR_FAILED;
@@ -206,7 +204,7 @@ int32_t Rename(PP_Resource file_ref_id,
// http://crbug.com/67624
PluginInstance* instance = file_system->instance();
if (!instance->delegate()->Rename(
- file_ref->GetFileSystemURL(), new_file_ref->GetFileSystemURL(),
+ file_ref->GetSystemPath(), new_file_ref->GetSystemPath(),
new FileCallbacks(instance->module()->AsWeakPtr(), file_ref_id,
callback, NULL, NULL, NULL)))
return PP_ERROR_FAILED;
@@ -322,25 +320,22 @@ std::string PPB_FileRef_Impl::GetPath() const {
}
FilePath PPB_FileRef_Impl::GetSystemPath() const {
- if (GetFileSystemType() != PP_FILESYSTEMTYPE_EXTERNAL) {
- NOTREACHED();
- return FilePath();
- }
- return system_path_;
-}
+ if (GetFileSystemType() == PP_FILESYSTEMTYPE_EXTERNAL)
+ return system_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));
+ // 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);
}
} // namespace ppapi