[Libreoffice] [REVIEW][3-5][3-5-0] Honor pre-selected filter type

Eike Rathke erack at redhat.com
Mon Jan 30 10:18:11 PST 2012


Hi Kohei,

On Friday, 2012-01-27 17:08:14 -0500, Kohei Yoshida wrote:

> I'd like to have the attached patch pushed to the 3-5 branch and
> preferably to the 3-5-0 branch as well.
> 
> It fixes 
> 
> https://bugs.freedesktop.org/show_bug.cgi?id=45084

It seems to fix the symptom and the document is loaded in Calc, but in
impl_detectTypeDeepOnly() case "c)" still "writer_web_HTML" is returned
as sDeepType. queryTypeByDescriptor() attempts to set that via
impl_checkResultsAndAddBestFilter(), which correctly refuses because
a filter was preselected, but then in
impl_validateAndSetTypeOnDescriptor() is

    rDescriptor[::comphelper::MediaDescriptor::PROP_TYPENAME()] <<= sType;

with sType=="writer_web_HTML", and that is also returned by
queryTypeByDescriptor().

To me this works only by chance and would fail where the result of
XTypeDetection::queryTypeByDescriptor() was actually used, e.g.
filter/qa/complex/filter/detection/typeDetection/TypeDetection.java
might if it tested for this scenario.

I also have the impression that case "c)" shouldn't even be reached for
a preselected filter, and instead case "b)" should deliver a hit.

Unfortunately that code is fragile and complex, I didn't reach full
understanding in the 2 hours of reading and stepping through..

> I haven't committed this yet to master, since I wanted to have someone
> else's opinion first.  To the best of my knowledge this change makes
> sense.  Why clear the type and filter just because one of the type
> detections fail?

I think this is to clear filters that make no sense with the given file,
but does not take into account that a preselected filter is to be
cleared only if all type detections fail, or some such..

> Anyhow, review and sign-off appreciated if appropriate.  If not,
> suggestions welcome.

Would be good to sort out the reason why "b)" isn't a hit and
"writer_web_HTML" is still matched even with a preselected matching
filter.

> Oh, BTW, I've already tested the case of opening an html file having a
> xls extension.  It still works after my change.

Adding a test case to the TypeDetection.java mentioned above might
reveal mismatch, somewhere in preselectedFilter.csv or
preselectedType.csv

  Eike

-- 
LibreOffice Calc developer. Number formatter stricken i18n transpositionizer.
GnuPG key 0x293C05FD : 997A 4C60 CE41 0149 0DB3  9E96 2F1A D073 293C 05FD
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/libreoffice/attachments/20120130/04946d99/attachment-0001.pgp>


More information about the LibreOffice mailing list