[Top][All Lists]
[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() )