Pepper: Make it possible to pass external file systems to NaCl modules.
BUG=327171
Review URL: https://codereview.chromium.org/210593003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263166 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/content/renderer/pepper/content_renderer_pepper_host_factory.cc b/content/renderer/pepper/content_renderer_pepper_host_factory.cc
index 8cffc73..651aafe 100644
--- a/content/renderer/pepper/content_renderer_pepper_host_factory.cc
+++ b/content/renderer/pepper/content_renderer_pepper_host_factory.cc
@@ -83,12 +83,11 @@
// Public interfaces.
switch (message.type()) {
- case PpapiHostMsg_FileRef_CreateInternal::ID: {
+ case PpapiHostMsg_FileRef_CreateForFileAPI::ID: {
PP_Resource file_system;
std::string internal_path;
- if (!UnpackMessage<PpapiHostMsg_FileRef_CreateInternal>(message,
- &file_system,
- &internal_path)) {
+ if (!UnpackMessage<PpapiHostMsg_FileRef_CreateForFileAPI>(
+ message, &file_system, &internal_path)) {
NOTREACHED();
return scoped_ptr<ResourceHost>();
}
diff --git a/content/renderer/pepper/pepper_file_chooser_host.cc b/content/renderer/pepper/pepper_file_chooser_host.cc
index eb7e2dd..3a10bd1 100644
--- a/content/renderer/pepper/pepper_file_chooser_host.cc
+++ b/content/renderer/pepper/pepper_file_chooser_host.cc
@@ -24,7 +24,7 @@
class PepperFileChooserHost::CompletionHandler
: public blink::WebFileChooserCompletion {
public:
- CompletionHandler(const base::WeakPtr<PepperFileChooserHost>& host)
+ explicit CompletionHandler(const base::WeakPtr<PepperFileChooserHost>& host)
: host_(host) {
}
@@ -108,7 +108,7 @@
base::FilePath file_path(files[i].path);
#endif
file_paths.push_back(file_path);
- create_msgs.push_back(PpapiHostMsg_FileRef_CreateExternal(file_path));
+ create_msgs.push_back(PpapiHostMsg_FileRef_CreateForRawFS(file_path));
display_names.push_back(files[i].display_name);
}
diff --git a/content/renderer/pepper/resource_converter.cc b/content/renderer/pepper/resource_converter.cc
index d4847b73..0ec93ba7 100644
--- a/content/renderer/pepper/resource_converter.cc
+++ b/content/renderer/pepper/resource_converter.cc
@@ -96,11 +96,13 @@
WebFileSystemTypeToPPAPI(dom_file_system.type());
GURL root_url = dom_file_system.rootURL();
- // External file systems are not currently supported. (Without this check,
- // there would be a CHECK-fail in FileRefResource.)
- // TODO(mgiuca): Support external file systems.
- if (file_system_type == PP_FILESYSTEMTYPE_EXTERNAL)
+ // Raw external file system access is not allowed, but external file system
+ // access through fileapi is allowed. (Without this check, there would be a
+ // CHECK failure in FileRefResource.)
+ if ((file_system_type == PP_FILESYSTEMTYPE_EXTERNAL) &&
+ (!root_url.is_valid())) {
return false;
+ }
*pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost(
scoped_ptr<ppapi::host::ResourceHost>(
diff --git a/content/renderer/pepper/url_response_info_util.cc b/content/renderer/pepper/url_response_info_util.cc
index 6349226a..9df6534 100644
--- a/content/renderer/pepper/url_response_info_util.cc
+++ b/content/renderer/pepper/url_response_info_util.cc
@@ -52,7 +52,7 @@
int renderer_pending_host_id,
const DataFromWebURLResponseCallback& callback,
const std::vector<int>& browser_pending_host_ids) {
- DCHECK(browser_pending_host_ids.size() == 1);
+ DCHECK_EQ(1U, browser_pending_host_ids.size());
int browser_pending_host_id = 0;
if (browser_pending_host_ids.size() == 1)
@@ -99,7 +99,7 @@
scoped_ptr<ppapi::host::ResourceHost>(renderer_host));
std::vector<IPC::Message> create_msgs;
- create_msgs.push_back(PpapiHostMsg_FileRef_CreateExternal(external_path));
+ create_msgs.push_back(PpapiHostMsg_FileRef_CreateForRawFS(external_path));
host_impl->CreateBrowserResourceHosts(
pp_instance,
create_msgs,