sc/qa/unit/SparklineImportExportTest.cxx     |    9 +++--
 sc/qa/unit/copy_paste_test.cxx               |   29 +++++++++--------
 sc/qa/unit/helper/qahelper.cxx               |    3 +
 sc/qa/unit/jumbosheets-test.cxx              |   27 ++++++++--------
 sc/qa/unit/opencl-test.cxx                   |    3 +
 sc/qa/unit/tiledrendering/tiledrendering.cxx |    5 +--
 sc/qa/unit/uicalc/uicalc.cxx                 |   45 +++++++++++++--------------
 sc/source/filter/excel/xestream.cxx          |    3 +
 sc/source/filter/oox/workbookhelper.cxx      |    3 +
 sc/source/ui/vba/excelvbahelper.cxx          |    3 +
 10 files changed, 70 insertions(+), 60 deletions(-)

New commits:
commit 5940427063f7a6ef914b65cf9e2396eb2cc828ca
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Wed Dec 21 11:54:23 2022 +0100
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Wed Dec 21 14:41:10 2022 +0000

    Use ScModelObj's existing XUnoTunnel
    
    Change-Id: I2f0a6bbc5fe382a64d0a32ba955a28f44dad388c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144681
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/sc/qa/unit/SparklineImportExportTest.cxx 
b/sc/qa/unit/SparklineImportExportTest.cxx
index 993303e00a4e..681cbd35ec79 100644
--- a/sc/qa/unit/SparklineImportExportTest.cxx
+++ b/sc/qa/unit/SparklineImportExportTest.cxx
@@ -10,6 +10,7 @@
 #include <test/unoapixml_test.hxx>
 
 #include <com/sun/star/lang/XComponent.hpp>
+#include <comphelper/servicehelper.hxx>
 #include <docsh.hxx>
 #include <Sparkline.hxx>
 #include <SparklineGroup.hxx>
@@ -149,13 +150,13 @@ void checkSparklines(ScDocument& rDocument)
 void SparklineImportExportTest::testSparklinesRoundtripXLSX()
 {
     loadFromURL(u"xlsx/Sparklines.xlsx");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
 
     checkSparklines(*pModelObj->GetDocument());
 
     saveAndReload("Calc Office Open XML");
-    pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    pModelObj = comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
 
     checkSparklines(*pModelObj->GetDocument());
@@ -212,14 +213,14 @@ void SparklineImportExportTest::testSparklinesExportODS()
 void SparklineImportExportTest::testSparklinesRoundtripODS()
 {
     loadFromURL(u"xlsx/Sparklines.xlsx");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
 
     checkSparklines(*pModelObj->GetDocument());
 
     // Trigger export and import of sparklines
     saveAndReload("calc8");
-    pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    pModelObj = comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
 
     checkSparklines(*pModelObj->GetDocument());
diff --git a/sc/qa/unit/copy_paste_test.cxx b/sc/qa/unit/copy_paste_test.cxx
index c020565655ef..b91dee89dea2 100644
--- a/sc/qa/unit/copy_paste_test.cxx
+++ b/sc/qa/unit/copy_paste_test.cxx
@@ -14,6 +14,7 @@
 #include <test/unoapi_test.hxx>
 #include <comphelper/processfactory.hxx>
 #include <comphelper/propertyvalue.hxx>
+#include <comphelper/servicehelper.hxx>
 
 #include <docsh.hxx>
 #include <docfunc.hxx>
@@ -76,7 +77,7 @@ void ScCopyPasteTest::testCopyPasteXLS()
 {
     loadFromURL(u"xls/chartx2.xls");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -148,7 +149,7 @@ void ScCopyPasteTest::testTdf84411()
 {
     mxComponent = loadFromDesktop("private:factory/scalc");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -190,7 +191,7 @@ void ScCopyPasteTest::testTdf124565()
 {
     mxComponent = loadFromDesktop("private:factory/scalc");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -229,7 +230,7 @@ void ScCopyPasteTest::testTdf126421()
 {
     mxComponent = loadFromDesktop("private:factory/scalc");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -257,7 +258,7 @@ void ScCopyPasteTest::testTdf107394()
 {
     mxComponent = loadFromDesktop("private:factory/scalc");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -315,7 +316,7 @@ static ScAddress lcl_getMergeSizeOfCell(const ScDocument& 
rDoc, SCCOL nCol, SCRO
 void ScCopyPasteTest::testTdf53431_fillOnAutofilter()
 {
     loadFromURL(u"ods/tdf53431_autofilterFilldown.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -376,7 +377,7 @@ void ScCopyPasteTest::testTdf53431_fillOnAutofilter()
 void ScCopyPasteTest::testTdf40993_fillMergedCells()
 {
     loadFromURL(u"ods/tdf40993_fillMergedCells.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -485,7 +486,7 @@ void 
ScCopyPasteTest::testTdf43958_clickSelectOnMergedCells()
 void ScCopyPasteTest::testTdf88782_autofillLinearNumbersInMergedCells()
 {
     loadFromURL(u"ods/tdf88782_AutofillLinearNumbersInMergedCells.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -547,7 +548,7 @@ void 
ScCopyPasteTest::testTdf88782_autofillLinearNumbersInMergedCells()
 void ScCopyPasteTest::tdf137621_autofillMergedBool()
 {
     loadFromURL(u"ods/tdf137621_autofillMergedBool.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -580,7 +581,7 @@ void ScCopyPasteTest::tdf137621_autofillMergedBool()
 void ScCopyPasteTest::tdf137205_autofillDatesInMergedCells()
 {
     loadFromURL(u"ods/tdf137205_AutofillDatesInMergedCells.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -619,7 +620,7 @@ void ScCopyPasteTest::addToUserList(const OUString& rStr)
 void ScCopyPasteTest::tdf137653_137654_autofillUserlist()
 {
     loadFromURL(u"ods/tdf137653_137654_autofillUserlist.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -679,7 +680,7 @@ void ScCopyPasteTest::tdf137653_137654_autofillUserlist()
 void ScCopyPasteTest::tdf113500_autofillMixed()
 {
     loadFromURL(u"ods/tdf113500_autofillMixed.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -729,7 +730,7 @@ void ScCopyPasteTest::tdf113500_autofillMixed()
 void ScCopyPasteTest::tdf137625_autofillMergedUserlist()
 {
     loadFromURL(u"ods/tdf137625_autofillMergedUserlist.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -789,7 +790,7 @@ void ScCopyPasteTest::tdf137625_autofillMergedUserlist()
 void ScCopyPasteTest::tdf137624_autofillMergedMixed()
 {
     loadFromURL(u"ods/tdf137624_autofillMergedMixed.ods");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
diff --git a/sc/qa/unit/helper/qahelper.cxx b/sc/qa/unit/helper/qahelper.cxx
index f9c7af04a813..f0fc204646a4 100644
--- a/sc/qa/unit/helper/qahelper.cxx
+++ b/sc/qa/unit/helper/qahelper.cxx
@@ -12,6 +12,7 @@
 #include "debughelper.hxx"
 #include <drwlayer.hxx>
 #include <comphelper/sequence.hxx>
+#include <comphelper/servicehelper.hxx>
 #include <compiler.hxx>
 #include <conditio.hxx>
 #include <stlsheet.hxx>
@@ -470,7 +471,7 @@ void ScModelTestBase::createScDoc(const char* pName, const 
char* pPassword, bool
 
 ScDocument* ScModelTestBase::getScDoc()
 {
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     return pModelObj->GetDocument();
 }
diff --git a/sc/qa/unit/jumbosheets-test.cxx b/sc/qa/unit/jumbosheets-test.cxx
index 05b2c2248650..5af459dd4c0f 100644
--- a/sc/qa/unit/jumbosheets-test.cxx
+++ b/sc/qa/unit/jumbosheets-test.cxx
@@ -14,6 +14,7 @@
 #include <vcl/keycodes.hxx>
 #include <comphelper/processfactory.hxx>
 #include <comphelper/propertyvalue.hxx>
+#include <comphelper/servicehelper.hxx>
 #include <svx/svdoole2.hxx>
 #include <svx/svdpage.hxx>
 
@@ -90,7 +91,7 @@ void 
ScJumboSheetsTest::testRoundtripColumn2000(std::u16string_view name, const
 {
     loadFromURL(name);
     {
-        ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+        ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
         CPPUNIT_ASSERT(pModelObj);
         ScDocument* pDoc = pModelObj->GetDocument();
         // Check the value at BXX1 (2000th column).
@@ -104,7 +105,7 @@ void 
ScJumboSheetsTest::testRoundtripColumn2000(std::u16string_view name, const
 
     saveAndReload(OUString::createFromAscii(format));
     {
-        ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+        ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
         CPPUNIT_ASSERT(pModelObj);
 
         ScDocument* pDoc = pModelObj->GetDocument();
@@ -120,7 +121,7 @@ void ScJumboSheetsTest::testRoundtripColumnRangeOds()
 {
     loadFromURL(u"ods/sum-whole-column-row.ods");
     {
-        ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+        ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
         CPPUNIT_ASSERT(pModelObj);
         ScDocument* pDoc = pModelObj->GetDocument();
         // Check the formula referencing the whole-row range.
@@ -131,7 +132,7 @@ void ScJumboSheetsTest::testRoundtripColumnRangeOds()
 
     saveAndReload("calc8");
     {
-        ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+        ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
         CPPUNIT_ASSERT(pModelObj);
 
         ScDocument* pDoc = pModelObj->GetDocument();
@@ -155,7 +156,7 @@ void ScJumboSheetsTest::testRoundtripColumnRangeXlsx()
     loadFromURL(u"ods/sum-whole-column-row.ods");
     saveAndReload("Calc Office Open XML");
     {
-        ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+        ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
         CPPUNIT_ASSERT(pModelObj);
 
         ScDocument* pDoc = pModelObj->GetDocument();
@@ -181,7 +182,7 @@ void 
ScJumboSheetsTest::testRoundtripNamedRanges(std::u16string_view name, const
                                                { "COLUMN_E", "$Sheet1.$E:$E" },
                                                { "ROW_4", "$Sheet1.$4:$4" } };
     {
-        ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+        ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
         CPPUNIT_ASSERT(pModelObj);
         ScDocument* pDoc = pModelObj->GetDocument();
         for (const auto& range : ranges)
@@ -194,7 +195,7 @@ void 
ScJumboSheetsTest::testRoundtripNamedRanges(std::u16string_view name, const
 
     saveAndReload(OUString::createFromAscii(format));
     {
-        ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+        ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
         CPPUNIT_ASSERT(pModelObj);
         ScDocument* pDoc = pModelObj->GetDocument();
         for (const auto& range : ranges)
@@ -222,7 +223,7 @@ void ScJumboSheetsTest::testNamedRangeNameConflict()
     // as named references even though with 16k columns those are normally 
NUM1 and NUM2 cells.
     loadFromURL(u"ods/named-range-conflict.ods");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
     pDoc->CalcAll();
@@ -244,7 +245,7 @@ void ScJumboSheetsTest::testTdf134553()
 {
     loadFromURL(u"xlsx/tdf134553.xlsx");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
 
@@ -296,7 +297,7 @@ void ScJumboSheetsTest::testTdf134392()
     // Without the fix in place, the file would have crashed
     loadFromURL(u"xlsx/tdf134392.xlsx");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
     pDoc->CalcAll(); // perform hard re-calculation.
@@ -305,7 +306,7 @@ void ScJumboSheetsTest::testTdf134392()
 void ScJumboSheetsTest::testTdf147509()
 {
     mxComponent = loadFromDesktop("private:factory/scalc");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
 
     ScDocument* pDoc = pModelObj->GetDocument();
@@ -334,7 +335,7 @@ void ScJumboSheetsTest::testTdf147509()
 void ScJumboSheetsTest::testTdf133033()
 {
     mxComponent = loadFromDesktop("private:factory/scalc");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
 
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN | KEY_MOD1);
@@ -349,7 +350,7 @@ void ScJumboSheetsTest::testTdf109061()
     // Without the fix in place, the file would have crashed
     loadFromURL(u"xlsx/tdf109061.xlsx");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     ScDocument* pDoc = pModelObj->GetDocument();
     pDoc->CalcAll(); // perform hard re-calculation.
diff --git a/sc/qa/unit/opencl-test.cxx b/sc/qa/unit/opencl-test.cxx
index d01baf7cac36..a3a278ae3a89 100644
--- a/sc/qa/unit/opencl-test.cxx
+++ b/sc/qa/unit/opencl-test.cxx
@@ -12,6 +12,7 @@
 
 #include <com/sun/star/document/MacroExecMode.hpp>
 #include <comphelper/sequence.hxx>
+#include <comphelper/servicehelper.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -537,7 +538,7 @@ void ScOpenCLTest::initTestEnv(std::u16string_view fileName)
 
 ScDocument* ScOpenCLTest::getScDoc2()
 {
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent2.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent2);
     CPPUNIT_ASSERT(pModelObj);
     return pModelObj->GetDocument();
 }
diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx 
b/sc/qa/unit/tiledrendering/tiledrendering.cxx
index 8ca176d8d6cb..65e1f894c834 100644
--- a/sc/qa/unit/tiledrendering/tiledrendering.cxx
+++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx
@@ -17,6 +17,7 @@
 #include <comphelper/dispatchcommand.hxx>
 #include <comphelper/processfactory.hxx>
 #include <comphelper/propertysequence.hxx>
+#include <comphelper/servicehelper.hxx>
 #include <osl/conditn.hxx>
 #include <sfx2/dispatch.hxx>
 #include <sfx2/viewfrm.hxx>
@@ -233,7 +234,7 @@ ScModelObj* ScTiledRenderingTest::createDoc(const char* 
pName)
 {
     loadFromURL(OUString::createFromAscii(pName));
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     
pModelObj->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>());
     return pModelObj;
@@ -2927,7 +2928,7 @@ void ScTiledRenderingTest::testInvalidEntrySave()
 
     // .uno:Save modifies the original file, make a copy first
     saveAndReload("Calc Office Open XML");
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     CPPUNIT_ASSERT(pModelObj);
     
pModelObj->initializeForTiledRendering(uno::Sequence<beans::PropertyValue>());
     const ScDocument* pDoc = pModelObj->GetDocument();
diff --git a/sc/qa/unit/uicalc/uicalc.cxx b/sc/qa/unit/uicalc/uicalc.cxx
index 4976c19c17f0..4b424308593a 100644
--- a/sc/qa/unit/uicalc/uicalc.cxx
+++ b/sc/qa/unit/uicalc/uicalc.cxx
@@ -17,6 +17,7 @@
 #include <comphelper/processfactory.hxx>
 #include <comphelper/propertysequence.hxx>
 #include <comphelper/scopeguard.hxx>
+#include <comphelper/servicehelper.hxx>
 #include <com/sun/star/awt/Key.hpp>
 #include <com/sun/star/frame/Desktop.hpp>
 #include <com/sun/star/sheet/GlobalSheetSettings.hpp>
@@ -86,7 +87,7 @@ void ScUiCalcTest::goToCell(const OUString& rCell)
 
 void ScUiCalcTest::typeString(const std::u16string_view& rStr)
 {
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     for (const char16_t c : rStr)
     {
         pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, c, 0);
@@ -101,7 +102,7 @@ void ScUiCalcTest::insertStringToCell(const OUString& 
rCell, const std::u16strin
 
     typeString(rStr);
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN);
     Scheduler::ProcessEventsToIdle();
@@ -113,7 +114,7 @@ void ScUiCalcTest::insertArrayToCell(const OUString& rCell, 
const std::u16string
 
     typeString(rStr);
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_MOD1 | KEY_SHIFT | 
awt::Key::RETURN);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_MOD1 | KEY_SHIFT | 
awt::Key::RETURN);
     Scheduler::ProcessEventsToIdle();
@@ -635,7 +636,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf56036)
     typeString(u"=SUM( 1 + 2 ");
 
     // Insert Newline
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_MOD1 | 
awt::Key::RETURN);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_MOD1 | 
awt::Key::RETURN);
     Scheduler::ProcessEventsToIdle();
@@ -662,7 +663,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf119162)
     typeString(u"Test");
 
     // Insert Newline
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_MOD1 | 
awt::Key::RETURN);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, KEY_MOD1 | 
awt::Key::RETURN);
     Scheduler::ProcessEventsToIdle();
@@ -781,7 +782,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf146795)
     Scheduler::ProcessEventsToIdle();
 
     // Move to B3
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN);
     Scheduler::ProcessEventsToIdle();
 
@@ -827,7 +828,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf147744)
     Scheduler::ProcessEventsToIdle();
 
     // Move to A3
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN);
     Scheduler::ProcessEventsToIdle();
 
@@ -881,7 +882,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf138432)
     dispatchCommand(mxComponent, ".uno:Paste", {});
     Scheduler::ProcessEventsToIdle();
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN);
     Scheduler::ProcessEventsToIdle();
@@ -947,7 +948,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf144244)
     createScDoc("tdf144244.ods");
     ScDocument* pDoc = getScDoc();
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     uno::Reference<drawing::XDrawPage> 
xPage(pModelObj->getDrawPages()->getByIndex(0),
                                              uno::UNO_QUERY_THROW);
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xPage->getCount());
@@ -965,7 +966,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf144244)
 
     // Without the fix in place, this test would have crashed
     saveAndReload("calc8");
-    pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    pModelObj = comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pDoc = getScDoc();
 
     CPPUNIT_ASSERT_EQUAL(OUString("x"), pDoc->GetString(ScAddress(0, 0, 0)));
@@ -1121,7 +1122,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf140151)
     ScDocShell* pDocSh = getScDocShell();
 
     // Focus is already on the button
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN);
     Scheduler::ProcessEventsToIdle();
@@ -1138,7 +1139,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf68290)
 
     const std::vector<OUString> aExpectedAddresses{ "L3", "L6", "L9", "L10", 
"L11", "L13", "L15" };
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     for (const auto& rAddress : aExpectedAddresses)
     {
         lcl_AssertCurrentCursorPosition(*pDocSh, rAddress);
@@ -1157,7 +1158,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf132057)
 
     lcl_AssertCurrentCursorPosition(*pDocSh, u"AU43");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RETURN);
     Scheduler::ProcessEventsToIdle();
 
@@ -1173,7 +1174,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf122232)
     //Start with from C6. Press tabulator to reach G6.
     lcl_AssertCurrentCursorPosition(*pDocSh, u"C6");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_TAB);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_TAB);
     Scheduler::ProcessEventsToIdle();
@@ -1192,7 +1193,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf123052)
 
     std::vector<OUString> aExpectedAddresses{ "F3", "D5", "E5", "F6", "A8", 
"E9" };
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     for (const auto& rAddress : aExpectedAddresses)
     {
         pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::TAB);
@@ -1279,7 +1280,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf146994)
 
     dispatchCommand(mxComponent, ".uno:Copy", {});
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RIGHT);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RIGHT);
     Scheduler::ProcessEventsToIdle();
@@ -1314,7 +1315,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf45020)
 
     goToCell("A1");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_SHIFT | KEY_DOWN);
     Scheduler::ProcessEventsToIdle();
 
@@ -1633,7 +1634,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf117458)
     aInputOption.SetMoveDir(DIR_BOTTOM);
     pMod->SetInputOptions(aInputOption);
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
     Scheduler::ProcessEventsToIdle();
 
@@ -1886,7 +1887,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf119793)
 {
     createScDoc("tdf119793.ods");
 
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     uno::Reference<drawing::XDrawPage> 
xPage(pModelObj->getDrawPages()->getByIndex(0),
                                              uno::UNO_QUERY_THROW);
     uno::Reference<drawing::XShape> xShape(xPage->getByIndex(0), 
uno::UNO_QUERY_THROW);
@@ -2385,7 +2386,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf136113)
     lcl_SelectObjectByName(*getViewShell(), u"Arrow");
 
     // Move the shape up
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::UP);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::UP);
     Scheduler::ProcessEventsToIdle();
@@ -2520,7 +2521,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf116421)
     dispatchCommand(mxComponent, ".uno:AutoSum", {});
 
     // Use RETURN key to exit autosum edit view
-    ScModelObj* pModelObj = dynamic_cast<ScModelObj*>(mxComponent.get());
+    ScModelObj* pModelObj = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, awt::Key::RETURN);
     pModelObj->postKeyEvent(LOK_KEYEVENT_KEYUP, 0, awt::Key::RETURN);
     Scheduler::ProcessEventsToIdle();
@@ -2927,7 +2928,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest, testTdf152014)
     dispatchCommand(mxComponent2, ".uno:Paste", {});
     Scheduler::ProcessEventsToIdle();
 
-    ScModelObj* pModelObj2 = dynamic_cast<ScModelObj*>(mxComponent2.get());
+    ScModelObj* pModelObj2 = 
comphelper::getFromUnoTunnel<ScModelObj>(mxComponent2);
     CPPUNIT_ASSERT(pModelObj2);
     ScDocument* pDoc2 = pModelObj2->GetDocument();
 
diff --git a/sc/source/filter/excel/xestream.cxx 
b/sc/source/filter/excel/xestream.cxx
index 75c241493b07..467dfefd278f 100644
--- a/sc/source/filter/excel/xestream.cxx
+++ b/sc/source/filter/excel/xestream.cxx
@@ -70,6 +70,7 @@
 
 #include <com/sun/star/task/XStatusIndicator.hpp>
 #include <memory>
+#include <comphelper/servicehelper.hxx>
 #include <comphelper/storagehelper.hxx>
 
 #include <externalrefmgr.hxx>
@@ -994,7 +995,7 @@ ScDocShell* XclExpXmlStream::getDocShell()
 {
     uno::Reference< XInterface > xModel( getModel(), UNO_QUERY );
 
-    ScModelObj *pObj = dynamic_cast < ScModelObj* >( xModel.get() );
+    ScModelObj *pObj = comphelper::getFromUnoTunnel < ScModelObj >( xModel );
 
     if ( pObj )
         return static_cast < ScDocShell* >( pObj->GetEmbeddedObject() );
diff --git a/sc/source/filter/oox/workbookhelper.cxx 
b/sc/source/filter/oox/workbookhelper.cxx
index 7d651b9764ab..3a542df0313e 100644
--- a/sc/source/filter/oox/workbookhelper.cxx
+++ b/sc/source/filter/oox/workbookhelper.cxx
@@ -30,6 +30,7 @@
 #include <com/sun/star/document/XDocumentProperties.hpp>
 #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
 #include <com/sun/star/document/XViewDataSupplier.hpp>
+#include <comphelper/servicehelper.hxx>
 #include <o3tl/any.hxx>
 #include <osl/thread.h>
 #include <osl/diagnose.h>
@@ -533,7 +534,7 @@ void WorkbookGlobals::initialize()
 
     if (mxDoc)
     {
-        ScModelObj* pModel = dynamic_cast<ScModelObj*>(mxDoc.get());
+        ScModelObj* pModel = comphelper::getFromUnoTunnel<ScModelObj>(mxDoc);
         if (pModel)
             mpDocShell = static_cast<ScDocShell*>(pModel->GetEmbeddedObject());
         if (mpDocShell)
diff --git a/sc/source/ui/vba/excelvbahelper.cxx 
b/sc/source/ui/vba/excelvbahelper.cxx
index 317b064543b2..1c1824d89533 100644
--- a/sc/source/ui/vba/excelvbahelper.cxx
+++ b/sc/source/ui/vba/excelvbahelper.cxx
@@ -21,6 +21,7 @@
 
 #include <basic/basmgr.hxx>
 #include <comphelper/processfactory.hxx>
+#include <comphelper/servicehelper.hxx>
 #include <vbahelper/vbahelper.hxx>
 #include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/sheet/XSheetCellRange.hpp>
@@ -238,7 +239,7 @@ ScDocShell*
 getDocShell( const css::uno::Reference< css::frame::XModel>& xModel )
 {
     uno::Reference< uno::XInterface > xIf( xModel, uno::UNO_QUERY_THROW );
-    ScModelObj* pModel = dynamic_cast< ScModelObj* >( xIf.get() );
+    ScModelObj* pModel = comphelper::getFromUnoTunnel< ScModelObj >( xIf );
     ScDocShell* pDocShell = nullptr;
     if ( pModel )
         pDocShell = static_cast<ScDocShell*>(pModel->GetEmbeddedObject());

Reply via email to