[Libreoffice-commits] core.git: include/vcl offapi/com vcl/source

Markus Mohrhard markus.mohrhard at googlemail.com
Tue Feb 7 10:16:47 UTC 2017


 include/vcl/uitest/uiobject.hxx           |    8 +++---
 offapi/com/sun/star/ui/test/XUIObject.idl |    2 +
 vcl/source/uitest/uiobject.cxx            |   40 +++++++++++++++++++++---------
 vcl/source/uitest/uno/uiobject_uno.cxx    |    9 ++++++
 vcl/source/uitest/uno/uiobject_uno.hxx    |    2 +
 5 files changed, 45 insertions(+), 16 deletions(-)

New commits:
commit 4c02332d3d60de7a166d10413edf6e76b85d5a91
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Feb 6 18:09:12 2017 +0100

    uitest: provide a way to get a json representation of the ui info
    
    This just provides the information that is also available through the
    getState method in a nicer way.
    
    Change-Id: Ib64f6ecd2c4e9c0a940f3f9607c9a777233e90d2
    Reviewed-on: https://gerrit.libreoffice.org/33978
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/include/vcl/uitest/uiobject.hxx b/include/vcl/uitest/uiobject.hxx
index f2eae6e..c2de7d4 100644
--- a/include/vcl/uitest/uiobject.hxx
+++ b/include/vcl/uitest/uiobject.hxx
@@ -83,7 +83,7 @@ public:
      * This method should not be exposed to the outside world.
      *
      */
-    virtual void dumpState() const;
+    virtual OUString dumpState() const;
 
     /**
      * Currently an internal method to dump the parent-child relationship starting from the current top focus window.
@@ -91,7 +91,7 @@ public:
      * This method should not be exposed to the outside world.
      *
      */
-    virtual void dumpHierarchy() const;
+    virtual OUString dumpHierarchy() const;
 };
 
 class UITEST_DLLPUBLIC WindowUIObject : public UIObject
@@ -113,9 +113,9 @@ public:
 
     virtual std::set<OUString> get_children() const override;
 
-    virtual void dumpState() const override;
+    virtual OUString dumpState() const override;
 
-    virtual void dumpHierarchy() const override;
+    virtual OUString dumpHierarchy() const override;
 
     static std::unique_ptr<UIObject> create(vcl::Window* pWindow);
 
diff --git a/offapi/com/sun/star/ui/test/XUIObject.idl b/offapi/com/sun/star/ui/test/XUIObject.idl
index 9409490..e437b19 100644
--- a/offapi/com/sun/star/ui/test/XUIObject.idl
+++ b/offapi/com/sun/star/ui/test/XUIObject.idl
@@ -25,6 +25,8 @@ interface XUIObject
     string getType();
 
     sequence<string> getChildren();
+
+    string getHierarchy();
 };
 
 }; }; }; }; };
diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx
index d5b1d70..10c67b0 100644
--- a/vcl/source/uitest/uiobject.cxx
+++ b/vcl/source/uitest/uiobject.cxx
@@ -26,8 +26,6 @@
 #include <iostream>
 #include <vector>
 
-#define DUMP_UITEST(x) SAL_INFO("vcl.uitest", x)
-
 UIObject::~UIObject()
 {
 }
@@ -61,12 +59,14 @@ std::set<OUString> UIObject::get_children() const
     return std::set<OUString>();
 }
 
-void UIObject::dumpState() const
+OUString UIObject::dumpState() const
 {
+    return OUString();
 }
 
-void UIObject::dumpHierarchy() const
+OUString UIObject::dumpHierarchy() const
 {
+    return OUString();
 }
 
 namespace {
@@ -425,34 +425,50 @@ OUString WindowUIObject::get_name() const
     return OUString("WindowUIObject");
 }
 
-void WindowUIObject::dumpState() const
+OUString WindowUIObject::dumpState() const
 {
-    DUMP_UITEST(get_name() << " " << mxWindow->get_id());
-    DUMP_UITEST("Implementation Name: " << typeid(*mxWindow.get()).name());
+    OUStringBuffer aStateString = "{\"name\":\"" + mxWindow->get_id() + "\"";
+    aStateString.append(", \"ImplementationName\":\"").appendAscii(typeid(*mxWindow.get()).name()).append("\"");
     StringMap aState = const_cast<WindowUIObject*>(this)->get_state();
     for (auto itr = aState.begin(), itrEnd = aState.end(); itr != itrEnd; ++itr)
     {
-        DUMP_UITEST("Property: " << itr->first << " with value: " << itr->second);
+        OUString property = ",\"" + itr->first + "\":\"" + itr->second + "\"";
+        aStateString.append(property);
     }
+
     size_t nCount = mxWindow->GetChildCount();
+
     if (nCount)
-        DUMP_UITEST("With " << nCount << " Children:");
+        aStateString.append(",\"children\":[");
 
     for (size_t i = 0; i < nCount; ++i)
     {
+        if (i != 0)
+        {
+            aStateString.append(",");
+        }
         vcl::Window* pChild = mxWindow->GetChild(i);
         std::unique_ptr<UIObject> pChildWrapper =
             pChild->GetUITestFactory()(pChild);
-        pChildWrapper->dumpState();
+        OUString children = pChildWrapper->dumpState();
+        aStateString.append(children);
     }
+
+    if (nCount)
+        aStateString.append("]");
+
+    aStateString.append("}");
+
+    OUString aString = aStateString.makeStringAndClear();
+    return aString.replaceAll("\n", "\\n");
 }
 
-void WindowUIObject::dumpHierarchy() const
+OUString WindowUIObject::dumpHierarchy() const
 {
     vcl::Window* pDialogParent = get_dialog_parent(mxWindow.get());
     std::unique_ptr<UIObject> pParentWrapper =
         pDialogParent->GetUITestFactory()(pDialogParent);
-    pParentWrapper->dumpState();
+    return pParentWrapper->dumpState();
 }
 
 std::unique_ptr<UIObject> WindowUIObject::create(vcl::Window* pWindow)
diff --git a/vcl/source/uitest/uno/uiobject_uno.cxx b/vcl/source/uitest/uno/uiobject_uno.cxx
index 9907e7b..c3db38a 100644
--- a/vcl/source/uitest/uno/uiobject_uno.cxx
+++ b/vcl/source/uitest/uno/uiobject_uno.cxx
@@ -112,4 +112,13 @@ css::uno::Sequence<OUString> UIObjectUnoObj::getSupportedServiceNames()
     return aServiceNames;
 }
 
+OUString SAL_CALL UIObjectUnoObj::getHierarchy()
+{
+    if (!mpObj)
+        throw css::uno::RuntimeException();
+
+    SolarMutexGuard aGuard;
+    return mpObj->dumpHierarchy();
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/uitest/uno/uiobject_uno.hxx b/vcl/source/uitest/uno/uiobject_uno.hxx
index 510c22c..b709cdc 100644
--- a/vcl/source/uitest/uno/uiobject_uno.hxx
+++ b/vcl/source/uitest/uno/uiobject_uno.hxx
@@ -52,6 +52,8 @@ public:
     sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override;
 
     css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+
+    OUString SAL_CALL getHierarchy() override;
 };
 
 #endif


More information about the Libreoffice-commits mailing list