desktop/CppunitTest_desktop_lib.mk | 3 + desktop/qa/data/search.ods |binary desktop/qa/desktop_lib/test_desktop_lib.cxx | 76 ++++++++++++++++++++++++++-- desktop/source/lib/init.cxx | 8 ++ sc/source/ui/view/viewfun2.cxx | 3 - 5 files changed, 86 insertions(+), 4 deletions(-)
New commits: commit 97c414758d3d8aa3cc2233d52612cf0a33c24c34 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Oct 8 10:56:49 2015 +0200 CppunitTest_desktop_lib: add Calc find-all testcase Fails without commit a31f95b180728c1c671930913b4b4ad96ebcda5f (sc tiled rendering: fix showing all search results, 2015-10-07). Change-Id: Ibc01d468168367f789b3f5046808104fa3f5ef18 diff --git a/desktop/CppunitTest_desktop_lib.mk b/desktop/CppunitTest_desktop_lib.mk index be39460..0c963f9 100644 --- a/desktop/CppunitTest_desktop_lib.mk +++ b/desktop/CppunitTest_desktop_lib.mk @@ -56,11 +56,14 @@ $(eval $(call gb_CppunitTest_use_components,desktop_lib,\ svtools/util/svt \ sw/util/sw \ sw/util/swd \ + sc/util/sc \ + sc/util/scd \ toolkit/util/tk \ ucb/source/core/ucb1 \ ucb/source/ucp/file/ucpfile1 \ unoxml/source/service/unoxml \ xmloff/util/xo \ + i18npool/source/search/i18nsearch \ )) $(eval $(call gb_CppunitTest_use_configuration,desktop_lib)) diff --git a/desktop/qa/data/search.ods b/desktop/qa/data/search.ods new file mode 100644 index 0000000..ea1d731 Binary files /dev/null and b/desktop/qa/data/search.ods differ diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx index a7696d8..3e00e59 100644 --- a/desktop/qa/desktop_lib/test_desktop_lib.cxx +++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx @@ -16,6 +16,11 @@ #include <sfx2/objsh.hxx> #include <sfx2/lokhelper.hxx> #include <test/unoapi_test.hxx> +#include <comphelper/lok.hxx> +#include <comphelper/dispatchcommand.hxx> +#include <comphelper/propertysequence.hxx> +#include <svl/srchitem.hxx> +#include <LibreOfficeKit/LibreOfficeKitEnums.h> #include "../../inc/lib/init.hxx" @@ -45,14 +50,17 @@ public: UnoApiTest::tearDown(); }; - LibLODocument_Impl* loadDoc(const char* pName); + LibLODocument_Impl* loadDoc(const char* pName, LibreOfficeKitDocumentType eType = LOK_DOCTYPE_TEXT); void closeDoc(); + static void callback(int nType, const char* pPayload, void* pData); + void callbackImpl(int nType, const char* pPayload); void testGetStyles(); void testGetFonts(); void testCreateView(); void testGetFilterTypes(); void testGetPartPageRectangles(); + void testSearchCalc(); CPPUNIT_TEST_SUITE(DesktopLOKTest); CPPUNIT_TEST(testGetStyles); @@ -60,16 +68,31 @@ public: CPPUNIT_TEST(testCreateView); CPPUNIT_TEST(testGetFilterTypes); CPPUNIT_TEST(testGetPartPageRectangles); + CPPUNIT_TEST(testSearchCalc); CPPUNIT_TEST_SUITE_END(); uno::Reference<lang::XComponent> mxComponent; + OString m_aTextSelection; }; -LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName) +LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName, LibreOfficeKitDocumentType eType) { OUString aFileURL; createFileURL(OUString::createFromAscii(pName), aFileURL); - mxComponent = loadFromDesktop(aFileURL, "com.sun.star.text.TextDocument"); + OUString aService; + switch (eType) + { + case LOK_DOCTYPE_TEXT: + aService = "com.sun.star.text.TextDocument"; + break; + case LOK_DOCTYPE_SPREADSHEET: + aService = "com.sun.star.sheet.SpreadsheetDocument"; + break; + default: + CPPUNIT_ASSERT(false); + break; + } + mxComponent = loadFromDesktop(aFileURL, aService); if (!mxComponent.is()) { CPPUNIT_ASSERT(false); @@ -86,6 +109,23 @@ void DesktopLOKTest::closeDoc() } } +void DesktopLOKTest::callback(int nType, const char* pPayload, void* pData) +{ + static_cast<DesktopLOKTest*>(pData)->callbackImpl(nType, pPayload); +} + +void DesktopLOKTest::callbackImpl(int nType, const char* pPayload) +{ + switch (nType) + { + case LOK_CALLBACK_TEXT_SELECTION: + { + m_aTextSelection = pPayload; + } + break; + } +} + void DesktopLOKTest::testGetStyles() { LibLODocument_Impl* pDocument = loadDoc("blank_text.odt"); @@ -191,6 +231,36 @@ void DesktopLOKTest::testGetFilterTypes() free(pJSON); } +void DesktopLOKTest::testSearchCalc() +{ + LibLibreOffice_Impl aOffice; + comphelper::LibreOfficeKit::setActive(); + LibLODocument_Impl* pDocument = loadDoc("search.ods"); + pDocument->pClass->initializeForRendering(pDocument); + pDocument->pClass->registerCallback(pDocument, &DesktopLOKTest::callback, this); + + uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence( + { + {"SearchItem.SearchString", uno::makeAny(OUString("foo"))}, + {"SearchItem.Backward", uno::makeAny(false)}, + {"SearchItem.Command", uno::makeAny(static_cast<sal_uInt16>(SvxSearchCmd::FIND_ALL))}, + })); + comphelper::dispatchCommand(".uno:ExecuteSearch", aPropertyValues); + + std::vector<OString> aSelections; + sal_Int32 nIndex = 0; + do + { + OString aToken = m_aTextSelection.getToken(0, ';', nIndex); + aSelections.push_back(aToken); + } while (nIndex >= 0); + // This was 1, find-all only found one match. + CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), aSelections.size()); + + closeDoc(); + comphelper::LibreOfficeKit::setActive(false); +} + CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest); CPPUNIT_PLUGIN_IMPLEMENT(); commit de1f156c6a35757d74b0e337b02743f1962ff0ae Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Oct 8 10:27:53 2015 +0200 lok::Document::initializeForRendering(): handle lack of lok_init() Normally lok_init() sets the component context, but not e.g. during unit testing. Change-Id: If3760f31af2e4b870f65e5aa7557607e8b6a1114 diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 5883857..dc738921 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -569,6 +569,14 @@ static void doc_iniUnoCommands () return; } + if (!xContext.is()) + xContext = comphelper::getProcessComponentContext(); + if (!xContext.is()) + { + SAL_WARN("lok", "iniUnoCommands: Component context is not available"); + return; + } + SfxSlotPool& rSlotPool = SfxSlotPool::GetSlotPool(pViewFrame); uno::Reference<util::XURLTransformer> xParser(util::URLTransformer::create(xContext)); commit dd7d97589bcbed22cf2dd12b574fc28baedf24af Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Thu Oct 8 10:07:46 2015 +0200 sc tiled rendering: no need to show this dialog And it just causes problems during unit testing. Change-Id: Ie8524b726ae2709bab707df9b2984f07357e3059 diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx index 3bd8543..dc0ef09 100644 --- a/sc/source/ui/view/viewfun2.cxx +++ b/sc/source/ui/view/viewfun2.cxx @@ -85,6 +85,7 @@ #include <columnspanset.hxx> #include <rowheightcontext.hxx> #include <LibreOfficeKit/LibreOfficeKitEnums.h> +#include <comphelper/lok.hxx> #include <vector> #include <memory> @@ -1736,7 +1737,7 @@ bool ScViewFunc::SearchAndReplace( const SvxSearchItem* pSearchItem, if (nCommand == SvxSearchCmd::FIND_ALL || nCommand == SvxSearchCmd::REPLACE_ALL) { SfxViewFrame* pViewFrm = SfxViewFrame::Current(); - if (pViewFrm) + if (pViewFrm && !comphelper::LibreOfficeKit::isActive()) { pViewFrm->ShowChildWindow(sc::SearchResultsDlgWrapper::GetChildWindowId()); SfxChildWindow* pWnd = pViewFrm->GetChildWindow(sc::SearchResultsDlgWrapper::GetChildWindowId()); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits