tdf#142478 add test that triggers find all and crashes

String "Crash" in document and notes, then trigger "find all",
which produced a crash without the fix in-place.

Change-Id: I8e6e4a9da1afc85643648aee36a03c1fb39ca16d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116769
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
diff --git a/sd/qa/unit/data/odp/search-all-notes.odp b/sd/qa/unit/data/odp/search-all-notes.odp
new file mode 100644
index 0000000..6c38eca
--- /dev/null
+++ b/sd/qa/unit/data/odp/search-all-notes.odp
Binary files differ
diff --git a/sd/qa/unit/uiimpress.cxx b/sd/qa/unit/uiimpress.cxx
index 7d00456..8fa1622 100644
--- a/sd/qa/unit/uiimpress.cxx
+++ b/sd/qa/unit/uiimpress.cxx
@@ -25,6 +25,7 @@
#include <sfx2/request.hxx>
#include <sfx2/viewfrm.hxx>
#include <svl/intitem.hxx>
#include <svl/srchitem.hxx>
#include <svx/svxids.hrc>
#include <svx/svdoashp.hxx>
#include <svx/svdotable.hxx>
@@ -692,6 +693,30 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testTdf123841)
    }
}

CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testSearchAllInDocumentAndNotes)
{
    // tdf#142478
    // "find all" produces a crash when the search string exists in notes
    // and the document

    mxComponent = loadFromDesktop(
        m_directories.getURLFromSrc(u"/sd/qa/unit/data/odp/search-all-notes.odp"));

    auto pXImpressDocument = dynamic_cast<SdXImpressDocument*>(mxComponent.get());
    sd::ViewShell* pViewShell = pXImpressDocument->GetDocShell()->GetViewShell();
    CPPUNIT_ASSERT(pViewShell);

    uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence({
        { "SearchItem.SearchString", uno::makeAny(OUString("Crash")) },
        { "SearchItem.Backward", uno::makeAny(false) },
        { "SearchItem.Command", uno::makeAny(sal_uInt16(SvxSearchCmd::FIND_ALL)) },
    }));

    dispatchCommand(mxComponent, ".uno:ExecuteSearch", aPropertyValues);

    Scheduler::ProcessEventsToIdle();
}

CPPUNIT_PLUGIN_IMPLEMENT();

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */