vcl/source/uitest/factory.cxx          |    8 ++++++++
 vcl/source/uitest/uiobject.cxx         |   18 +++++++++++++++---
 vcl/source/uitest/uno/uiobject_uno.cxx |    9 +++++++++
 3 files changed, 32 insertions(+), 3 deletions(-)

New commits:
commit 2578309c4016330381abca761fd5239df5b13c7b
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Mon Mar 28 19:03:20 2016 +0200

    avoid crashes when trying to access missing UI object
    
    Change-Id: Icf6acf23be021bcf386c574289966eff813a67e3

diff --git a/vcl/source/uitest/uno/uiobject_uno.cxx 
b/vcl/source/uitest/uno/uiobject_uno.cxx
index fc66839..485fd1b 100644
--- a/vcl/source/uitest/uno/uiobject_uno.cxx
+++ b/vcl/source/uitest/uno/uiobject_uno.cxx
@@ -23,6 +23,9 @@ UIObjectUnoObj::~UIObjectUnoObj()
 css::uno::Reference<css::ui::test::XUIObject> SAL_CALL 
UIObjectUnoObj::getChild(const OUString& rID)
     throw (css::uno::RuntimeException, std::exception)
 {
+    if (!mpObj)
+        throw css::uno::RuntimeException();
+
     SolarMutexGuard aGuard;
     SAL_DEBUG(mpObj->get_state()["ID"]);
     SAL_DEBUG(rID);
@@ -34,6 +37,9 @@ css::uno::Reference<css::ui::test::XUIObject> SAL_CALL 
UIObjectUnoObj::getChild(
 void SAL_CALL UIObjectUnoObj::executeAction(const OUString& rAction, const 
css::uno::Sequence<css::beans::PropertyValue>& rPropValues)
     throw (css::uno::RuntimeException, std::exception)
 {
+    if (!mpObj)
+        throw css::uno::RuntimeException();
+
     SolarMutexGuard aGuard;
     StringMap aMap;
     for (sal_Int32 i = 0, n = rPropValues.getLength(); i < n; ++i)
@@ -50,6 +56,9 @@ void SAL_CALL UIObjectUnoObj::executeAction(const OUString& 
rAction, const css::
 css::uno::Sequence<css::beans::PropertyValue> UIObjectUnoObj::getState()
     throw (css::uno::RuntimeException, std::exception)
 {
+    if (!mpObj)
+        throw css::uno::RuntimeException();
+
     SolarMutexGuard aGuard;
     StringMap aMap = mpObj->get_state();
     css::uno::Sequence<css::beans::PropertyValue> aProps(aMap.size());
commit 857954637cabcb24b3b012eabefdea587ebb56ae
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Mon Mar 28 19:01:41 2016 +0200

    forgot the uitest spi button wrapper in the factory
    
    Change-Id: I5dfc9b74c2017b6aee9d3c4c01b892e9826cda58

diff --git a/vcl/source/uitest/factory.cxx b/vcl/source/uitest/factory.cxx
index 77c3eb9..6cf1516 100644
--- a/vcl/source/uitest/factory.cxx
+++ b/vcl/source/uitest/factory.cxx
@@ -13,6 +13,7 @@
 #include <vcl/tabpage.hxx>
 #include <vcl/lstbox.hxx>
 #include <vcl/combobox.hxx>
+#include <vcl/spin.hxx>
 
 std::unique_ptr<UIObject> UITestWrapperFactory::createObject(vcl::Window* 
pWindow)
 {
@@ -90,6 +91,13 @@ std::unique_ptr<UIObject> 
UITestWrapperFactory::createObject(vcl::Window* pWindo
          //   return std::unique_ptr<UIObject>(new TabPageUIObject(pTabPage));
         }
         break;
+        case WINDOW_SPINBUTTON:
+        {
+            SpinButton* pSpinButton = dynamic_cast<SpinButton*>(pWindow);
+            assert(pSpinButton);
+            return std::unique_ptr<UIObject>(new SpinUIObject(pSpinButton));
+        }
+        break;
         default:
         break;
     }
commit 23870254b88b28d4ecbcda1c5418beb3ddbcdef0
Author: Markus Mohrhard <markus.mohrh...@googlemail.com>
Date:   Mon Mar 28 19:01:14 2016 +0200

    replace assert with correct error handling
    
    Change-Id: Ie998858ea1c67b3bc8a03c50ee55860cd87a8809

diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx
index 259cb9f..737fa92 100644
--- a/vcl/source/uitest/uiobject.cxx
+++ b/vcl/source/uitest/uiobject.cxx
@@ -183,8 +183,14 @@ void WindowUIObject::execute(const OUString& rAction,
     }
     else if (rAction == "TYPE")
     {
-        assert(rParameters.find("TEXT") != rParameters.end());
-        const OUString& rText = rParameters.find("TEXT")->second;
+        auto itr = rParameters.find("TEXT");
+        if (itr == rParameters.end())
+        {
+            SAL_WARN("vcl.uitest", "missing parameter TEXT to action TYPE");
+            return;
+        }
+
+        const OUString& rText = itr->second;
         auto aKeyEvents = generate_key_events_from_text(rText);
         for (auto itr = aKeyEvents.begin(), itrEnd = aKeyEvents.end();
                 itr != itrEnd; ++itr)
@@ -347,7 +353,13 @@ void EditUIObject::execute(const OUString& rAction,
     {
         if (rParameters.find("TEXT") != rParameters.end())
         {
-            assert(rParameters.size() == 1); // only the text
+            auto itr = rParameters.find("TEXT");
+            if (itr == rParameters.end())
+            {
+                SAL_WARN("vcl.uitest", "missing parameter TEXT to action SET");
+                return;
+            }
+
             const OUString& rText = rParameters.find("TEXT")->second;
             auto aKeyEvents = generate_key_events_from_text(rText);
             for (auto itr = aKeyEvents.begin(), itrEnd = aKeyEvents.end();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to