[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-bugs-dist
Subject:    [Bug 94413] New: No NPP_NewStream() if NPN_GetURL() called during
From:       Francois Gouget <fgouget () codeweavers ! com>
Date:       2004-12-04 19:42:10
Message-ID: 20041204204207.94413.fgouget () codeweavers ! com
[Download RAW message or body]

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
        
http://bugs.kde.org/show_bug.cgi?id=94413        
           Summary: No NPP_NewStream() if NPN_GetURL() called during
                    NPP_New()
           Product: konqueror
           Version: unspecified
          Platform: Unlisted Binaries
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: NOR
         Component: nsplugins
        AssignedTo: staikos kde org
        ReportedBy: fgouget codeweavers com


Version:            (using KDE KDE 3.3.0)
Installed from:    Unspecified Linux
OS:                Linux

I am working on the CrossOver plugin functionality and I noticed that Shockwave \
Director does not work in Konqueror (not Shockwave Director, Shockwave for short, is \
completely different from MacroMedia Flash). So I investigated and discovered that \
Shockwave calls NPN_GetURL() during the initial NPP_New() call and this seems to \
cause Konqueror to never call NPP_NewStream(). Here's the call sequence I see in \
Konqueror:

   Call NP_Initialize
   Ret NP_Initialize
   Call NPP_New
     Call NPN_UserAgent
     Ret NPN_UserAgent
     Call NPN_GetURL [URL javascript:window.location+"__swmenu__unique__"|target \
(null)]  Ret NPN_GetURL
   Ret NPP_New
   Call NPP_SetWindow
   Ret NPP_SetWindow
   Call NPP_SetWindow
   Ret NPP_SetWindow
   Call NPP_SetWindow
   Ret NPP_SetWindow
   Call NPP_Destroy
   Ret NPP_Destroy
   Call NP_Shutdown
   Ret NP_Shutdown

Notice how we don't have any NPP_NewStream() call, not even for the URL specified in \
the embed tag. What is interesting is that if I hack the CrossOver code that relays \
the NPN_GetURL() call and turn it into a no-op, then Shockwave starts working.

This bug can be reproduced by going to the following URL:

   http://acg.media.mit.edu/people/golan/blebs/index.html

The above log can be reproduced by starting Konqueror as follows:

CX_LOG=$HOME/konqshock.log konqueror \
http://acg.media.mit.edu/people/golan/blebs/index.html

Then a nice way to look at the log is to do:

egrep "(Call|Ret) [ND]" konqshock.log | more

That will give just the call sequence. But more detail is available in the full trace \
if needed.


Some more notes:
 * With Konqueror 3.3 we also have windowing problems so that the plugin display is \
not going to be correct. But if there's at least a white rectangle in the top left \
corner, then it means Shockwave started (if in doubt a look at the log will make \
everything clear). I'm still investigating this display problem (it's probably a \
                window reparenting issue).
 * The same bug is present in Konqueror 3.2.2 as shipped on Debian testing.
 * This may be related to bug '94410 - NPN_GetURLNotify() does not work' but the \
symptoms are a bit different. In particular, in bug 94410 we at least get the \
NPP_NewStream() corresponding to the URL in the embed tag.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic