summaryrefslogtreecommitdiffstats
path: root/webkit/plugins
diff options
context:
space:
mode:
authorericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-16 00:02:53 +0000
committerericu@google.com <ericu@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-16 00:02:53 +0000
commit07c3d212963a1638659c4130f05bd5196957b2f6 (patch)
treef9fcfd54a7e26b443b1b941f80475725cb4d79cd /webkit/plugins
parent5800f19aa9967928eca31752678ac7d8e4e0cd1d (diff)
downloadchromium_src-07c3d212963a1638659c4130f05bd5196957b2f6.zip
chromium_src-07c3d212963a1638659c4130f05bd5196957b2f6.tar.gz
chromium_src-07c3d212963a1638659c4130f05bd5196957b2f6.tar.bz2
Let Pepper open FileSystem files again.
TEST=none [existing tests, but they're not currently run automatically] BUG=none Review URL: http://codereview.chromium.org/6850027 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81837 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/plugins')
-rw-r--r--webkit/plugins/ppapi/mock_plugin_delegate.cc5
-rw-r--r--webkit/plugins/ppapi/mock_plugin_delegate.h3
-rw-r--r--webkit/plugins/ppapi/plugin_delegate.h3
-rw-r--r--webkit/plugins/ppapi/ppb_file_io_impl.cc25
-rw-r--r--webkit/plugins/ppapi/ppb_file_ref_impl.cc4
5 files changed, 33 insertions, 7 deletions
diff --git a/webkit/plugins/ppapi/mock_plugin_delegate.cc b/webkit/plugins/ppapi/mock_plugin_delegate.cc
index a893956..b0185ab 100644
--- a/webkit/plugins/ppapi/mock_plugin_delegate.cc
+++ b/webkit/plugins/ppapi/mock_plugin_delegate.cc
@@ -77,6 +77,11 @@ bool MockPluginDelegate::AsyncOpenFile(const FilePath& path,
return false;
}
+bool MockPluginDelegate::AsyncOpenFileSystemURL(
+ const GURL& path, int flags, AsyncOpenFileCallback* callback) {
+ return false;
+}
+
bool MockPluginDelegate::OpenFileSystem(
const GURL& url,
fileapi::FileSystemType type,
diff --git a/webkit/plugins/ppapi/mock_plugin_delegate.h b/webkit/plugins/ppapi/mock_plugin_delegate.h
index 557d7f3..98f769f 100644
--- a/webkit/plugins/ppapi/mock_plugin_delegate.h
+++ b/webkit/plugins/ppapi/mock_plugin_delegate.h
@@ -37,6 +37,9 @@ class MockPluginDelegate : public PluginDelegate {
virtual bool AsyncOpenFile(const FilePath& path,
int flags,
AsyncOpenFileCallback* callback);
+ virtual bool AsyncOpenFileSystemURL(const GURL& path,
+ int flags,
+ AsyncOpenFileCallback* callback);
virtual bool OpenFileSystem(
const GURL& url,
fileapi::FileSystemType type,
diff --git a/webkit/plugins/ppapi/plugin_delegate.h b/webkit/plugins/ppapi/plugin_delegate.h
index 68a6471..212889a 100644
--- a/webkit/plugins/ppapi/plugin_delegate.h
+++ b/webkit/plugins/ppapi/plugin_delegate.h
@@ -284,6 +284,9 @@ class PluginDelegate {
virtual bool AsyncOpenFile(const FilePath& path,
int flags,
AsyncOpenFileCallback* callback) = 0;
+ virtual bool AsyncOpenFileSystemURL(const GURL& path,
+ int flags,
+ AsyncOpenFileCallback* callback) = 0;
virtual bool OpenFileSystem(
const GURL& url,
diff --git a/webkit/plugins/ppapi/ppb_file_io_impl.cc b/webkit/plugins/ppapi/ppb_file_io_impl.cc
index 624ced4..20a95db 100644
--- a/webkit/plugins/ppapi/ppb_file_io_impl.cc
+++ b/webkit/plugins/ppapi/ppb_file_io_impl.cc
@@ -253,13 +253,26 @@ int32_t PPB_FileIO_Impl::Open(PPB_FileRef_Impl* file_ref,
} else {
flags |= base::PLATFORM_FILE_OPEN;
}
-
file_system_type_ = file_ref->GetFileSystemType();
- if (!instance()->delegate()->AsyncOpenFile(
- file_ref->GetSystemPath(), flags,
- callback_factory_.NewCallback(
- &PPB_FileIO_Impl::AsyncOpenFileCallback)))
- return PP_ERROR_FAILED;
+ switch (file_system_type_) {
+ case PP_FILESYSTEMTYPE_EXTERNAL:
+ if (!instance()->delegate()->AsyncOpenFile(
+ file_ref->GetSystemPath(), flags,
+ callback_factory_.NewCallback(
+ &PPB_FileIO_Impl::AsyncOpenFileCallback)))
+ return PP_ERROR_FAILED;
+ break;
+ case PP_FILESYSTEMTYPE_LOCALPERSISTENT:
+ case PP_FILESYSTEMTYPE_LOCALTEMPORARY:
+ if (!instance()->delegate()->AsyncOpenFileSystemURL(
+ file_ref->GetFileSystemURL(), flags,
+ callback_factory_.NewCallback(
+ &PPB_FileIO_Impl::AsyncOpenFileCallback)))
+ return PP_ERROR_FAILED;
+ break;
+ default:
+ return PP_ERROR_FAILED;
+ }
RegisterCallback(callback);
return PP_OK_COMPLETIONPENDING;
diff --git a/webkit/plugins/ppapi/ppb_file_ref_impl.cc b/webkit/plugins/ppapi/ppb_file_ref_impl.cc
index b048caf..8ab57e7 100644
--- a/webkit/plugins/ppapi/ppb_file_ref_impl.cc
+++ b/webkit/plugins/ppapi/ppb_file_ref_impl.cc
@@ -340,7 +340,9 @@ GURL PPB_FileRef_Impl::GetFileSystemURL() const {
// 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));
+ // TODO(ericu): Switch this to use Resolve after fixing GURL to understand
+ // FileSystem URLs.
+ return GURL(file_system_->root_url().spec() + virtual_path_.substr(1));
}
} // namespace ppapi