Adds name attribute to UIElement in batch mode 61/164561/43
authorRadoslaw Cybulski <r.cybulski@partner.samsung.com>
Tue, 19 Dec 2017 16:00:33 +0000 (17:00 +0100)
committerRadoslaw Cybulski <r.cybulski@partner.samsung.com>
Thu, 18 Jan 2018 12:29:38 +0000 (13:29 +0100)
Adds name attribute, which returns atspi object's current name.

Change-Id: Ia69f5577b3393790e767bd479f5452887985ad83

src/batch/BatchRunner.cpp

index 61e64ea..657a8fb 100644 (file)
@@ -122,6 +122,21 @@ struct TestExecutor : ExecutorInterface {
                                return result;
                        }
                };
+               getters[ { EvaluationValue::Kind::UIELEMENT, "name" }] = [&](const EvaluationValue & self) -> EvaluationValue {
+                       auto uiElem = self.asUiElement();
+                       ASSERT(uiElem->getObject());
+                       Optional<std::string> result;
+                       executeOnMainThread([&]()
+                       {
+                               auto root = getVisibleRoot();
+                               auto atspi = Singleton<UniversalSwitch>::instance().getAtspi();
+                               auto found = atspi->getName(uiElem->getObject());
+                               if (found)
+                                       result = std::move(*found);
+                       });
+                       if (!result) throw EvaluationFailure{} << "failed to get at-spi object's name (use dlogutil to get at-spi error message)";
+                       return *result;
+               };
                for (auto activityName : ActivityFactory::getInstance()->getAllActivityTypes()) {
                        variables[activityName] = EvaluationValue::FunctionType::Type{
                                [ = ](EvaluationContext & ec, std::vector<EvaluationValue> args) -> EvaluationValue {