summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-20 20:56:26 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-20 20:56:26 +0000
commit7d1c60592d605052f0ddb09cc8d458dd84e1ab8f (patch)
treee9deef00a2444fe5b7288c4eb6571233e7003ef2 /chrome/browser
parent893160d54cb5b2c1c68d3b69ec8ebc9b25b68b82 (diff)
downloadchromium_src-7d1c60592d605052f0ddb09cc8d458dd84e1ab8f.zip
chromium_src-7d1c60592d605052f0ddb09cc8d458dd84e1ab8f.tar.gz
chromium_src-7d1c60592d605052f0ddb09cc8d458dd84e1ab8f.tar.bz2
Linux: reject empty file filters for file chooser dialogs.
Note that this is temporary in that, in the long run, we should be using mime type filters rather than shell-style globs. TEST=right click/save as on a link. There should be no "*." filter. Review URL: http://codereview.chromium.org/113660 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@16533 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/gtk/dialogs_gtk.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/chrome/browser/gtk/dialogs_gtk.cc b/chrome/browser/gtk/dialogs_gtk.cc
index d846d28..637d203 100644
--- a/chrome/browser/gtk/dialogs_gtk.cc
+++ b/chrome/browser/gtk/dialogs_gtk.cc
@@ -195,13 +195,20 @@ void SelectFileDialogImpl::SelectFile(
void SelectFileDialogImpl::AddFilters(GtkFileChooser* chooser) {
for (size_t i = 0; i < file_types_.extensions.size(); ++i) {
- GtkFileFilter* filter = gtk_file_filter_new();
+ GtkFileFilter* filter = NULL;
for (size_t j = 0; j < file_types_.extensions[i].size(); ++j) {
// TODO(estade): it's probably preferable to use mime types, but we are
// passed extensions, so it's much easier to use globs.
- gtk_file_filter_add_pattern(filter,
- ("*." + file_types_.extensions[i][j]).c_str());
+ if (!file_types_.extensions[i][j].empty()) {
+ if (!filter)
+ filter = gtk_file_filter_new();
+ gtk_file_filter_add_pattern(filter,
+ ("*." + file_types_.extensions[i][j]).c_str());
+ }
}
+ // We didn't find any non-empty extensions to filter on.
+ if (!filter)
+ continue;
// The description vector may be blank, in which case we are supposed to
// use some sort of default description based on the filter.