gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog libbase/URL.cpp testsuite/libba...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog libbase/URL.cpp testsuite/libba...
Date: Thu, 31 Jan 2008 21:38:41 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/01/31 21:38:41

Modified files:
        .              : ChangeLog 
        libbase        : URL.cpp 
        testsuite/libbase: URLTest.cpp 

Log message:
        Fix parsing of urls with an ".swf" component in the query string.
        This is basically a revert of this patch by bjacques:
        
http://cvs.savannah.gnu.org/viewvc/gnash/libbase/URL.cpp?root=gnash&r1=1.26&r2=1.27

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5541&r2=1.5542
http://cvs.savannah.gnu.org/viewcvs/gnash/libbase/URL.cpp?cvsroot=gnash&r1=1.42&r2=1.43
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/libbase/URLTest.cpp?cvsroot=gnash&r1=1.17&r2=1.18

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5541
retrieving revision 1.5542
diff -u -b -r1.5541 -r1.5542
--- ChangeLog   31 Jan 2008 20:54:41 -0000      1.5541
+++ ChangeLog   31 Jan 2008 21:38:40 -0000      1.5542
@@ -1,5 +1,13 @@
 2008-01-31 Sandro Santilli <address@hidden>
 
+       * libbase/URL.cpp: don't threat ".swf" strings as any special.
+         Fixes parsing of urls with ".swf" in the query string.
+       * testsuite/libbase/URLTest.cpp: add test for query strings
+         containing an ".swf" component, like many from
+         http://foo.keybit.net/~strk/mapview/.
+
+2008-01-31 Sandro Santilli <address@hidden>
+
        * gui/Player.cpp (load_movie): still add the acutual filename, if
          given, in the list of local sandboxes, or "gnash -u http://remote
          ./local.swf" won't work (the konqueror plugin uses that format,

Index: libbase/URL.cpp
===================================================================
RCS file: /sources/gnash/gnash/libbase/URL.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -b -r1.42 -r1.43
--- libbase/URL.cpp     21 Jan 2008 20:55:44 -0000      1.42
+++ libbase/URL.cpp     31 Jan 2008 21:38:41 -0000      1.43
@@ -353,14 +353,6 @@
                return;
        }
 
-       size_t swfpos = _path.rfind(".swf");
-       if (swfpos != string::npos && swfpos > qmpos)
-       {
-               // If the questionmark precedes the file suffix, we're not 
dealing with a 
-               // query string.
-               return;
-       }
-
        _querystring = _path.substr(qmpos+1);
 
        // update _path

Index: testsuite/libbase/URLTest.cpp
===================================================================
RCS file: /sources/gnash/gnash/testsuite/libbase/URLTest.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- testsuite/libbase/URLTest.cpp       21 Jan 2008 23:26:50 -0000      1.17
+++ testsuite/libbase/URLTest.cpp       31 Jan 2008 21:38:41 -0000      1.18
@@ -143,19 +143,17 @@
        check_equals (u16.querystring(), "option1=23&option2=65");
        check_equals (u16.anchor(), "anchor");
        check_equals (u16.str(), 
"file:///my/path/?option1=23&option2=65#anchor");
-       
        URL u17("/test?.swf");
        check_equals (u17.protocol() , "file" );
        check_equals (u17.hostname() , "" );
-       check_equals (u17.path() , "/test?.swf" );
+       check_equals (u17.path() , "/test" );
        check_equals (u17.str() , "file:///test?.swf" );
-       check_equals (u17.querystring() , "" );
+       check_equals (u17.querystring() , ".swf" );
 
        // Test that this doesn't crash.
        URL u18("file:///loadMovieTest.swf");
        URL u19("file://../../test.swf", u18);
 
-
        // Test query_string parsing
        map<string, string> qs;
        URL::parse_querystring(u13.querystring(), qs);
@@ -168,6 +166,28 @@
        check_equals (qs["option1"], "23");
        check_equals (qs["option2"], "65");
 
+       // Test query string with embedded path to an .swf 
+       // Broken by:
+       // 
htp://cvs.savannah.gnu.org/viewvc/gnash/libbase/URL.cpp?root=gnash&r1=1.26&r2=1.27
+       //
+       URL 
u20("http://www.gnu.org/~gnash/movie.swf?arg1=600&arg2=path/to/file.swf&arg3=320x200";);
+       check_equals(u20.protocol(), "http");
+       check_equals(u20.hostname(), "www.gnu.org");
+       check_equals(u20.path(), "/~gnash/movie.swf");
+       check_equals(u20.querystring(), 
"arg1=600&arg2=path/to/file.swf&arg3=320x200");
+       qs.clear();
+       URL::parse_querystring(u20.querystring(), qs);
+       check_equals(qs["arg1"], "600");
+       check_equals(qs["arg2"], "path/to/file.swf");
+       check_equals(qs["arg3"], "320x200");
+
+       // Test relative resolution when query string contains slashes
+       URL u21("movie2.swf", u20);
+       check_equals (u21.protocol(), "http");
+       check_equals (u21.querystring(), "");
+       check_equals (u21.path(), "/~gnash/movie2.swf");
+       check_equals (u21.hostname(), "www.gnu.org");
+
 
        // TODO: Samba paths
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]