Bug 27215

Summary: [QT] suppress (un)desired launcher output that can make layout test to fail with stderr
Product: WebKit Reporter: Antonio Gomes <tonikitoo>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: gustavo, hausmann, kenneth, manyoso, zecke
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Linux   
Bug Depends on:    
Bug Blocks: 26886    
Attachments:
Description Flags
For Qt, suppress NP Plugin stderr output that is out of our control
none
For Linux, suppress NP Plugin stderr output that is out of our control
none
For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH
manyoso: review-
For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH
none
For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH hausmann: review+

Antonio Gomes
Reported 2009-07-13 07:37:56 PDT
4778 test cases (98%) succeeded 9 test cases (<1%) had incorrect layout 34 test cases (<1%) were new 8 test cases (<1%) crashed 18 test cases (<1%) had stderr output --> Something noticeable and annoying: I got 18 tests w/ "stderr output" but all of them output either Xlib: extension "RANDR" missing on display ":0.0". or ** Message: NP_Initialize ** Message: NP_Initialize succeeded ** Message: NP_Initialize ** Message: NP_Initialize succeeded ** Message: NP_Initialize ** Message: NP_Initialize succeeded ** Message: NP_Initialize ** Message: NP_Initialize succeeded
Attachments
For Qt, suppress NP Plugin stderr output that is out of our control (2.24 KB, patch)
2009-07-14 13:47 PDT, Kenneth Rohde Christiansen
no flags
For Linux, suppress NP Plugin stderr output that is out of our control (2.40 KB, patch)
2009-07-14 14:26 PDT, Kenneth Rohde Christiansen
no flags
For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH (8.37 KB, patch)
2009-07-15 11:03 PDT, Kenneth Rohde Christiansen
manyoso: review-
For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH (10.92 KB, patch)
2009-07-17 06:12 PDT, Kenneth Rohde Christiansen
no flags
For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH (9.30 KB, patch)
2009-07-17 06:17 PDT, Kenneth Rohde Christiansen
hausmann: review+
Kenneth Rohde Christiansen
Comment 1 2009-07-14 13:11:11 PDT
I think that we should atleast filter out the NP Plugin messages starting with "** Message:"
Kenneth Rohde Christiansen
Comment 2 2009-07-14 13:47:00 PDT
Created attachment 32733 [details] For Qt, suppress NP Plugin stderr output that is out of our control
Antonio Gomes
Comment 3 2009-07-14 13:53:39 PDT
as per chat on IRC, that can be not qt specific, but linux so gtk could be interested ? cc'ing kov
Kenneth Rohde Christiansen
Comment 4 2009-07-14 14:23:54 PDT
Actually, this seems linux specific so is useful for Qt, Chromium and Gtk+
Kenneth Rohde Christiansen
Comment 5 2009-07-14 14:26:47 PDT
Created attachment 32735 [details] For Linux, suppress NP Plugin stderr output that is out of our control
Adam Treat
Comment 6 2009-07-15 04:44:12 PDT
Why is this out of our control? What exactly is printing this information? Coming from outside WebKit altogether? Can plugins not be loaded by Qt DRT as an alternative? Are you sure that GTK DRT has this problem? At the very least, you should document why you are suppressing those messages in the source code as it is not obvious.
Kenneth Rohde Christiansen
Comment 7 2009-07-15 06:04:55 PDT
It is because of the PLUGINDEBUGSTR that most netscape plugins use, but just enabling the test plugin for DRT would be better, but depends on a patch to change the default plugin directories.
Holger Freyther
Comment 8 2009-07-15 06:10:52 PDT
(In reply to comment #0) > ** Message: NP_Initialize > ** Message: NP_Initialize succeeded > ** Message: NP_Initialize > ** Message: NP_Initialize succeeded > ** Message: NP_Initialize > ** Message: NP_Initialize succeeded > ** Message: NP_Initialize > ** Message: NP_Initialize succeeded This is coming from the totem plugin. My take on this is that tests do not fail, so we should not bother.
Kenneth Rohde Christiansen
Comment 9 2009-07-15 11:03:26 PDT
Created attachment 32796 [details] For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH
Adam Treat
Comment 10 2009-07-15 12:07:45 PDT
Comment on attachment 32796 [details] For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH I like the approach of the patch and think this will work, but a few problems: > -PluginDatabase* PluginDatabase::installedPlugins() > +PluginDatabase* PluginDatabase::installedPlugins(bool populate) This reason for this populate arg should be documented in code as it is not obvious. > +void PluginDatabase::clear() > +{ > + m_plugins.clear(); > + m_pluginsByPath.clear(); > + m_registeredMIMETypes.clear(); > +} Sure, but no deletion needed? > + void setPluginDirectories(const Vector<String>& directories) > + { > + clear(); > + m_pluginDirectories = directories; > + } Looks suspect as you're changing the behavior of this method. Where is this method currently called from? Any obvious side effects? > + bool m_pluginSetChanged; Adding a member variable that is never used or initialized? > +void QWEBKIT_EXPORT qt_drt_overwritePluginDirectories() > +{ > + PluginDatabase *db = PluginDatabase::installedPlugins(/* populate */ false); The decorator is in wrong place according to webkit coding style guidelines. With these things fixed I think it'll be in good shape. Cheers, Adam
Kenneth Rohde Christiansen
Comment 11 2009-07-15 14:18:30 PDT
> > +void PluginDatabase::clear() > > +{ > > + m_plugins.clear(); > > + m_pluginsByPath.clear(); > > + m_registeredMIMETypes.clear(); > > +} > Sure, but no deletion needed? It does the same as the remove() functions. It also doesn't delete anything. > > + void setPluginDirectories(const Vector<String>& directories) > > + { > > + clear(); > > + m_pluginDirectories = directories; > > + } > > Looks suspect as you're changing the behavior of this method. Where is this > method currently called from? Any obvious side effects? Only from the installedPlugins() function, so no. > > + bool m_pluginSetChanged; > > Adding a member variable that is never used or initialized? That is a leftover, thanks for spotting. > > +void QWEBKIT_EXPORT qt_drt_overwritePluginDirectories() > > +{ > > + PluginDatabase *db = PluginDatabase::installedPlugins(/* populate */ false); > > The decorator is in wrong place according to webkit coding style guidelines. decorator? the /* populate */ ? Btw, this in in Qt code and should thus follow the Qt coding style, but it might still be wrong though.
Adam Treat
Comment 12 2009-07-15 14:33:48 PDT
(In reply to comment #11) > decorator? the /* populate */ ? Btw, this in in Qt code and should thus follow > the Qt coding style, but it might still be wrong though. No, the decorator on 'PluginDatabase *db' and a decision was made that all Qt port code, whether in WebKit/qt or in WebCore or where ever in should follow the webkit coding style. See here: http://trac.webkit.org/wiki/QtWebKitContrib#CodingStyle That decision was made after a lengthy meeting and discussion on the topic in #qtwebkit that included Simon, Ariya, Zecke, Torarne, Ben and myself and others.
Kenneth Rohde Christiansen
Comment 13 2009-07-17 06:12:13 PDT
Created attachment 32936 [details] For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH
Kenneth Rohde Christiansen
Comment 14 2009-07-17 06:17:02 PDT
Created attachment 32937 [details] For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH Submitted patch with garbage by mistake. This one should be alright
Antonio Gomes
Comment 15 2009-07-17 06:20:52 PDT
kenne, could you please exactly say how many fake-failing tests are you supposed to be enabling, so I can try to match on my 32-bit box.
Simon Hausmann
Comment 16 2009-07-17 06:30:24 PDT
Comment on attachment 32937 [details] For Qt,overwrite the plugin directories for the DRT to only those defined in QTWEBKIT_PLUGIN_PATH r=me
Adam Treat
Comment 17 2009-07-17 06:31:32 PDT
> (WebCore::PluginDatabase::clear): Make is possible to clear the s/is/it/ > + (WebCore::PluginDatabase::clear): Make is possible to clear the s/is/it/ > if (!plugins) { > plugins = new PluginDatabase; > - plugins->setPluginDirectories(PluginDatabase::defaultPluginDirectories()); > - plugins->refresh(); > + > + if (populate) { > + plugins->setPluginDirectories(PluginDatabase::defaultPluginDirectories()); > + plugins->refresh(); > + } No reason for the extra line break. > + m_plugins.clear(); > + m_pluginsByPath.clear(); > + > + m_registeredMIMETypes.clear(); No reason for the extra line break. r=me with these minor nits. Great work! One more step to getting the DRT into reasonable shape :)
Simon Hausmann
Comment 18 2009-07-17 06:34:51 PDT
Landed in 46030 with the ChangeLog typo fixup commit in 46031
Note You need to log in before you can comment on or make changes to this bug.