From 3281b75e77becb088bace53d9b676ebafb8c3963 Mon Sep 17 00:00:00 2001 From: Woochanlee Date: Fri, 13 Aug 2021 17:18:29 +0900 Subject: [PATCH] aurum: Performance improvement Improved internal logic and structure of getting all information from atspi and updating it. Change-Id: I1558e6a78b67140d70c551beb365f453bc468512 --- libaurum/inc/Accessibility/AccessibleNode.h | 44 +++++++- .../inc/Impl/Accessibility/AtspiAccessibleNode.h | 44 +++++++- .../inc/Impl/Accessibility/MockAccessibleNode.h | 44 +++++++- libaurum/inc/UiObject.h | 42 +++++++ .../src/Impl/Accessibility/AtspiAccessibleNode.cc | 122 ++++++++++++++++++++- .../src/Impl/Accessibility/MockAccessibleNode.cc | 28 +++++ libaurum/src/PartialMatch.cc | 65 ++++++----- libaurum/src/UiObject.cc | 42 ++++++- .../src/Commands/ClearCommand.cc | 2 +- .../src/Commands/DumpObjectTreeCommand.cc | 1 + .../src/Commands/FindElementCommand.cc | 5 +- .../src/Commands/GetAttributeCommand.cc | 12 ++ .../src/Commands/GetSizeCommand.cc | 1 + .../src/Commands/GetValueCommand.cc | 1 + org.tizen.aurum-bootstrap/src/ObjectMapper.cc | 3 +- 15 files changed, 414 insertions(+), 42 deletions(-) diff --git a/libaurum/inc/Accessibility/AccessibleNode.h b/libaurum/inc/Accessibility/AccessibleNode.h index be93c67..bbef725 100644 --- a/libaurum/inc/Accessibility/AccessibleNode.h +++ b/libaurum/inc/Accessibility/AccessibleNode.h @@ -273,6 +273,48 @@ public: /** * @brief TBD + * @since_tizen 6.5 + */ + virtual void updateRoleName() = 0; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + virtual void updateUniqueId() = 0; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + virtual void updateName() = 0; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + virtual void updateApplication() = 0; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + virtual void updateAttributes() = 0; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + virtual void updateStates() = 0; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + virtual void updateExtents() = 0; + + /** + * @brief TBD * @since_tizen 5.5 */ virtual void refresh() = 0; @@ -386,4 +428,4 @@ private: * @brief TBD */ mutable std::mutex mLock; -}; \ No newline at end of file +}; diff --git a/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h b/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h index 89ddb5d..7e08fea 100644 --- a/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h +++ b/libaurum/inc/Impl/Accessibility/AtspiAccessibleNode.h @@ -57,6 +57,48 @@ public: /** * @brief TBD + * @since_tizen 6.5 + */ + void updateRoleName() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateUniqueId() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateName() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateApplication() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateAttributes() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateStates() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateExtents() override; + + /** + * @brief TBD * @since_tizen 5.5 */ void refresh() override; @@ -93,4 +135,4 @@ private: * @since_tizen 5.5 */ AtspiAccessible *mNode; -}; \ No newline at end of file +}; diff --git a/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h b/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h index a102ae2..0256798 100644 --- a/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h +++ b/libaurum/inc/Impl/Accessibility/MockAccessibleNode.h @@ -53,6 +53,48 @@ public: /** * @brief TBD + * @since_tizen 6.5 + */ + void updateRoleName() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateUniqueId() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateName() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateApplication() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateAttributes() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateStates() override; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateExtents() override; + + /** + * @brief TBD * @since_tizen 5.5 */ void refresh() override; @@ -140,4 +182,4 @@ private: * @brief TBD */ std::mutex mLock; -}; \ No newline at end of file +}; diff --git a/libaurum/inc/UiObject.h b/libaurum/inc/UiObject.h index 4777831..15a77a9 100644 --- a/libaurum/inc/UiObject.h +++ b/libaurum/inc/UiObject.h @@ -296,6 +296,48 @@ public: /** * @brief TBD + * @since_tizen 6.5 + */ + void updateRoleName() const; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateUniqueId() const; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateName() const; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateApplication() const; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateAttributes() const; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateStates() const; + + /** + * @brief TBD + * @since_tizen 6.5 + */ + void updateExtents() const; + + /** + * @brief TBD * @since_tizen 5.5 */ void refresh() const; diff --git a/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc b/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc index baf2626..a8f1add 100644 --- a/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc +++ b/libaurum/src/Impl/Accessibility/AtspiAccessibleNode.cc @@ -13,7 +13,9 @@ AtspiAccessibleNode::AtspiAccessibleNode(AtspiAccessible *node) watcher->attach(shared_from_this()); if (mNode) { - this->refresh(); + this->updateApplication(); + this->updateUniqueId(); + this->updateStates(); } else { LOGI("AtspiAccessibleNode Ctor : mNode is null"); } @@ -85,6 +87,124 @@ void* AtspiAccessibleNode::getRawHandler(void) const return static_cast(mNode); } +void AtspiAccessibleNode::updateRoleName() +{ + AtspiWrapper::Atspi_accessible_clear_cache(mNode); + + gchar *rolename = AtspiWrapper::Atspi_accessible_get_role_name(mNode, NULL); + if (rolename) { + mRole = rolename; + g_free(rolename); + } +} + +void AtspiAccessibleNode::updateUniqueId() +{ + AtspiWrapper::Atspi_accessible_clear_cache(mNode); + + #ifdef TIZEN + gchar *uID = AtspiWrapper::Atspi_accessible_get_unique_id(mNode, NULL); + if (uID) { + mId = uID; + g_free(uID); + } + #else + mId = std::string{"N/A"}; + #endif +} + +void AtspiAccessibleNode::updateName() +{ + AtspiWrapper::Atspi_accessible_clear_cache(mNode); + + gchar *name = AtspiWrapper::Atspi_accessible_get_name(mNode, NULL); + if (name) { + mText = name; + g_free(name); + } +} + +void AtspiAccessibleNode::updateApplication() +{ + AtspiWrapper::Atspi_accessible_clear_cache(mNode); + + AtspiAccessible *app = AtspiWrapper::Atspi_accessible_get_application(mNode, NULL); + if (app) { + gchar *pkg = AtspiWrapper::Atspi_accessible_get_name(app, NULL); + if (pkg) { + mPkg = pkg; + g_free(pkg); + } + g_object_unref(app); + } +} + +void AtspiAccessibleNode::updateAttributes() +{ + AtspiWrapper::Atspi_accessible_clear_cache(mNode); + + GHashTable *attributes = AtspiWrapper::Atspi_accessible_get_attributes(mNode, NULL); + if (attributes) { + char *t = (char*)g_hash_table_lookup(attributes, "type"); + if (!t) t = (char*)g_hash_table_lookup(attributes, "t"); + if (!t) t = (char*)g_hash_table_lookup(attributes, "class"); + char *s = (char*)g_hash_table_lookup(attributes, "style"); + char *a = (char*)g_hash_table_lookup(attributes, "automationId"); + + if (t) mType = std::string(t); + if (s) mStyle = std::string(s); + if (a) mAutomationId = std::string(a); + + g_hash_table_unref(attributes); + } +} + +void AtspiAccessibleNode::updateStates() +{ + AtspiWrapper::Atspi_accessible_clear_cache(mNode); + + AtspiStateSet *st = AtspiWrapper::Atspi_accessible_get_state_set(mNode); + if (st) { + GArray *states = AtspiWrapper::Atspi_state_set_get_states(st); + if (states) { + AtspiStateType stat; + for (unsigned int i = 0; states && (i < states->len); ++i) { + stat = g_array_index(states, AtspiStateType, i); + setFeatureProperty(stat); + } + g_array_free(states, 1); + } + g_object_unref(st); + } +} + +void AtspiAccessibleNode::updateExtents() +{ + AtspiWrapper::Atspi_accessible_clear_cache(mNode); + + AtspiComponent *component = AtspiWrapper::Atspi_accessible_get_component_iface(mNode); + if (component) { + AtspiRect *screenExtent = AtspiWrapper::Atspi_component_get_extents( + component, ATSPI_COORD_TYPE_SCREEN, NULL); + if (screenExtent) { + mScreenBoundingBox = + Rect{screenExtent->x, screenExtent->y, screenExtent->x + screenExtent->width, + screenExtent->y + screenExtent->height};\ + g_free(screenExtent); + } + + AtspiRect *windowExtent = AtspiWrapper::Atspi_component_get_extents( + component, ATSPI_COORD_TYPE_WINDOW, NULL); + if (windowExtent) { + mWindowBoundingBox = + Rect{windowExtent->x, windowExtent->y, windowExtent->x + windowExtent->width, + windowExtent->y + windowExtent->height};\ + g_free(windowExtent); + } + g_object_unref(component); + } +} + void AtspiAccessibleNode::refresh() { AtspiWrapper::Atspi_accessible_clear_cache(mNode); diff --git a/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc b/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc index 39ccbfc..a4a3951 100644 --- a/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc +++ b/libaurum/src/Impl/Accessibility/MockAccessibleNode.cc @@ -61,6 +61,34 @@ void MockAccessibleNode::setProperties(std::string text,std::string pkg,std::str mFeatureProperty = featureProperty; } +void MockAccessibleNode::updateRoleName() +{ +} + +void MockAccessibleNode::updateUniqueId() +{ +} + +void MockAccessibleNode::updateName() +{ +} + +void MockAccessibleNode::updateApplication() +{ +} + +void MockAccessibleNode::updateAttributes() +{ +} + +void MockAccessibleNode::updateStates() +{ +} + +void MockAccessibleNode::updateExtents() +{ +} + void MockAccessibleNode::refresh() { } diff --git a/libaurum/src/PartialMatch.cc b/libaurum/src/PartialMatch.cc index bfce60b..8edd3f6 100644 --- a/libaurum/src/PartialMatch.cc +++ b/libaurum/src/PartialMatch.cc @@ -5,20 +5,14 @@ #include #include -bool PartialMatch::checkCriteria(const std::string *textA, const std::string textB, const bool *match) +bool PartialMatch::checkCriteria(const std::string *textA, const std::string textB) { - if (!textA || !match) return false; + if (!textA) return false; std::regex re(*textA); - bool rst = !(!!std::regex_match(textB, re) == (*match)); + bool rst = !(!!std::regex_match(textB, re) == true); return rst; } -bool PartialMatch::checkCriteria(const std::string *textA, const std::string textB) -{ - bool match = true; - return checkCriteria(textA, textB, &match); -} - bool PartialMatch::checkCriteria(const bool *boolA, const bool boolB) { if (!boolA) return false; @@ -33,25 +27,40 @@ std::string PartialMatch::debugPrint() bool PartialMatch::checkCriteria(const std::shared_ptr selector, const std::shared_ptr node) { - if(checkCriteria(selector->mText.get(), node->getText(), selector->mMatchText.get())) return false; - if(checkCriteria(selector->mId.get(), node->getId(), selector->mMatchId.get())) return false; - if(checkCriteria(selector->mAutomationId.get(), node->getAutomationId(), selector->mMatchAutomationId.get())) return false; - if(checkCriteria(selector->mType.get(), node->getType(), selector->mMatchType.get())) return false; - if(checkCriteria(selector->mStyle.get(), node->getStyle(), selector->mMatchStyle.get())) return false; - if(checkCriteria(selector->mPkg.get(), node->getPkg(), selector->mMatchPkg.get())) return false; - if(checkCriteria(selector->mRole.get(), node->getRole(), selector->mMatchRole.get())) return false; - if(checkCriteria(selector->mIschecked.get(), node->isChecked())) return false; - if(checkCriteria(selector->mIscheckable.get(), node->isCheckable())) return false; - if(checkCriteria(selector->mIsclickable.get(), node->isClickable())) return false; - if(checkCriteria(selector->mIsenabled.get(), node->isEnabled())) return false; - if(checkCriteria(selector->mIsfocused.get(), node->isFocused())) return false; - if(checkCriteria(selector->mIsfocusable.get(), node->isFocusable())) return false; - if(checkCriteria(selector->mIsscrollable.get(), node->isScrollable())) return false; - if(checkCriteria(selector->mIsselected.get(), node->isSelected())) return false; - if(checkCriteria(selector->mIsshowing.get(), node->isShowing())) return false; - if(checkCriteria(selector->mIsactive.get(), node->isActive())) return false; - if(checkCriteria(selector->mIsvisible.get(), node->isVisible())) return false; - if(checkCriteria(selector->mIsselectable.get(), node->isSelectable())) return false; + if (selector->mMatchText.get()) { + node->updateName(); + if (checkCriteria(selector->mText.get(), node->getText())) return false; + } + if (selector->mMatchId.get()) { + node->updateUniqueId(); + if (checkCriteria(selector->mId.get(), node->getId())) return false; + } + if (selector->mMatchType.get() || selector->mMatchAutomationId.get() || selector->mMatchStyle.get()) { + node->updateAttributes(); + if (checkCriteria(selector->mAutomationId.get(), node->getAutomationId())) return false; + if (checkCriteria(selector->mType.get(), node->getType())) return false; + if (checkCriteria(selector->mStyle.get(), node->getStyle())) return false; + } + if (selector->mMatchPkg.get()) { + node->updateApplication(); + if (checkCriteria(selector->mPkg.get(), node->getPkg())) return false; + } + if (selector->mMatchRole.get()) { + node->updateRoleName(); + if (checkCriteria(selector->mRole.get(), node->getRole())) return false; + } + if (checkCriteria(selector->mIschecked.get(), node->isChecked())) return false; + if (checkCriteria(selector->mIscheckable.get(), node->isCheckable())) return false; + if (checkCriteria(selector->mIsclickable.get(), node->isClickable())) return false; + if (checkCriteria(selector->mIsenabled.get(), node->isEnabled())) return false; + if (checkCriteria(selector->mIsfocused.get(), node->isFocused())) return false; + if (checkCriteria(selector->mIsfocusable.get(), node->isFocusable())) return false; + if (checkCriteria(selector->mIsscrollable.get(), node->isScrollable())) return false; + if (checkCriteria(selector->mIsselected.get(), node->isSelected())) return false; + if (checkCriteria(selector->mIsshowing.get(), node->isShowing())) return false; + if (checkCriteria(selector->mIsactive.get(), node->isActive())) return false; + if (checkCriteria(selector->mIsvisible.get(), node->isVisible())) return false; + if (checkCriteria(selector->mIsselectable.get(), node->isSelectable())) return false; return true; } diff --git a/libaurum/src/UiObject.cc b/libaurum/src/UiObject.cc index c5b5154..6470a85 100644 --- a/libaurum/src/UiObject.cc +++ b/libaurum/src/UiObject.cc @@ -260,6 +260,41 @@ void UiObject::refresh() const mNode->refresh(); } +void UiObject::updateRoleName() const +{ + mNode->updateRoleName(); +} + +void UiObject::updateUniqueId() const +{ + mNode->updateUniqueId(); +} + +void UiObject::updateName() const +{ + mNode->updateName(); +} + +void UiObject::updateApplication() const +{ + mNode->updateApplication(); +} + +void UiObject::updateAttributes() const +{ + mNode->updateAttributes(); +} + +void UiObject::updateStates() const +{ + mNode->updateStates(); +} + +void UiObject::updateExtents() const +{ + mNode->updateExtents(); +} + bool UiObject::isValid() const { return mNode->isValid(); @@ -267,19 +302,17 @@ bool UiObject::isValid() const const Rect UiObject::getScreenBoundingBox() const { - mNode->refresh(); return mNode->getScreenBoundingBox(); } const Rect UiObject::getWindowBoundingBox() const { - mNode->refresh(); return mNode->getWindowBoundingBox(); } void UiObject::click() const { - mNode->refresh(); + mNode->updateExtents(); const Rect rect = mNode->getScreenBoundingBox(); const Point2D midPoint = rect.midPoint(); mDevice->click(midPoint.x, midPoint.y); @@ -287,7 +320,7 @@ void UiObject::click() const void UiObject::longClick(const unsigned int intv) const { - mNode->refresh(); + mNode->updateExtents(); const Rect rect = mNode->getScreenBoundingBox(); const Point2D midPoint = rect.midPoint(); mDevice->click(midPoint.x, midPoint.y, intv); @@ -304,6 +337,5 @@ std::shared_ptr UiObject::getAccessibleNode() const if (mNode == nullptr) throw; // TODO : wait for animation and refresh current node // mDevice->waitForIdle(); - mNode->refresh(); return mNode; } diff --git a/org.tizen.aurum-bootstrap/src/Commands/ClearCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/ClearCommand.cc index c48bcdb..2f77bb9 100644 --- a/org.tizen.aurum-bootstrap/src/Commands/ClearCommand.cc +++ b/org.tizen.aurum-bootstrap/src/Commands/ClearCommand.cc @@ -30,7 +30,7 @@ bool ClearCommand::hasHintText(std::shared_ptr obj) if (obj) { obj->setText(""); - obj->refresh(); + obj->updateName(); auto text = obj->getText(); if (text.length() != 0) { if (hasHintText(obj)) { diff --git a/org.tizen.aurum-bootstrap/src/Commands/DumpObjectTreeCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/DumpObjectTreeCommand.cc index 013af31..30b3002 100644 --- a/org.tizen.aurum-bootstrap/src/Commands/DumpObjectTreeCommand.cc +++ b/org.tizen.aurum-bootstrap/src/Commands/DumpObjectTreeCommand.cc @@ -18,6 +18,7 @@ void DumpObjectTreeCommand::traverse(::aurum::Element *root, std::shared_ptrmNode) return; std::shared_ptr obj = node->mNode; + obj->refresh(); if (mObjMap->getElement(obj->getId()) == nullptr) mObjMap->addElement(std::move(obj)); diff --git a/org.tizen.aurum-bootstrap/src/Commands/FindElementCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/FindElementCommand.cc index 62230e3..b317714 100644 --- a/org.tizen.aurum-bootstrap/src/Commands/FindElementCommand.cc +++ b/org.tizen.aurum-bootstrap/src/Commands/FindElementCommand.cc @@ -66,10 +66,11 @@ std::vector> FindElementCommand::getSelectors(void) if (founds.size() > 0) { for (auto& found : founds) { UiObject *obj = found.get(); + obj->refresh(); if (mObjMap->getElement(obj->getId()) == nullptr) mObjMap->addElement(std::move(found)); - LOGI("found object : %p elementId:%s", - obj, obj->getId().c_str()); + + LOGI("found object : %p elementId:%s", obj, obj->getId().c_str()); ::aurum::Element *elm = mResponse->add_elements(); elm->set_elementid(obj->getId()); diff --git a/org.tizen.aurum-bootstrap/src/Commands/GetAttributeCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/GetAttributeCommand.cc index 1d54967..65e1446 100644 --- a/org.tizen.aurum-bootstrap/src/Commands/GetAttributeCommand.cc +++ b/org.tizen.aurum-bootstrap/src/Commands/GetAttributeCommand.cc @@ -57,6 +57,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isVisible()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -70,6 +71,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isFocused()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -83,6 +85,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isFocusable()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -96,6 +99,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isCheckable()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -109,6 +113,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isChecked()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -122,6 +127,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isEnabled()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -135,6 +141,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isClickable()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -148,6 +155,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isScrollable()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -161,6 +169,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isSelectable()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -174,6 +183,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isSelected()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -187,6 +197,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isShowing()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; @@ -200,6 +211,7 @@ std::unique_ptr GetAttributeCommand::createCommand(const :: mResponse->set_status(aurum::RspStatus::ERROR); return grpc::Status::OK; } + obj->updateStates(); mResponse->set_boolvalue(obj->isActive()); mResponse->set_status(aurum::RspStatus::OK); return grpc::Status::OK; diff --git a/org.tizen.aurum-bootstrap/src/Commands/GetSizeCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/GetSizeCommand.cc index 35876f9..68e97a6 100644 --- a/org.tizen.aurum-bootstrap/src/Commands/GetSizeCommand.cc +++ b/org.tizen.aurum-bootstrap/src/Commands/GetSizeCommand.cc @@ -16,6 +16,7 @@ GetSizeCommand::GetSizeCommand(const ::aurum::ReqGetSize *request, ObjectMapper *mObjMap = ObjectMapper::getInstance(); std::shared_ptr obj = mObjMap->getElement(mRequest->elementid()); if (obj) { + obj->updateExtents(); ::aurum::Rect *rect = mResponse->mutable_size(); if (type == ::aurum::ReqGetSize_CoordType::ReqGetSize_CoordType_SCREEN) { const Rect &size = obj->getScreenBoundingBox(); diff --git a/org.tizen.aurum-bootstrap/src/Commands/GetValueCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/GetValueCommand.cc index 61c81d9..0faf103 100644 --- a/org.tizen.aurum-bootstrap/src/Commands/GetValueCommand.cc +++ b/org.tizen.aurum-bootstrap/src/Commands/GetValueCommand.cc @@ -15,6 +15,7 @@ GetValueCommand::GetValueCommand(const ::aurum::ReqGetValue *request, std::shared_ptr obj = mObjMap->getElement(mRequest->elementid()); if (obj) { + obj->updateName(); std::string text = obj->getText(); mResponse->set_stringvalue(text.c_str()); mResponse->set_status(::aurum::RspStatus::OK); diff --git a/org.tizen.aurum-bootstrap/src/ObjectMapper.cc b/org.tizen.aurum-bootstrap/src/ObjectMapper.cc index 0dc09e3..863297d 100644 --- a/org.tizen.aurum-bootstrap/src/ObjectMapper.cc +++ b/org.tizen.aurum-bootstrap/src/ObjectMapper.cc @@ -27,8 +27,7 @@ std::shared_ptr ObjectMapper::getElement(std::string elementId) LOGI("getElement for elementId(%s)", elementId.c_str()); if (mObjectMap.count(elementId)) { std::shared_ptr obj = mObjectMap[elementId]; - obj->refresh(); - LOGI("succeeded"); + LOGI("Object find succeeded"); return obj; } LOGI("Id(%s) is not exist in mObjectMap", elementId.c_str()); -- 2.7.4