The existing AccessibleWatcher was handling event processing and app managing.
Since this violates the single responsibility principle, AccessibleWatcher is responsible for event processing only,
and the structure has been changed so that AccessibleAppManager manages apps.
To this end, we created a test with a structure that adds a MockAccessibleAppManager,
and made sure that the test is satisfied through additional implementation.
Change-Id: I8a619384ac5a7d62b89cd16c960875e56a4a1276
#define _ACCESSIBLE_H_
#include "AccessibleNode.h"
+#include "AccessibleAppManager.h"
#include "AccessibleWatcher.h"
#include "AccessibleApplication.h"
#include "AccessibleWindow.h"
--- /dev/null
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _ACCESSIBLE_APPMANAGER_H_
+#define _ACCESSIBLE_APPMANAGER_H_
+
+#include "AccessibleApplication.h"
+#include <vector>
+
+#include "config.h"
+
+namespace Aurum {
+
+/**
+ * @class AccessibleAppManager
+ *
+ * @ingroup aurum
+ *
+ * @brief Class that manages a list of application classes
+ */
+class AccessibleAppManager {
+public:
+ /**
+ * @brief AccessibleAppManager constructor.
+ *
+ * @since_tizen 6.5
+ */
+ AccessibleAppManager();
+
+ /**
+ * @brief AccessibleAppManager destructor.
+ *
+ * @since_tizen 6.5
+ */
+ virtual ~AccessibleAppManager();
+
+ /**
+ * @brief Gets @AccessibleAppManager instance.
+ *
+ * @since_tizen 6.5
+ */
+ static AccessibleAppManager *getInstance(AccessibleAppManager *appManagerImpl = nullptr);
+
+public:
+ /**
+ * @brief Gets current running application count in device.
+ *
+ * @return application count
+ *
+ * @since_tizen 6.5
+ */
+ virtual int getApplicationCount(void) const = 0;
+
+ /**
+ * @brief Gets application class at specific index.
+ *
+ * @param[in] index application index
+ *
+ * @return @AccessibleApplication ptr
+ *
+ * @since_tizen 6.5
+ */
+ virtual std::shared_ptr<AccessibleApplication> getApplicationAt(int index) const = 0;
+
+ /**
+ * @brief Gets application node vector.
+ *
+ * @return @AccessibleApplication vector
+ *
+ * @since_tizen 6.5
+ */
+ virtual std::vector<std::shared_ptr<AccessibleApplication>> getApplications(void) const = 0;
+
+ /**
+ * @brief Gets active application vector.
+ *
+ * @return @AccessibleApplication vector
+ *
+ * @since_tizen 6.5
+ */
+ virtual std::vector<std::shared_ptr<AccessibleApplication>> getActiveApplications(void) const;
+};
+
+}
+
+#endif
#ifndef _ACCESSIBLE_WATCHER_H_
#define _ACCESSIBLE_WATCHER_H_
-#include "AccessibleApplication.h"
#include "AccessibleWindow.h"
#include "AccessibleNode.h"
#include "IEventSource.h"
static AccessibleWatcher *getInstance(AccessibleWatcher *watcherImpl = nullptr);
public:
- /**
- * @brief Gets current running application count in device.
- *
- * @return application count
- *
- * @since_tizen 6.5
- */
- virtual int getApplicationCount(void) const = 0;
-
- /**
- * @brief Gets application class at specific index.
- *
- * @param[in] index application index
- *
- * @return @AccessibleApplication ptr
- *
- * @since_tizen 6.5
- */
- virtual std::shared_ptr<AccessibleApplication> getApplicationAt(int index) const = 0;
-
- /**
- * @brief Gets application node vector.
- *
- * @return @AccessibleApplication vector
- *
- * @since_tizen 6.5
- */
- virtual std::vector<std::shared_ptr<AccessibleApplication>> getApplications(void) const = 0;
/**
* @brief Executes runnable command and wait given event.
public:
/**
- * @brief Gets active application vector.
- *
- * @return @AccessibleApplication vector
- *
- * @since_tizen 6.5
- */
- virtual std::vector<std::shared_ptr<AccessibleApplication>> getActiveApplications(void) const;
-
-public:
- /**
* @copydoc @IEventSource::attach()
*/
void attach(std::shared_ptr<IEventConsumer> source) override;
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _ATSPI_ACCESSIBLE_APPMANAGER_H_
+#define _ATSPI_ACCESSIBLE_APPMANAGER_H_
+
+#include "AccessibleAppManager.h"
+
+using namespace Aurum;
+
+namespace AurumInternal {
+
+/**
+ * @internal
+ *
+ * @class AtspiAccessibleAppManager
+ *
+ * @ingroup aurum
+ *
+ * @brief Class that manages a list of application classes
+ */
+class AtspiAccessibleAppManager : public AccessibleAppManager {
+public:
+ AtspiAccessibleAppManager();
+ virtual ~AtspiAccessibleAppManager();
+
+public:
+ /**
+ * @copydoc @AccessibleAppManager::getApplicationCount()
+ */
+ virtual int getApplicationCount(void) const override;
+
+ /**
+ * @copydoc @AccessibleAppManager::getApplicationAt()
+ */
+ virtual std::shared_ptr<AccessibleApplication> getApplicationAt(int index) const override;
+
+ /**
+ * @copydoc @AccessibleAppManager::getApplications()
+ */
+ virtual std::vector<std::shared_ptr<AccessibleApplication>> getApplications(void) const override;
+
+private:
+};
+
+}
+
+#endif
public:
/**
- * @copydoc @AccessibleWatcher::getApplicationCount()
- */
- virtual int getApplicationCount(void) const override;
-
- /**
- * @copydoc @AccessibleWatcher::getApplicationAt()
- */
- virtual std::shared_ptr<AccessibleApplication> getApplicationAt(int index) const override;
-
- /**
- * @copydoc @AccessibleWatcher::getApplications()
- */
- virtual std::vector<std::shared_ptr<AccessibleApplication>> getApplications(void) const override;
-
- /**
* @copydoc @AccessibleWatcher::executeAndWaitForEvents()
*/
virtual bool executeAndWaitForEvents(const Runnable *cmd, const A11yEvent type, const int timeout, const std::string packageName, std::shared_ptr<AccessibleNode> obj, const int count) override;
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _MOCK_ACCESSIBLE_APPMANAGER_H_
+#define _MOCK_ACCESSIBLE_APPMANAGER_H_
+
+#include "AccessibleNode.h"
+#include "AccessibleAppManager.h"
+
+#include "MockAccessibleApplication.h"
+
+#include <mutex>
+#include <shared_mutex>
+#include <memory>
+#include <vector>
+
+using namespace Aurum;
+
+namespace AurumInternal {
+
+namespace Mock {
+
+class MockAccessibleAppManager : public AccessibleAppManager {
+public:
+ /**
+ * @brief TBD
+ * @since_tizen 6.5
+ */
+ MockAccessibleAppManager();
+
+ /**
+ * @brief TBD
+ * @since_tizen 6.5
+ */
+ virtual ~MockAccessibleAppManager();
+
+public:
+ /**
+ * @brief TBD
+ * @since_tizen 6.5
+ */
+ virtual int getApplicationCount(void) const override;
+
+ /**
+ * @brief TBD
+ * @since_tizen 6.5
+ */
+ virtual std::shared_ptr<AccessibleApplication> getApplicationAt(int index) const override;
+
+ /**
+ * @brief TBD
+ * @since_tizen 6.5
+ */
+ virtual std::vector<std::shared_ptr<AccessibleApplication>> getApplications(void) const override;
+
+public:
+ /**
+ * @brief TBD
+ * @since_tizen 6.5
+ */
+ void addApplication(std::shared_ptr<AccessibleApplication> application);
+
+ /**
+ * @brief TBD
+ * @since_tizen 6.5
+ */
+ std::shared_ptr<MockAccessibleApplication> addApplication(std::string pkgName, Rect<int> geometry, int ifaces, int properties);
+
+private:
+
+ std::vector<std::shared_ptr<AccessibleApplication>> mApplicationList;
+};
+
+}
+
+}
+
+#endif
#ifndef _MOCK_ACCESSIBLE_WATCHER_H_
#define _MOCK_ACCESSIBLE_WATCHER_H_
-#include "AccessibleNode.h"
#include "AccessibleWatcher.h"
#include "MockAccessibleApplication.h"
virtual ~MockAccessibleWatcher();
public:
- /**
- * @brief TBD
- * @since_tizen 6.5
- */
- virtual int getApplicationCount(void) const override;
-
- /**
- * @brief TBD
- * @since_tizen 6.5
- */
- virtual std::shared_ptr<AccessibleApplication> getApplicationAt(int index) const override;
-
- /**
- * @brief TBD
- * @since_tizen 6.5
- */
- virtual std::vector<std::shared_ptr<AccessibleApplication>> getApplications(void) const override;
/**
* @brief TBD
void setXMLsync(bool sync);
bool getWindowEventEmitted();
-public:
- /**
- * @brief TBD
- * @since_tizen 6.5
- */
- void addApplication(std::shared_ptr<AccessibleApplication> application);
-
- /**
- * @brief TBD
- * @since_tizen 6.5
- */
- std::shared_ptr<MockAccessibleApplication> addApplication(std::string pkgName, Rect<int> geometry, int ifaces, int properties);
private:
- /**
- * @brief TBD
- */
- std::vector<std::shared_ptr<AccessibleApplication>> mApplicationList;
std::map<AtspiAccessible *, std::shared_ptr<AccessibleApplication>> mActiveAppMap;
std::map<std::string, std::shared_ptr<AurumXML>> mXMLDocMap;
'./inc/Comparer.h',
'./inc/AurumXML.h',
'./inc/Accessibility/AccessibleNode.h',
+ './inc/Accessibility/AccessibleAppManager.h',
'./inc/Accessibility/AccessibleWatcher.h',
'./inc/Accessibility/IEventSource.h',
'./inc/Accessibility/AccessibleWindow.h',
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "Aurum.h"
+
+#ifdef TIZEN
+#include "AtspiAccessibleAppManager.h"
+#endif
+#include "MockAccessibleAppManager.h"
+
+using namespace Aurum;
+using namespace AurumInternal;
+
+AccessibleAppManager::AccessibleAppManager()
+{
+}
+
+AccessibleAppManager::~AccessibleAppManager()
+{
+}
+
+AccessibleAppManager *AccessibleAppManager::getInstance(AccessibleAppManager *appManagerImpl)
+{
+ static AccessibleAppManager *mInstance = nullptr;
+ if (appManagerImpl) {
+ delete mInstance;
+ mInstance = appManagerImpl;
+ return mInstance;
+ } else {
+ if (mInstance) return mInstance;
+ else {
+#ifdef TIZEN
+ mInstance = new AtspiAccessibleAppManager();
+#else
+ mInstance = new MockAccessibleAppManager();
+#endif
+ }
+ }
+ return mInstance;
+}
+
+std::vector<std::shared_ptr<AccessibleApplication>> AccessibleAppManager::getActiveApplications(void) const
+{
+ std::vector<std::shared_ptr<AccessibleApplication>> ret{};
+ auto apps = this->getApplications();
+ LOGI("available app process size %d", (int)apps.size());
+
+ apps.erase(std::remove_if(apps.begin(), apps.end(), [](auto app){
+ return !app->isActive();
+ }), apps.end());
+
+ LOGI("active apps size %d", (int)apps.size());
+
+ return apps;
+}
return mInstance;
}
-std::vector<std::shared_ptr<AccessibleApplication>> AccessibleWatcher::getActiveApplications(void) const
-{
- std::vector<std::shared_ptr<AccessibleApplication>> ret{};
- auto apps = this->getApplications();
- LOGI("available app process size %d", (int)apps.size());
-
- apps.erase(std::remove_if(apps.begin(), apps.end(), [](auto app){
- return !app->isActive();
- }), apps.end());
-
- LOGI("active apps size %d", (int)apps.size());
-
- return apps;
-}
-
void AccessibleWatcher::attach(std::shared_ptr<IEventConsumer> source)
{
std::unique_lock<std::mutex> lock(mLock);
libaurum_src += [
files('AccessibleApplication.cc'),
files('AccessibleNode.cc'),
+ files('AccessibleAppManager.cc'),
files('AccessibleWatcher.cc'),
files('AccessibleWindow.cc'),
-]
\ No newline at end of file
+]
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "Aurum.h"
+
+#include "AtspiAccessibleAppManager.h"
+#include "AtspiAccessibleApplication.h"
+#include "AtspiWrapper.h"
+#include "AtspiAccessibleNode.h"
+
+using namespace Aurum;
+using namespace AurumInternal;
+
+AtspiAccessibleAppManager::AtspiAccessibleAppManager()
+{
+}
+
+AtspiAccessibleAppManager::~AtspiAccessibleAppManager()
+{
+}
+
+int AtspiAccessibleAppManager::getApplicationCount(void) const
+{
+ AtspiAccessible *root = AtspiWrapper::Atspi_get_desktop(0);
+ int nchild = AtspiWrapper::Atspi_accessible_get_child_count(root, NULL);
+ g_object_unref(root);
+
+ if (nchild <= 0) return 0;
+ return nchild;
+}
+
+std::shared_ptr<AccessibleApplication> AtspiAccessibleAppManager::getApplicationAt(int index) const
+{
+ AtspiAccessible *root = AtspiWrapper::Atspi_get_desktop(0);
+ AtspiAccessible *child = AtspiWrapper::Atspi_accessible_get_child_at_index(root, index, NULL);
+ g_object_unref(root);
+ return std::make_shared<AtspiAccessibleApplication>(std::make_shared<AtspiAccessibleNode>(child));
+}
+
+std::vector<std::shared_ptr<AccessibleApplication>> AtspiAccessibleAppManager::getApplications(void) const
+{
+ std::vector<std::shared_ptr<AccessibleApplication>> ret{};
+ AtspiAccessible *root = AtspiWrapper::Atspi_get_desktop(0);
+ GArray *children = AtspiWrapper::Atspi_accessible_get_children(root, NULL);
+ if (children) {
+ ret.reserve(children->len);
+ AtspiAccessible *child = nullptr;
+ for (unsigned int i = 0; i < children->len; i++) {
+ child = g_array_index(children, AtspiAccessible *, i);
+ if (child) {
+ ret.push_back(std::make_shared<AtspiAccessibleApplication>(std::make_shared<AtspiAccessibleNode>(child)));
+ }
+ }
+ g_array_free(children, true);
+ }
+ g_object_unref(root);
+
+ return ret;
+}
#include "Aurum.h"
#include "AtspiAccessibleWatcher.h"
+#include "AtspiAccessibleAppManager.h"
#include "AtspiAccessibleApplication.h"
#include "AtspiAccessibleWindow.h"
#include "AtspiAccessibleNode.h"
notifyAll((int)EventType::Object, (int)ObjectEventType::ObjectStateDefunct, node);
}
-int AtspiAccessibleWatcher::getApplicationCount(void) const
-{
- AtspiAccessible *root = AtspiWrapper::Atspi_get_desktop(0);
- int nchild = AtspiWrapper::Atspi_accessible_get_child_count(root, NULL);
- g_object_unref(root);
-
- if (nchild <= 0) return 0;
- return nchild;
-}
-
-std::shared_ptr<AccessibleApplication> AtspiAccessibleWatcher::getApplicationAt(int index) const
-{
- AtspiAccessible *root = AtspiWrapper::Atspi_get_desktop(0);
- AtspiAccessible *child = AtspiWrapper::Atspi_accessible_get_child_at_index(root, index, NULL);
- g_object_unref(root);
- return std::make_shared<AtspiAccessibleApplication>(std::make_shared<AtspiAccessibleNode>(child));
-}
-
-std::vector<std::shared_ptr<AccessibleApplication>> AtspiAccessibleWatcher::getApplications(void) const
-{
- std::vector<std::shared_ptr<AccessibleApplication>> ret{};
- AtspiAccessible *root = AtspiWrapper::Atspi_get_desktop(0);
- GArray *children = AtspiWrapper::Atspi_accessible_get_children(root, NULL);
- if (children) {
- ret.reserve(children->len);
- AtspiAccessible *child = nullptr;
- for (unsigned int i = 0; i < children->len; i++) {
- child = g_array_index(children, AtspiAccessible *, i);
- if (child) {
- ret.push_back(std::make_shared<AtspiAccessibleApplication>(std::make_shared<AtspiAccessibleNode>(child)));
- }
- }
- g_array_free(children, true);
- }
- g_object_unref(root);
-
- return ret;
-}
-
bool AtspiAccessibleWatcher::executeAndWaitForEvents(const Runnable *cmd, const A11yEvent type, const int timeout, const std::string packageName, std::shared_ptr<AccessibleNode> obj, const int count)
{
mMutex.lock();
mAppCount = 0;
mAppXMLLoadedCount = 0;
} else {
- auto apps = getApplications();
+ auto apps = AccessibleAppManager::getInstance()->getApplications();
for (auto &app : apps)
{
app->getAccessibleNode()->updateName();
--- /dev/null
+/*
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "MockAccessibleAppManager.h"
+#include "MockAccessibleWindow.h"
+#include "MockAccessibleApplication.h"
+#include "MockAccessibleNode.h"
+
+using namespace Aurum;
+using namespace AurumInternal::Mock;
+
+MockAccessibleAppManager::MockAccessibleAppManager()
+{
+}
+
+MockAccessibleAppManager::~MockAccessibleAppManager()
+{
+}
+
+int MockAccessibleAppManager::getApplicationCount(void) const
+{
+ return mApplicationList.size();
+}
+
+std::shared_ptr<AccessibleApplication> MockAccessibleAppManager::getApplicationAt(int index) const
+{
+ return mApplicationList.at(index);
+}
+
+std::vector<std::shared_ptr<AccessibleApplication>> MockAccessibleAppManager::getApplications(void) const
+{
+ return mApplicationList;
+}
+
+void MockAccessibleAppManager::addApplication(std::shared_ptr<AccessibleApplication> application)
+{
+ mApplicationList.push_back(application);
+}
+
+std::shared_ptr<MockAccessibleApplication> MockAccessibleAppManager::addApplication(std::string pkgName, Rect<int> geometry, int ifaces, int properties)
+{
+ std::shared_ptr<MockAccessibleNode> appNode = std::make_shared<MockAccessibleNode>(nullptr, pkgName, pkgName, "application", "", "Elm_Win", "default", "", geometry, ifaces, properties);
+ std::shared_ptr<MockAccessibleApplication> app = std::make_shared<MockAccessibleApplication>(appNode);
+ this->addApplication(app);
+ return app;
+}
\ No newline at end of file
std::shared_ptr<MockAccessibleWindow> MockAccessibleApplication::addWindow(std::string title, std::string widget, Rect<int> geometry, int properties)
{
+
auto node = std::make_shared<MockAccessibleNode>(nullptr, title, title, "window", "res",widget,"style", "", geometry, 0, properties);
auto win = std::make_shared<MockAccessibleWindow>(shared_from_this(), node);
this->addWindow(win);
const auto trickDontRemove = std::shared_ptr<MockAccessibleNode>( this, [](MockAccessibleNode *){} );
setProperties(text,pkg,role,res,type,style,automationId, screenBoundingBox, supportingIfaces, featureProperty);
- auto watcher = AccessibleWatcher::getInstance();
- watcher->attach(shared_from_this());
}
MockAccessibleNode::~MockAccessibleNode()
{
- auto watcher = AccessibleWatcher::getInstance();
- watcher->detach(shared_from_this());
}
int MockAccessibleNode::getChildCount() const
*/
#include "MockAccessibleWatcher.h"
-#include "MockAccessibleWindow.h"
-#include "MockAccessibleApplication.h"
-#include "MockAccessibleNode.h"
using namespace Aurum;
using namespace AurumInternal::Mock;
{
}
-int MockAccessibleWatcher::getApplicationCount(void) const
-{
- return mApplicationList.size();
-}
-
-std::shared_ptr<AccessibleApplication> MockAccessibleWatcher::getApplicationAt(int index) const
-{
- return mApplicationList.at(index);
-}
-
-std::vector<std::shared_ptr<AccessibleApplication>> MockAccessibleWatcher::getApplications(void) const
-{
- return mApplicationList;
-}
-
-void MockAccessibleWatcher::addApplication(std::shared_ptr<AccessibleApplication> application)
-{
- mApplicationList.push_back(application);
-}
-
std::map<std::string, std::shared_ptr<AurumXML>> MockAccessibleWatcher::getXMLDocMap(void)
{
return mXMLDocMap;
return std::shared_ptr<AurumXML>();
}
-std::shared_ptr<MockAccessibleApplication> MockAccessibleWatcher::addApplication(std::string pkgName, Rect<int> geometry, int ifaces, int properties)
-{
- std::shared_ptr<MockAccessibleNode> appNode = std::make_shared<MockAccessibleNode>(nullptr, pkgName, pkgName, "application", "", "Elm_Win", "default", "", geometry, ifaces, properties);
- std::shared_ptr<MockAccessibleApplication> app = std::make_shared<MockAccessibleApplication>(appNode);
- this->addApplication(app);
- return app;
-}
-
bool MockAccessibleWatcher::executeAndWaitForEvents(const Runnable *cmd, const A11yEvent type, const int timeout, const std::string packageName, std::shared_ptr<AccessibleNode> obj, const int count)
{
return true;
files('AtspiAccessibleWindow.cc'),
files('AtspiAccessibleNode.cc'),
files('AtspiAccessibleWatcher.cc'),
+ files('AtspiAccessibleAppManager.cc'),
files('AtspiWrapper.cc'),
files('AtspiMatchRuleConvertor.cc'),
]
files('MockAccessibleWindow.cc'),
files('MockAccessibleNode.cc'),
files('MockAccessibleWatcher.cc'),
+ files('MockAccessibleAppManager.cc'),
]
*/
#include "Aurum.h"
-#include "AccessibleWatcher.h"
+#include "AccessibleAppManager.h"
#include "MockDeviceImpl.h"
#include <functional>
{
std::vector<std::shared_ptr<AccessibleNode>> ret{};
- auto apps = AccessibleWatcher::getInstance()->getApplications();
+ auto apps = AccessibleAppManager::getInstance()->getApplications();
for (auto &app : apps)
{
std::vector<std::shared_ptr<AccessibleNode>> ret{};
std::unordered_map<int, std::shared_ptr<AccessibleApplication>> pidToAppNode{};
- auto apps = AccessibleWatcher::getInstance()->getApplications();
+ auto apps = AccessibleAppManager::getInstance()->getApplications();
for (auto &app : apps)
{
app->getAccessibleNode()->updateName();
#include <iostream>
#include <algorithm>
-#include "MockAccessibleWatcher.h"
#include "MockAccessibleApplication.h"
#include "MockAccessibleWindow.h"
#include "MockAccessibleNode.h"
+#include "MockAccessibleAppManager.h"
class AurumTestMisc : public ::testing::Test {
public:
#include <algorithm>
#include "MockAccessibleWatcher.h"
+#include "MockAccessibleAppManager.h"
#include "MockAccessibleApplication.h"
#include "MockAccessibleWindow.h"
#include "MockAccessibleNode.h"
class AurumTestSel : public ::testing::Test {
public:
- AurumTestSel() : mDevice{nullptr}, mWatcher{nullptr}, mApps{}, mWins{}, mNodes{}{
+ AurumTestSel() : mDevice{nullptr}, mAppManager{nullptr}, mWatcher{nullptr}, mApps{}, mWins{}, mNodes{}{
}
protected:
void SetUp() override {
mWatcher = new MockAccessibleWatcher();
AccessibleWatcher::getInstance(mWatcher);
- mApps.push_back(mWatcher->addApplication("org.tizen.aurum.test.app1", {0,0,1024,1024}, 0, 0));
- mApps.push_back(mWatcher->addApplication("org.tizen.aurum.test.app2", {0,0,1024,1024}, 0, 0));
+ mAppManager = new MockAccessibleAppManager();
+ AccessibleAppManager::getInstance(mAppManager);
+
+ mApps.push_back(mAppManager->addApplication("org.tizen.aurum.test.app1", {0,0,1024,1024}, 0, 0));
+ mApps.push_back(mAppManager->addApplication("org.tizen.aurum.test.app2", {0,0,1024,1024}, 0, 0));
mWins.push_back(mApps[0]->addWindow("win1", "Elm_Win", {100,100,200,200}, (int)NodeFeatureProperties::SHOWING|(int)NodeFeatureProperties::VISIBLE|(int)NodeFeatureProperties::ACTIVE));
mWins.push_back(mApps[0]->addWindow("win2", "Elm_Win", {200,200,200,200}, (int)NodeFeatureProperties::VISIBLE|(int)NodeFeatureProperties::SHOWING|(int)NodeFeatureProperties::ACTIVE));
}
MockDeviceImpl *mDevice;
+ MockAccessibleAppManager *mAppManager;
MockAccessibleWatcher *mWatcher;
-
std::vector<std::shared_ptr<MockAccessibleApplication>> mApps;
std::vector<std::shared_ptr<MockAccessibleWindow>> mWins;
std::vector<std::shared_ptr<MockAccessibleNode>> mNodes;
{
auto founds = UiDevice::getInstance()->findObjects(Sel::depth(1));
ASSERT_NE(founds.size(), 10);
-}
\ No newline at end of file
+}
#include <thread>
#include "MockAccessibleWatcher.h"
+#include "MockAccessibleAppManager.h"
#include "MockAccessibleApplication.h"
#include "MockAccessibleWindow.h"
#include "MockAccessibleNode.h"
class AurumTestUiDevice : public ::testing::Test {
public:
AurumTestUiDevice()
- : mDevice{nullptr}, mWatcher{nullptr}, mApp{nullptr}, mWin{nullptr}, mNode{nullptr} {
+ : mDevice{nullptr}, mAppManager{nullptr}, mWatcher{nullptr}, mApp{nullptr}, mWin{nullptr}, mNode{nullptr} {
}
void SetUp() override {
mWatcher = new MockAccessibleWatcher();
AccessibleWatcher::getInstance(mWatcher);
- mApp = mWatcher->addApplication("org.tizen.aurum.test.app", {0,0,1024,1024}, 0, 0);
+ mAppManager = new MockAccessibleAppManager();
+ AccessibleAppManager::getInstance(mAppManager);
+
+ mApp = mAppManager->addApplication("org.tizen.aurum.test.app", {0,0,1024,1024}, 0, 0);
mWin = mApp->addWindow("title", "Elm_Win", {100,100,200,200}, (int)NodeFeatureProperties::SHOWING|(int)NodeFeatureProperties::VISIBLE|(int)NodeFeatureProperties::ACTIVE);
mWin->addNode("test", "pkg", "TeSt1234!@#$", "res", "type", "style", "", {0,0,100,100}, 0, 0);
mNode = mWin->addNode("test", "pkg", "TeSt1234!@#$", "res", "type", "style", "", {100,100,200,200}, 0, 0);
}
MockDeviceImpl *mDevice;
+ MockAccessibleAppManager *mAppManager;
MockAccessibleWatcher *mWatcher;
std::shared_ptr<MockAccessibleApplication> mApp;
std::shared_ptr<MockAccessibleWindow> mWin;
#include <thread>
#include "MockAccessibleWatcher.h"
+#include "MockAccessibleAppManager.h"
#include "MockAccessibleApplication.h"
#include "MockAccessibleWindow.h"
#include "MockAccessibleNode.h"
class AurumTestUiObject : public ::testing::Test {
public:
- AurumTestUiObject() : mDevice{nullptr},mWatcher{nullptr}, mApp{nullptr}, mWin{nullptr}, mNode{nullptr} {
+ AurumTestUiObject() : mDevice{nullptr}, mAppManager{nullptr}, mWatcher{nullptr}, mApp{nullptr}, mWin{nullptr}, mNode{nullptr} {
}
void SetUp() override {
mWatcher = new MockAccessibleWatcher();
AccessibleWatcher::getInstance(mWatcher);
- mApp = mWatcher->addApplication("org.tizen.aurum.test.app", {0,0,1024,1024}, 0, 0);
+ mAppManager = new MockAccessibleAppManager();
+ AccessibleAppManager::getInstance(mAppManager);
+
+ mApp = mAppManager->addApplication("org.tizen.aurum.test.app", {0,0,1024,1024}, 0, 0);
mWin = mApp->addWindow("title", "Elm_Win", {100,100,200,200}, (int)NodeFeatureProperties::SHOWING|(int)NodeFeatureProperties::VISIBLE|(int)NodeFeatureProperties::ACTIVE);
mWin->addNode("test", "pkg", "TeSt1234!@#$", "res", "type", "style", "", {0,0,100,100}, 0, 0);
mNode = mWin->addNode("test2", "pkg", "TeSt1234!@#$", "res", "type", "style", "", {100,100,200,200}, 0, 0);
public:
MockDeviceImpl *mDevice;
+ MockAccessibleAppManager *mAppManager;
MockAccessibleWatcher *mWatcher;
std::shared_ptr<MockAccessibleApplication> mApp;
std::shared_ptr<MockAccessibleWindow> mWin;
#include <iostream>
#include <algorithm>
+#include <chrono>
+#include <thread>
#include "MockAccessibleWatcher.h"
+#include "MockAccessibleAppManager.h"
#include "MockAccessibleApplication.h"
#include "MockAccessibleWindow.h"
#include "MockAccessibleNode.h"
class AurumTestUiSelector : public ::testing::Test {
public:
- AurumTestUiSelector(): mDevice{nullptr}, mWatcher{nullptr}, mApps{}, mWins{}, mNodes{}{
+ AurumTestUiSelector(): mDevice{nullptr}, mWatcher{nullptr}, mAppManager{nullptr}, mApps{}, mWins{}, mNodes{}{
}
protected:
void SetUp() override {
mWatcher = new MockAccessibleWatcher();
AccessibleWatcher::getInstance(mWatcher);
- mApps.push_back(mWatcher->addApplication("org.tizen.aurum.test.app1", {0,0,1024,1024}, 0, 0));
- mApps.push_back(mWatcher->addApplication("org.tizen.aurum.test.app2", {0,0,1024,1024}, 0, 0));
+ mAppManager = new MockAccessibleAppManager();
+ AccessibleAppManager::getInstance(mAppManager);
+
+ mApps.push_back(mAppManager->addApplication("org.tizen.aurum.test.app1", {0,0,1024,1024}, 0, 0));
+ mApps.push_back(mAppManager->addApplication("org.tizen.aurum.test.app2", {0,0,1024,1024}, 0, 0));
mWins.push_back(mApps[0]->addWindow("win1", "Elm_Win", {100,100,200,200}, (int)NodeFeatureProperties::SHOWING|(int)NodeFeatureProperties::VISIBLE|(int)NodeFeatureProperties::ACTIVE));
mWins.push_back(mApps[0]->addWindow("win2", "Elm_Win", {200,200,200,200}, (int)NodeFeatureProperties::VISIBLE|(int)NodeFeatureProperties::SHOWING|(int)NodeFeatureProperties::ACTIVE));
MockDeviceImpl *mDevice;
MockAccessibleWatcher *mWatcher;
-
+ MockAccessibleAppManager *mAppManager;
std::vector<std::shared_ptr<MockAccessibleApplication>> mApps;
std::vector<std::shared_ptr<MockAccessibleWindow>> mWins;
std::vector<std::shared_ptr<MockAccessibleNode>> mNodes;
)
test(atest[0], test_bin)
-endforeach
\ No newline at end of file
+endforeach