From b3ace2f05a2bbfd9e7f620b41737dc75b517618b Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Mon, 17 Nov 2014 16:12:53 +0100 Subject: [PATCH] Make JSResolver::escape public and use it from JSInfoPlugin --- src/libtomahawk/resolvers/JSInfoPlugin.cpp | 8 ++++---- src/libtomahawk/resolvers/JSResolver.cpp | 3 ++- src/libtomahawk/resolvers/JSResolver.h | 9 ++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libtomahawk/resolvers/JSInfoPlugin.cpp b/src/libtomahawk/resolvers/JSInfoPlugin.cpp index 4109ae213..b8669ec99 100644 --- a/src/libtomahawk/resolvers/JSInfoPlugin.cpp +++ b/src/libtomahawk/resolvers/JSInfoPlugin.cpp @@ -59,7 +59,7 @@ JSInfoPlugin::getInfo( Tomahawk::InfoSystem::InfoRequestData requestData ) .arg( d->id ) // infoPluginId .arg( requestData.requestId ) // requestId .arg( requestData.type ) // type - .arg( serializeQVariantMap( convertInfoStringHashToQVariantMap( requestData.input.value() ) ) ); // infoHash + .arg( JSResolver::escape( serializeQVariantMap( convertInfoStringHashToQVariantMap( requestData.input.value() ) ) ) ); // infoHash callMethodOnInfoPlugin( eval ); } @@ -73,8 +73,8 @@ JSInfoPlugin::pushInfo( Tomahawk::InfoSystem::InfoPushData pushData ) QString eval = QString( "pushInfo({ type: %1, pushFlags: %2, input: %3, additionalInput: %4})" ) .arg( pushData.type ) .arg( pushData.pushFlags ) - .arg( serializeQVariantMap ( pushData.infoPair.second.toMap() ) ) - .arg( serializeQVariantMap( pushData.infoPair.first ) ); + .arg( JSResolver::escape( serializeQVariantMap ( pushData.infoPair.second.toMap() ) ) ) + .arg( JSResolver::escape( serializeQVariantMap( pushData.infoPair.first ) ) ); callMethodOnInfoPlugin( eval ); } @@ -93,7 +93,7 @@ JSInfoPlugin::notInCacheSlot( Tomahawk::InfoSystem::InfoStringHash criteria, Tom .arg( d->id ) .arg( requestData.requestId ) .arg( requestData.type ) - .arg( serializeQVariantMap( convertInfoStringHashToQVariantMap( criteria ) ) ); + .arg( JSResolver::escape( serializeQVariantMap( convertInfoStringHashToQVariantMap( criteria ) ) ) ); callMethodOnInfoPlugin( eval ); } diff --git a/src/libtomahawk/resolvers/JSResolver.cpp b/src/libtomahawk/resolvers/JSResolver.cpp index e5f1c980e..11fc81cf0 100644 --- a/src/libtomahawk/resolvers/JSResolver.cpp +++ b/src/libtomahawk/resolvers/JSResolver.cpp @@ -1022,5 +1022,6 @@ JSResolver::callOnResolver( const QString& scriptSource ) QString JSResolver::escape( const QString& source ) { - return source.replace( "\\", "\\\\" ).replace( "'", "\\'" ); + QString copy = source; + return copy.replace( "\\", "\\\\" ).replace( "'", "\\'" ); } diff --git a/src/libtomahawk/resolvers/JSResolver.h b/src/libtomahawk/resolvers/JSResolver.h index 3ba555bcf..9ff8df559 100644 --- a/src/libtomahawk/resolvers/JSResolver.h +++ b/src/libtomahawk/resolvers/JSResolver.h @@ -71,6 +71,10 @@ public: */ QVariant evaluateJavaScriptWithResult( const QString& scriptSource ); + /** + * Escape \ and ' in strings so they are safe to use in JavaScript + */ + static QString escape( const QString& source ); public slots: void resolve( const Tomahawk::query_ptr& query ) override; @@ -111,11 +115,6 @@ private: */ QVariant evaluateJavaScriptInternal( const QString& scriptSource ); - /** - * Escape \ and ' in strings so they are safe to use in JavaScript - */ - static QString escape( const QString& source ); - // encapsulate javascript calls QVariantMap resolverSettings(); QVariantMap resolverUserConfig();