From 2d52230e71c6259f4ce97b8fd5ee134f2ad4dcff Mon Sep 17 00:00:00 2001 From: Woochanlee Date: Thu, 29 Jul 2021 18:27:28 +0900 Subject: [PATCH] bootstrap: Modify the id for object management as giving by atspi The bootstrap was managed by the object that was granted by its own. Unified by the id granted by atspi, it removes unnecessary operation. ABI break - i deleted id in proto. script can't use id anymore. Change-Id: Ic6e3e8a18a2fe35b152c86b2214c0037b0ad6f81 --- org.tizen.aurum-bootstrap/inc/ObjectMapper.h | 10 +--- .../src/Commands/DumpObjectTreeCommand.cc | 9 +-- .../src/Commands/FindElementCommand.cc | 17 +++--- org.tizen.aurum-bootstrap/src/ObjectMapper.cc | 60 ++++--------------- protocol/aurum.proto | 1 - 5 files changed, 26 insertions(+), 71 deletions(-) diff --git a/org.tizen.aurum-bootstrap/inc/ObjectMapper.h b/org.tizen.aurum-bootstrap/inc/ObjectMapper.h index 7f4f651..7a1b33f 100644 --- a/org.tizen.aurum-bootstrap/inc/ObjectMapper.h +++ b/org.tizen.aurum-bootstrap/inc/ObjectMapper.h @@ -8,7 +8,6 @@ class ObjectMapper { private: std::map> mObjectMap; - std::map mObjectMapReverse; unsigned long long mObjCounter; private: @@ -20,12 +19,7 @@ public: public: static ObjectMapper *getInstance(); std::string addElement(std::shared_ptr object); - - std::shared_ptr getElement(const std::string key); - std::string getElement(std::shared_ptr object); - - bool removeElement(const std::string key); - bool removeElement(std::shared_ptr object); - + std::shared_ptr getElement(const std::string elementId); + bool removeElement(const std::string elementId); void cleanUp(); }; diff --git a/org.tizen.aurum-bootstrap/src/Commands/DumpObjectTreeCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/DumpObjectTreeCommand.cc index 47008f3..013af31 100644 --- a/org.tizen.aurum-bootstrap/src/Commands/DumpObjectTreeCommand.cc +++ b/org.tizen.aurum-bootstrap/src/Commands/DumpObjectTreeCommand.cc @@ -16,14 +16,12 @@ DumpObjectTreeCommand::DumpObjectTreeCommand(const ::aurum::ReqDumpObjectTree *r void DumpObjectTreeCommand::traverse(::aurum::Element *root, std::shared_ptr node, int depth) { if (!node->mNode) return; - std::string key{}; std::shared_ptr obj = node->mNode; - key = mObjMap->getElement(obj); - if (key.length() <= 0) - key = mObjMap->addElement(obj); + if (mObjMap->getElement(obj->getId()) == nullptr) + mObjMap->addElement(std::move(obj)); - root->set_elementid(key); + root->set_elementid(obj->getId()); ::aurum::Rect *rect = root->mutable_geometry(); const Rect &size = obj->getScreenBoundingBox(); @@ -43,7 +41,6 @@ void DumpObjectTreeCommand::traverse(::aurum::Element *root, std::shared_ptrset_widget_style(obj->getElementStyle()); root->set_text(obj->getText()); - root->set_id(obj->getId()); root->set_automationid(obj->getAutomationId()); root->set_package(obj->getApplicationPackage()); root->set_role(obj->getRole()); diff --git a/org.tizen.aurum-bootstrap/src/Commands/FindElementCommand.cc b/org.tizen.aurum-bootstrap/src/Commands/FindElementCommand.cc index 5302383..62230e3 100644 --- a/org.tizen.aurum-bootstrap/src/Commands/FindElementCommand.cc +++ b/org.tizen.aurum-bootstrap/src/Commands/FindElementCommand.cc @@ -28,7 +28,8 @@ std::vector> FindElementCommand::getSelectors(void) { auto sel = std::make_shared(); - if(mRequest->_automationid_case()) sel->id(mRequest->automationid()); + if(mRequest->_elementid_case()) sel->id(mRequest->elementid()); + if(mRequest->_automationid_case()) sel->automationid(mRequest->automationid()); if(mRequest->_textfield_case()) sel->text(mRequest->textfield()); if(mRequest->_widgettype_case()) sel->type(mRequest->widgettype()); if(mRequest->_widgetstyle_case()) sel->style(mRequest->widgetstyle()); @@ -65,14 +66,13 @@ std::vector> FindElementCommand::getSelectors(void) if (founds.size() > 0) { for (auto& found : founds) { UiObject *obj = found.get(); - std::string key{}; - key = mObjMap->getElement(found); - if (key.length() <= 0) - key = mObjMap->addElement(std::move(found)); - LOGI("found object : %s key:%s", - obj->getAutomationId().c_str(), key.c_str()); + if (mObjMap->getElement(obj->getId()) == nullptr) + mObjMap->addElement(std::move(found)); + LOGI("found object : %p elementId:%s", + obj, obj->getId().c_str()); + ::aurum::Element *elm = mResponse->add_elements(); - elm->set_elementid(key); + elm->set_elementid(obj->getId()); elm->set_package(obj->getApplicationPackage()); ::aurum::Rect *rect = elm->mutable_geometry(); @@ -93,7 +93,6 @@ std::vector> FindElementCommand::getSelectors(void) elm->set_widget_style(obj->getElementStyle()); elm->set_text(obj->getText()); - elm->set_id(obj->getId()); elm->set_automationid(obj->getAutomationId()); elm->set_package(obj->getApplicationPackage()); elm->set_role(obj->getRole()); diff --git a/org.tizen.aurum-bootstrap/src/ObjectMapper.cc b/org.tizen.aurum-bootstrap/src/ObjectMapper.cc index 40c68d1..0dc09e3 100644 --- a/org.tizen.aurum-bootstrap/src/ObjectMapper.cc +++ b/org.tizen.aurum-bootstrap/src/ObjectMapper.cc @@ -4,7 +4,7 @@ #include #include -ObjectMapper::ObjectMapper() : mObjectMap{}, mObjectMapReverse{}, mObjCounter{0} {} +ObjectMapper::ObjectMapper() : mObjectMap{}, mObjCounter{0} {} ObjectMapper::~ObjectMapper() {} @@ -16,73 +16,39 @@ ObjectMapper *ObjectMapper::getInstance() std::string ObjectMapper::addElement(std::shared_ptr object) { - ++mObjCounter; - std::string key = std::to_string(mObjCounter); - mObjectMap[key] = object; std::string value = object->getId(); - mObjectMapReverse[value] = key; - LOGI("addElement %p as key %s, id %s", object.get(), key.c_str(), value.c_str()); - return key; + mObjectMap[value] = object; + LOGI("addElement %p, id %s", object.get(), value.c_str()); + return value; } -std::shared_ptr ObjectMapper::getElement(std::string key) +std::shared_ptr ObjectMapper::getElement(std::string elementId) { - LOGI("getElement for key(%s)", key.c_str()); - unsigned long long keyCnt = (unsigned long long)std::stoll(key); // this key is a result of calling std:to_string(mObjCounter) - if (keyCnt <= 0 || keyCnt > mObjCounter) return nullptr; - if (mObjectMap.count(key)) { - std::shared_ptr obj = mObjectMap[key]; + LOGI("getElement for elementId(%s)", elementId.c_str()); + if (mObjectMap.count(elementId)) { + std::shared_ptr obj = mObjectMap[elementId]; obj->refresh(); LOGI("succeeded"); return obj; } - LOGI("key is not exist in mObjectMap"); + LOGI("Id(%s) is not exist in mObjectMap", elementId.c_str()); return nullptr; } -std::string ObjectMapper::getElement(std::shared_ptr object) +bool ObjectMapper::removeElement(const std::string elementId) { - LOGI("getElement for object(%p)", object.get()); - std::string value = object->getId(); - if (mObjectMapReverse.count(value)) { - LOGI("succeeded"); - return mObjectMapReverse[value]; - } - LOGI("object is not exist in mObjectMapReverse"); - return std::string{""}; -} - -bool ObjectMapper::removeElement(const std::string key) -{ - LOGI("removeElement for key(%s)", key.c_str()); - std::shared_ptr obj = getElement(key); + LOGI("removeElement for Id(%s)", elementId.c_str()); + std::shared_ptr obj = getElement(elementId); if (obj) { - std::string value = obj->getId(); - if (mObjectMap.erase(key) && mObjectMapReverse.erase(value)) + if (mObjectMap.erase(elementId)) return true; } return false; } -bool ObjectMapper::removeElement(std::shared_ptr object) -{ - LOGI("removeElement for object(%p)", object.get()); - std::string key = getElement(object); - if (key.empty()) return false; - return removeElement(key); -} - void ObjectMapper::cleanUp() { LOGI("clean up object map"); - for(auto iter = mObjectMapReverse.begin(); iter != mObjectMapReverse.end(); ) { - auto obj = mObjectMap[iter->second]; - if (obj && !obj->isValid()) { - iter = mObjectMapReverse.erase(iter); - } else { - ++iter; - } - } for(auto iter = mObjectMap.begin(); iter != mObjectMap.end(); ) { if (!iter->second->isValid()) { iter = mObjectMap.erase(iter); diff --git a/protocol/aurum.proto b/protocol/aurum.proto index 0f4f932..d26d272 100644 --- a/protocol/aurum.proto +++ b/protocol/aurum.proto @@ -57,7 +57,6 @@ message Element { string widget_style = 6; string text = 7; - string id = 8; string automationId = 9; string package = 10; string role = 11; -- 2.34.1