summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorbbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-13 02:48:50 +0000
committerbbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-13 02:48:50 +0000
commit459fba846839922dc77873aa3181a2684cd03e0c (patch)
treed48784892c57993f21e92b6fdebf99836845d5e7 /content
parent721c0ceae9fef3230bd36b0d1b742f231f37ad19 (diff)
downloadchromium_src-459fba846839922dc77873aa3181a2684cd03e0c.zip
chromium_src-459fba846839922dc77873aa3181a2684cd03e0c.tar.gz
chromium_src-459fba846839922dc77873aa3181a2684cd03e0c.tar.bz2
Implement 'SAVEAS' mode for PPB_FileChooser_Impl. Also, fix the Save File dialog when thesuggested file name is a root directory, such as "C:\".
BUG=73070 TEST=manual Review URL: http://codereview.chromium.org/8142018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105247 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/render_view_host.cc7
-rw-r--r--content/browser/renderer_host/render_view_host.h7
-rw-r--r--content/renderer/render_view_impl.cc2
3 files changed, 11 insertions, 5 deletions
diff --git a/content/browser/renderer_host/render_view_host.cc b/content/browser/renderer_host/render_view_host.cc
index 5298315..81709ef 100644
--- a/content/browser/renderer_host/render_view_host.cc
+++ b/content/browser/renderer_host/render_view_host.cc
@@ -556,12 +556,13 @@ void RenderViewHost::SetInitialFocus(bool reverse) {
}
void RenderViewHost::FilesSelectedInChooser(
- const std::vector<FilePath>& files) {
+ const std::vector<FilePath>& files,
+ int permissions) {
// Grant the security access requested to the given files.
for (std::vector<FilePath>::const_iterator file = files.begin();
file != files.end(); ++file) {
- ChildProcessSecurityPolicy::GetInstance()->GrantReadFile(
- process()->id(), *file);
+ ChildProcessSecurityPolicy::GetInstance()->GrantPermissionsForFile(
+ process()->id(), *file, permissions);
}
Send(new ViewMsg_RunFileChooserResponse(routing_id(), files));
}
diff --git a/content/browser/renderer_host/render_view_host.h b/content/browser/renderer_host/render_view_host.h
index d29b8e4..fb55ee06 100644
--- a/content/browser/renderer_host/render_view_host.h
+++ b/content/browser/renderer_host/render_view_host.h
@@ -307,8 +307,11 @@ class CONTENT_EXPORT RenderViewHost : public RenderWidgetHost {
const FilePath& local_directory_name);
// Notifies the Listener that one or more files have been chosen by the user
- // from an Open File dialog for the form.
- void FilesSelectedInChooser(const std::vector<FilePath>& files);
+ // from a file chooser dialog for the form. |permissions| are flags from the
+ // base::PlatformFileFlags enum which specify which file permissions should
+ // be granted to the renderer.
+ void FilesSelectedInChooser(const std::vector<FilePath>& files,
+ int permissions);
// Notifies the listener that a directory enumeration is complete.
void DirectoryEnumerationFinished(int request_id,
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index fc2d729b..581e23d 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1558,6 +1558,8 @@ bool RenderViewImpl::runFileChooser(
ipc_params.mode = ViewHostMsg_RunFileChooser_Mode::OpenFolder;
else if (params.multiSelect)
ipc_params.mode = ViewHostMsg_RunFileChooser_Mode::OpenMultiple;
+ else if (params.saveAs)
+ ipc_params.mode = ViewHostMsg_RunFileChooser_Mode::Save;
else
ipc_params.mode = ViewHostMsg_RunFileChooser_Mode::Open;
ipc_params.title = params.title;