gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/swf/ASHandlers.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/swf/ASHandlers.cpp
Date: Mon, 18 Sep 2006 13:36:45 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/09/18 13:36:44

Modified files:
        .              : ChangeLog 
        server/swf     : ASHandlers.cpp 

Log message:
                * server/swf/ASHandlers.cpp: added initial support for
                  GetUrl2 method 64.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.857&r2=1.858
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/ASHandlers.cpp?cvsroot=gnash&r1=1.63&r2=1.64

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.857
retrieving revision 1.858
diff -u -b -r1.857 -r1.858
--- ChangeLog   18 Sep 2006 13:15:39 -0000      1.857
+++ ChangeLog   18 Sep 2006 13:36:44 -0000      1.858
@@ -1,3 +1,8 @@
+2006-09-18 Sandro Santilli  <address@hidden>
+
+       * server/swf/ASHandlers.cpp: added initial support for
+         GetUrl2 method 64.
+
 2006-09-18 Patrice Dumas <address@hidden>
 
        * gui/gtksup.h: remove extra qualifier from private method.

Index: server/swf/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/ASHandlers.cpp,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -b -r1.63 -r1.64
--- server/swf/ASHandlers.cpp   18 Sep 2006 09:59:25 -0000      1.63
+++ server/swf/ASHandlers.cpp   18 Sep 2006 13:36:44 -0000      1.64
@@ -1564,7 +1564,9 @@
 SWFHandlers::CommonGetUrl(as_environment& env,
                as_value target, // the target window, or _level1..10
                const char* url_c,
-                uint8_t /* method */ // 0:NONE, 1:GET, 2:POST
+                uint8_t method /* 0:NONE, 1:GET, 2:POST
+                               * 64: load internally ?
+                               */
                )
 {
 
@@ -1576,6 +1578,12 @@
                return;
        }
 
+       const char* target_string = NULL;
+       if ( ! target.is_undefined() && ! target.is_null() )
+       {
+               target_string = target.to_string();
+       }
+
        // If the url starts with "FSCommand:", then this is
        // a message for the host app.
        if (strncmp(url_c, "FSCommand:", 10) == 0)
@@ -1583,11 +1591,12 @@
                if (s_fscommand_handler)
                {
                        // Call into the app.
-                       
(*s_fscommand_handler)(env.get_target()->get_root_interface(), url_c + 10, 
target.to_string());
+                       
(*s_fscommand_handler)(env.get_target()->get_root_interface(), url_c + 10, 
target_string);
                }
+
+               return;
        }
-       else
-       {
+
                string url_s(url_c);
 
                // @@ TODO: find out how should 'relative' urls be
@@ -1599,7 +1608,7 @@
                URL target_url(tgt_sprt->get_movie_definition()->get_url());
                URL url(url_s, target_url);
 
-               log_msg("get url: target=%s, url=%s (%s)", target.to_string(),
+       log_msg("get url: target=%s, url=%s (%s)", target_string,
                        url.str().c_str(), url_c);
 
                 // Check host security
@@ -1608,28 +1617,46 @@
                        return;
                }
 
-#define USE_FLASH_LOAD_MOVIE
-#ifdef USE_FLASH_LOAD_MOVIE
-//             log_msg("get url: target=%s, url=%s", target, url_c);
+       bool load_internally = method&64;
+       method &= ~64; // strip flag
+
+       // handle malformed methods
+       if ( method > 2 )
+       {
+               log_warning("Bogus (or unsupported) GetUrl2 method (%d)"
+                       " in SWF file, set to 0",
+                       method);
+               method=0;
+       }
+
+       if ( load_internally )
+       {
+               log_msg("get url internal load");
                      
                character* target_movie = env.find_target(target);
-               if (target_movie != NULL)
+               if (target_movie == NULL)
                {
+                       log_error("get url: target %s not found",
+                               target_string);
+                       return;
+               }
+
                        sprite_instance* root_movie = 
env.get_target()->get_root_movie();
-                       attach_extern_movie(url_c, target_movie, root_movie);
+               attach_extern_movie(url.str().c_str(), target_movie, 
root_movie);
                }
                else
                {
-                       log_error("get url2: target %s not found", 
target.to_string());
-               }
-#else
-
                 string command = "firefox -remote \"openurl(";
                 command += url.str();
+#if 0 // target testing
+               if ( target_string )
+               {
+                       command += ", " + string(target_string);
+               }
+#endif
                 command += ")\"";
                 dbglogfile << "Launching URL... " << command << endl;
                 system(command.c_str());
-#endif // USE_FLASH_LOAD_MOVIE
        }
 }
 
@@ -1646,13 +1673,6 @@
        assert( code[thread.pc] == SWF::ACTION_GETURL2 );
 
        uint8_t method = code[thread.pc + 3];
-       // handle malformed SWFs
-       if ( method > 2 )
-       {
-               log_warning("Bogus GetUrl2 method (%d) in SWF file, set to 0",
-                       method);
-               method=0;
-       }
 
        as_value url_val = env.top(1);
        if ( url_val.is_undefined() )




reply via email to

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