[Xfce4-commits] <midori:master> Don't include query in suggested filenames

Christian Dywan noreply at xfce.org
Fri Sep 28 23:24:01 CEST 2012


Updating branch refs/heads/master
         to c8d277436485d67d1b6829ac438d15ceafdf1dbc (commit)
       from a363a6dcc05113d874e8dd1a4062b9df51d3873f (commit)

commit c8d277436485d67d1b6829ac438d15ceafdf1dbc
Author: Christian Dywan <christian at twotoasts.de>
Date:   Fri Sep 28 19:07:54 2012 +0200

    Don't include query in suggested filenames

 midori/midori-download.vala |   11 ++++++-----
 tests/download.vala         |   22 +++++++++++++++++-----
 2 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/midori/midori-download.vala b/midori/midori-download.vala
index cc8c539..72f52f1 100644
--- a/midori/midori-download.vala
+++ b/midori/midori-download.vala
@@ -225,10 +225,9 @@ namespace Midori {
         }
 
         public string get_filename_suggestion_for_uri (string mime_type, string uri) {
-            /* Try to provide a good default filename, UTF-8 encoded */
-            string filename = clean_filename (Soup.URI.decode (uri));
-            /* Take the rest of the URI if needed */
-            if (filename.has_suffix ("/") || uri.index_of_char ('.') == -1)
+            return_if_fail (Midori.URI.is_location (uri));
+            string filename = File.new_for_uri (uri).get_basename ();
+            if (uri.index_of_char ('.') == -1)
                 return Path.build_filename (filename, fallback_extension (null, mime_type));
             return filename;
         }
@@ -244,8 +243,10 @@ namespace Midori {
             int period = uri.last_index_of_char ('.', last_slash);
             if (period == -1)
                 return null;
+            /* Exclude the query: ?query=foobar */
+            int query = uri.last_index_of_char ('?', period);
             /* The extension, or "." if it ended with a period */
-            string extension = uri.substring (period, -1);
+            string extension = uri.substring (period, query - period);
             if (&basename != null)
                 basename = uri.substring (0, period);
             return extension;
diff --git a/tests/download.vala b/tests/download.vala
index c5e0f98..746cba2 100644
--- a/tests/download.vala
+++ b/tests/download.vala
@@ -11,19 +11,30 @@
 
 struct TestCase {
     public string data;
-    public string? expected;
+    public string mime_type;
+    public string? expected_filename;
+    public string? expected_extension;
 }
 
 const TestCase[] filenames = {
-    { "/tmp/midori-user/tumblr123.jpg", ".jpg" },
-    { "https://green.cat/8019B6/a.b/500.jpg", ".jpg" },
-    { "http://example.com/file.png", ".png" }
+    { "file:///tmp/midori-user/tumblr123.jpg", "image/jpg", "tumblr123.jpg", ".jpg" },
+    { "https://green.cat/8019B6/a.b/500.jpg", "image/jpg", "500.jpg", ".jpg" },
+    { "http://example.com/file.png", "image/png", "file.png", ".png" },
+    { "http://svn.sf.net/doc/doxy_to_dev.xsl.m4?rev=253", "application/xslt+xml", "doxy_to_dev.xsl.m4", ".m4" }
 };
 
+static void download_suggestion () {
+    foreach (var filename in filenames) {
+        string? result = Midori.Download.get_filename_suggestion_for_uri (
+            filename.mime_type, filename.data);
+        Katze.assert_str_equal (filename.data, result, filename.expected_filename);
+    }
+}
+
 static void download_extension () {
     foreach (var filename in filenames) {
         string? result = Midori.Download.get_extension_for_uri (filename.data);
-        Katze.assert_str_equal (filename.data, result, filename.expected);
+        Katze.assert_str_equal (filename.data, result, filename.expected_extension);
     }
 }
 
@@ -51,6 +62,7 @@ static void download_unique () {
 
 void main (string[] args) {
     Test.init (ref args);
+    Test.add_func ("/download/suggestion", download_suggestion);
     Test.add_func ("/download/extension", download_extension);
     Test.add_func ("/download/unique", download_unique);
     Test.run ();


More information about the Xfce4-commits mailing list