<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-style:normal;">Dnia Sunday 15 March 2009, Michael Howell napisał:<br>
&gt; On Saturday 14 March 2009 16:21:33 Jakub Stachowski wrote:<br>
&gt; &gt; Dnia Saturday 14 March 2009, Michael Howell napisał:<br>
&gt; &gt; &gt; On Saturday 14 March 2009 14:10:31 Jakub Stachowski wrote:<br>
&gt; &gt; &gt; &gt; Dnia Saturday 14 March 2009, Michael Howell napisał:<br>
&gt; &gt; &gt; &gt; &gt; On Saturday 14 March 2009 11:34:08 Jakub Stachowski wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; Hello,<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; Currently plugin factory contains workaround for flash (returning<br>
&gt; &gt; &gt; &gt; &gt; &gt; QWebView instead of 0). What bug does it exactly works around?<br>
&gt; &gt; &gt; &gt; &gt; &gt; If it is video player embedded from youtube showing just controls<br>
&gt; &gt; &gt; &gt; &gt; &gt; but no video (testcase:<br>
&gt; &gt; &gt; &gt; &gt; &gt; http://www.webscription.net/s-108-david-weber.aspx ) then<br>
&gt; &gt; &gt; &gt; &gt; &gt; attached patch contains alternative solution.<br>
&gt; &gt; &gt; &gt; &gt; &gt; The problem is that QNetworkManager (and maybe flash plugin)<br>
&gt; &gt; &gt; &gt; &gt; &gt; expects to handle redirects itself, but KIO internally fetches<br>
&gt; &gt; &gt; &gt; &gt; &gt; destination URL instead. The patch makes KNetworkReply emit<br>
&gt; &gt; &gt; &gt; &gt; &gt; finish()  and kill the KIO job upon redirect.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; QtWebKit tries to use KWebPluginFactory for _all_ plug-in requests,<br>
&gt; &gt; &gt; &gt; &gt; even if the actual plug-in was not advertised by KWebPluginFactory,<br>
&gt; &gt; &gt; &gt; &gt; but is supposed to be used internally by QtWebKit's built-in Flash<br>
&gt; &gt; &gt; &gt; &gt; support.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; I wish I knew how to pass the options to the new QWebView, which<br>
&gt; &gt; &gt; &gt; &gt; would fix YouTube.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; OK, but why not simply return 0? In this case QtWebKit tries built-in<br>
&gt; &gt; &gt; &gt; support for netscape plugins. It makes webkitkde more crashy, but<br>
&gt; &gt; &gt; &gt; then again even with QWebView workaround it crashes whenever it<br>
&gt; &gt; &gt; &gt; likes. I know that QWebView is workaround but what is actual bug<br>
&gt; &gt; &gt; &gt; being worked around? Crashing? Not showing movie on youtube?<br>
&gt; &gt; &gt; &gt; Something else?<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Even nspluginviewer crashes with webkitkde :-(<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; QtWebKit tries to use KWebPluginFactory for all plug-ins, even if it's<br>
&gt; &gt; &gt; actually the built-in Flash support that provides the plug-in.<br>
&gt; &gt;<br>
&gt; &gt; I'm missing something here. If you remove nspluginviewer from list of<br>
&gt; &gt; embeddable components for application/x-shockwave-flash  then<br>
&gt; &gt; createPartInstanceFromQuery will return 0. At this point<br>
&gt; &gt; KWebPluginFactory::create could just return 0 and QtWebKit try its<br>
&gt; &gt; embedded support (see FrameLoaderClientQt::createPlugin - first it tries<br>
&gt; &gt; plugin factory and if it returns 0 then it tries built-in support), but<br>
&gt; &gt; instead it does hack with QWebView. I still don't understand, what it is<br>
&gt; &gt; supposed to work around.<br>
&gt; &gt;<br>
&gt; &gt; About my 'nspluginviewer' comment: Maksim managed to fix that 'white<br>
&gt; &gt; rectangle' bug so I decided to go with it instead of QtWebKit built-in<br>
&gt; &gt; support. Unfortunately nspluginviewer crashes too - somewhere deep in gtk<br>
&gt; &gt; or glib.<br>
&gt;<br>
&gt; No. If you return 0 QtWebKit won't try it's built-in support. It'll simply<br>
&gt; fail. I've tried.<br>
&gt;<br>
&gt; If this has changed recently, then it can be removed.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>I'm using 4.5.0 release from OpenSuse package and yes, returning 0 makes QtWebKit load flash using internal support.<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>Unfortunately it crashes later when leaving the page (flash calling XtRemoreTimeout, which is at least weird in gtk2-based plugin).<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>So we have 3 options (QWebView workaround, returning 0 and nspluginviewer) and none of them fully works :-(<br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p>On the other hand I think KNetworkReply fix for redirects is useful anyway.<br>
Should I commit it (without removing QWebView hack) ?<br>
 <br>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"><br></p></body></html>