tdf#118881: Fix HTML parsing for personas
This is just a band-aid to make personas feature
work again.
Change-Id: I80b54fe9a8ddc93d93744fcf2c7f739d81f6face
Reviewed-on: https://gerrit.libreoffice.org/60432
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <tietze.heiko@gmail.com>
Tested-by: Heiko Tietze <tietze.heiko@gmail.com>
Reviewed-by: Muhammet Kara <muhammet.kara@pardus.org.tr>
(cherry picked from commit e98ac43ec42ff398ad489d6719960d595f0327be)
Reviewed-on: https://gerrit.libreoffice.org/60468
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Tested-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
diff --git a/cui/source/options/personalization.cxx b/cui/source/options/personalization.cxx
index 216bc6e..1201a9d 100644
--- a/cui/source/options/personalization.cxx
+++ b/cui/source/options/personalization.cxx
@@ -550,14 +550,14 @@ static OUString searchValue( const OString &rBuffer, sal_Int32 from, const OStri
where += rIdentifier.getLength();
sal_Int32 end = rBuffer.indexOf( """, where );
sal_Int32 end = rBuffer.indexOf( "\"", where );
if ( end < 0 )
return OUString();
OString aOString( rBuffer.copy( where, end - where ) );
OUString aString( aOString.getStr(), aOString.getLength(), RTL_TEXTENCODING_UTF8, OSTRING_TO_OUSTRING_CVTFLAGS );
return aString.replaceAll( "\\/", "/" );
return aString.replaceAll( "\\u002F", "/" );
}
/// Parse the Persona web page, and find where to get the bitmaps + the color values.
@@ -569,32 +569,32 @@ static bool parsePersonaInfo( const OString &rBufferArg, OUString *pHeaderURL, O
// let's replace the whole buffer with last one so we can treat it easily
OString rBuffer = rBufferArg.replaceAll(OString("""), OString("""));
// it is the first attribute that contains "persona="
sal_Int32 persona = rBuffer.indexOf( "data-browsertheme=\"{" );
sal_Int32 persona = rBuffer.indexOf( "\"type\":\"persona\"" );
if ( persona < 0 )
return false;
// now search inside
*pHeaderURL = searchValue( rBuffer, persona, ""headerURL":"" );
*pHeaderURL = searchValue( rBuffer, persona, "\"headerURL\":\"" );
if ( pHeaderURL->isEmpty() )
return false;
*pFooterURL = searchValue( rBuffer, persona, ""footerURL":"" );
*pFooterURL = searchValue( rBuffer, persona, "\"footerURL\":\"" );
if ( pFooterURL->isEmpty() )
return false;
*pTextColor = searchValue( rBuffer, persona, ""textcolor":"" );
*pTextColor = searchValue( rBuffer, persona, "\"textcolor\":\"" );
if ( pTextColor->isEmpty() )
return false;
*pAccentColor = searchValue( rBuffer, persona, ""accentcolor":"" );
*pAccentColor = searchValue( rBuffer, persona, "\"accentcolor\":\"" );
if ( pAccentColor->isEmpty() )
return false;
*pPreviewURL = searchValue( rBuffer, persona, ""previewURL":"" );
*pPreviewURL = searchValue( rBuffer, persona, "\"previewURL\":\"" );
if ( pPreviewURL->isEmpty() )
return false;
*pName = searchValue( rBuffer, persona, ""name":"" );
*pName = searchValue( rBuffer, persona, "\"name\":\"" );
return !pName->isEmpty();
}