diff options
author | bbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-13 02:48:50 +0000 |
---|---|---|
committer | bbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-13 02:48:50 +0000 |
commit | 459fba846839922dc77873aa3181a2684cd03e0c (patch) | |
tree | d48784892c57993f21e92b6fdebf99836845d5e7 /content | |
parent | 721c0ceae9fef3230bd36b0d1b742f231f37ad19 (diff) | |
download | chromium_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.cc | 7 | ||||
-rw-r--r-- | content/browser/renderer_host/render_view_host.h | 7 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 2 |
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; |