mirror of
https://gitee.com/openharmony/accessibility
synced 2025-02-17 09:31:01 +00:00
uitest获取window信息接口追加
Signed-off-by: Mupceet <laiguizhong@huawei.com>
This commit is contained in:
parent
75948b34fa
commit
d821167344
@ -71,6 +71,7 @@ ohos_unittest("accessible_ability_test") {
|
||||
"//base/accessibility/services/aams/src/accessibility_dumper.cpp",
|
||||
"//base/accessibility/services/aams/src/accessible_ability_manager_service.cpp",
|
||||
"//base/accessibility/services/aams/src/accessible_ability_manager_service_event_handler.cpp",
|
||||
"//base/accessibility/services/aams/src/json_utils.cpp",
|
||||
"//base/accessibility/services/aams/test/mock/src/mock_accessibility_account_data.cpp",
|
||||
"//base/accessibility/services/aams/test/mock/src/mock_accessibility_common_event.cpp",
|
||||
"//base/accessibility/services/aams/test/mock/src/mock_accessibility_event_transmission.cpp",
|
||||
|
@ -30,16 +30,16 @@ void AccessibilityWindowInfo::SetWindowTitle(const std::string &title)
|
||||
HILOG_DEBUG("windowTitle_[%{public}s]", windowTitle_.c_str());
|
||||
}
|
||||
|
||||
WindowType AccessibilityWindowInfo::GetWindowType() const
|
||||
AccessibilityWindowType AccessibilityWindowInfo::GetAccessibilityWindowType() const
|
||||
{
|
||||
HILOG_DEBUG("windowType_[%{public}d]", windowType_);
|
||||
return windowType_;
|
||||
HILOG_DEBUG("accessibilityWindowType_[%{public}d]", accessibilityWindowType_);
|
||||
return accessibilityWindowType_;
|
||||
}
|
||||
|
||||
void AccessibilityWindowInfo::SetWindowType(const WindowType type)
|
||||
void AccessibilityWindowInfo::SetAccessibilityWindowType(const AccessibilityWindowType type)
|
||||
{
|
||||
windowType_ = type;
|
||||
HILOG_DEBUG("windowType_[%{public}d]", windowType_);
|
||||
accessibilityWindowType_ = type;
|
||||
HILOG_DEBUG("accessibilityWindowType_[%{public}d]", accessibilityWindowType_);
|
||||
}
|
||||
|
||||
int32_t AccessibilityWindowInfo::GetWindowLayer() const
|
||||
@ -192,5 +192,41 @@ uint64_t AccessibilityWindowInfo::GetDisplayId() const
|
||||
HILOG_DEBUG("displayId[%{public}ju]", displayId_);
|
||||
return displayId_;
|
||||
}
|
||||
|
||||
uint32_t AccessibilityWindowInfo::GetWindowType() const
|
||||
{
|
||||
HILOG_DEBUG("windowType_[%{public}d]", windowType_);
|
||||
return windowType_;
|
||||
}
|
||||
|
||||
void AccessibilityWindowInfo::SetWindowType(const uint32_t type)
|
||||
{
|
||||
windowType_ = type;
|
||||
HILOG_DEBUG("windowType_[%{public}d]", windowType_);
|
||||
}
|
||||
|
||||
uint32_t AccessibilityWindowInfo::GetWindowMode() const
|
||||
{
|
||||
HILOG_DEBUG("windowMode_[%{public}d]", windowMode_);
|
||||
return windowMode_;
|
||||
}
|
||||
|
||||
void AccessibilityWindowInfo::SetWindowMode(const uint32_t mode)
|
||||
{
|
||||
windowMode_ = mode;
|
||||
HILOG_DEBUG("windowMode_[%{public}d]", windowMode_);
|
||||
}
|
||||
|
||||
bool AccessibilityWindowInfo::IsDecorEnable() const
|
||||
{
|
||||
HILOG_DEBUG("isDecorEnable_[%{public}d]", isDecorEnable_);
|
||||
return isDecorEnable_;
|
||||
}
|
||||
|
||||
void AccessibilityWindowInfo::SetDecorEnable(const bool isDecorEnable)
|
||||
{
|
||||
isDecorEnable_ = isDecorEnable;
|
||||
HILOG_DEBUG("isDecorEnable_[%{public}d]", isDecorEnable_);
|
||||
}
|
||||
} // namespace Accessibility
|
||||
} // namespace OHOS
|
@ -231,7 +231,7 @@ enum GestureType : uint32_t {
|
||||
GESTURE_GESTURE_ALL = 0xFFFFFFFF
|
||||
};
|
||||
|
||||
enum WindowType : int32_t {
|
||||
enum AccessibilityWindowType : int32_t {
|
||||
TYPE_WINDOW_INVALID = 0,
|
||||
TYPE_ACCESSIBILITY_OVERLAY = 0x00000001,
|
||||
TYPE_APPLICATION = 0x00000002,
|
||||
|
@ -53,20 +53,20 @@ public:
|
||||
/**
|
||||
* @brief Get the window type.
|
||||
* @param -
|
||||
* @return The window type. Refer to [WindowType].
|
||||
* @return The accessibility window type. Refer to [AccessibilityWindowType].
|
||||
* @since 3
|
||||
* @sysCap Accessibility
|
||||
*/
|
||||
WindowType GetWindowType() const;
|
||||
AccessibilityWindowType GetAccessibilityWindowType() const;
|
||||
|
||||
/**
|
||||
* @brief Set the window type.
|
||||
* @param type The window type. Refer to [WindowType].
|
||||
* @param type The accessibility window type. Refer to [AccessibilityWindowType].
|
||||
* @return -
|
||||
* @since 3
|
||||
* @sysCap Accessibility
|
||||
*/
|
||||
void SetWindowType(const WindowType type);
|
||||
void SetAccessibilityWindowType(const AccessibilityWindowType type);
|
||||
|
||||
/**
|
||||
* @brief Get The window layer
|
||||
@ -281,9 +281,23 @@ public:
|
||||
*/
|
||||
uint64_t GetDisplayId() const;
|
||||
|
||||
uint32_t GetWindowType() const;
|
||||
|
||||
void SetWindowType(const uint32_t type);
|
||||
|
||||
uint32_t GetWindowMode() const;
|
||||
|
||||
void SetWindowMode(const uint32_t mode);
|
||||
|
||||
bool IsDecorEnable() const;
|
||||
|
||||
void SetDecorEnable(const bool isDecorEnable);
|
||||
|
||||
protected:
|
||||
uint64_t displayId_ = 0;
|
||||
WindowType windowType_ = TYPE_WINDOW_INVALID;
|
||||
uint32_t windowMode_ = 0;
|
||||
uint32_t windowType_ = 0;
|
||||
AccessibilityWindowType accessibilityWindowType_ = TYPE_WINDOW_INVALID;
|
||||
int32_t windowLayer_ = INVALID_WINDOW_ID;
|
||||
int32_t windowId_ = INVALID_WINDOW_ID;
|
||||
int32_t parentId_ = INVALID_WINDOW_ID;
|
||||
@ -294,6 +308,7 @@ protected:
|
||||
int32_t channelId_ = INVALID_WINDOW_ID;
|
||||
bool active_ = false;
|
||||
bool focused_ = false;
|
||||
bool isDecorEnable_ = false;
|
||||
bool accessibilityFocused_ = false;
|
||||
Rect boundsInScreen_ {};
|
||||
};
|
||||
|
@ -123,14 +123,14 @@ void ConvertRectToJS(napi_env env, napi_value result, const Accessibility::Rect&
|
||||
NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, result, "rightBottomY", nRightBottomY));
|
||||
}
|
||||
|
||||
static std::string ConvertWindowTypeToString(WindowType type)
|
||||
std::string ConvertWindowTypeToString(AccessibilityWindowType type)
|
||||
{
|
||||
static const std::map<WindowType, const std::string> windowTypeTable = {
|
||||
{WindowType::TYPE_ACCESSIBILITY_OVERLAY, "accessibilityOverlay"},
|
||||
{WindowType::TYPE_APPLICATION, "application"},
|
||||
{WindowType::TYPE_INPUT_METHOD, "inputMethod"},
|
||||
{WindowType::TYPE_SPLIT_SCREEN_DIVIDER, "screenDivider"},
|
||||
{WindowType::TYPE_SYSTEM, "system"}};
|
||||
static const std::map<AccessibilityWindowType, const std::string> windowTypeTable = {
|
||||
{AccessibilityWindowType::TYPE_ACCESSIBILITY_OVERLAY, "accessibilityOverlay"},
|
||||
{AccessibilityWindowType::TYPE_APPLICATION, "application"},
|
||||
{AccessibilityWindowType::TYPE_INPUT_METHOD, "inputMethod"},
|
||||
{AccessibilityWindowType::TYPE_SPLIT_SCREEN_DIVIDER, "screenDivider"},
|
||||
{AccessibilityWindowType::TYPE_SYSTEM, "system"}};
|
||||
|
||||
if (windowTypeTable.find(type) == windowTypeTable.end()) {
|
||||
return "";
|
||||
@ -316,7 +316,7 @@ void ConvertAccessibilityWindowInfoToJS(
|
||||
NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, result, "title", nTitle));
|
||||
|
||||
napi_value nWindowType;
|
||||
std::string strWindowType = ConvertWindowTypeToString(accessibilityWindowInfo.GetWindowType());
|
||||
std::string strWindowType = ConvertWindowTypeToString(accessibilityWindowInfo.GetAccessibilityWindowType());
|
||||
NAPI_CALL_RETURN_VOID(env, napi_create_string_utf8(env, strWindowType.c_str(), NAPI_AUTO_LENGTH, &nWindowType));
|
||||
NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, result, "type", nWindowType));
|
||||
|
||||
|
@ -458,7 +458,7 @@ private:
|
||||
bool isGesturesSimulation_ = false;
|
||||
bool isCaptionState_ = false;
|
||||
AccessibilityConfig::CaptionProperty captionProperty_;
|
||||
std::map<std::string, sptr<AccessibleAbilityConnection>> connectedA11yAbilities_; // key: The URI of ElementName.
|
||||
std::map<std::string, sptr<AccessibleAbilityConnection>> connectedA11yAbilities_; // key: bundleName/abilityName
|
||||
std::vector<sptr<IAccessibleAbilityManagerStateObserver>> stateCallbacks_;
|
||||
std::vector<sptr<IAccessibilityEnableAbilityListsObserver>> enableAbilityListsObservers_;
|
||||
std::map<int32_t, sptr<AccessibilityWindowConnection>> asacConnections_; // key: windowId
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
#include <vector>
|
||||
#include "accessibility_ability_info.h"
|
||||
#include "element_name.h"
|
||||
#include "extension_ability_info.h"
|
||||
#include "nlohmann/json.hpp"
|
||||
|
||||
@ -45,6 +46,12 @@ public:
|
||||
static void ParseAbilityTypesFromVec(const std::vector<std::string>& abilities, uint32_t& abilityTypes);
|
||||
static void ParseCapabilitiesFromVec(const std::vector<std::string>& capabilities, uint32_t& capabilitiesValue);
|
||||
};
|
||||
|
||||
class Utils {
|
||||
public:
|
||||
static std::string GetUri(const OHOS::AppExecFwk::ElementName &elementName);
|
||||
static std::string GetUri(const std::string &bundleName, const std::string &abilityName);
|
||||
};
|
||||
} // namespace Accessibility
|
||||
} // namespace OHOS
|
||||
#endif // JSON_UTILS_H
|
@ -86,9 +86,10 @@ void AccessibilityAccountData::OnAccountSwitched()
|
||||
|
||||
void AccessibilityAccountData::AddConnectedAbility(sptr<AccessibleAbilityConnection>& connection)
|
||||
{
|
||||
HILOG_DEBUG("URI is %{public}s", connection->GetElementName().GetURI().c_str());
|
||||
if (!connectedA11yAbilities_.count(connection->GetElementName().GetURI())) {
|
||||
connectedA11yAbilities_.insert(make_pair(connection->GetElementName().GetURI(), connection));
|
||||
std::string uri = Utils::GetUri(connection->GetElementName());
|
||||
HILOG_DEBUG("URI is %{public}s", uri.c_str());
|
||||
if (!connectedA11yAbilities_.count(uri)) {
|
||||
connectedA11yAbilities_.insert(make_pair(uri, connection));
|
||||
}
|
||||
|
||||
HILOG_DEBUG("Add ConnectedAbility: %{public}zu", connectedA11yAbilities_.size());
|
||||
@ -96,9 +97,9 @@ void AccessibilityAccountData::AddConnectedAbility(sptr<AccessibleAbilityConnect
|
||||
|
||||
void AccessibilityAccountData::RemoveConnectedAbility(sptr<AccessibleAbilityConnection>& connection)
|
||||
{
|
||||
HILOG_DEBUG("URI is %{public}s", connection->GetElementName().GetURI().c_str());
|
||||
std::map<std::string, sptr<AccessibleAbilityConnection>>::iterator it =
|
||||
connectedA11yAbilities_.find(connection->GetElementName().GetURI());
|
||||
std::string uri = Utils::GetUri(connection->GetElementName());
|
||||
HILOG_DEBUG("URI is %{public}s", uri.c_str());
|
||||
std::map<std::string, sptr<AccessibleAbilityConnection>>::iterator it = connectedA11yAbilities_.find(uri);
|
||||
if (it != connectedA11yAbilities_.end()) {
|
||||
connectedA11yAbilities_.erase(it);
|
||||
}
|
||||
|
@ -154,9 +154,9 @@ int32_t AccessibilityWindowManager::ConvertToRealWindowId(int32_t windowId, int3
|
||||
return windowId;
|
||||
}
|
||||
|
||||
WindowType ConvertWindowType(Rosen::WindowType type)
|
||||
AccessibilityWindowType ConvertWindowType(Rosen::WindowType type)
|
||||
{
|
||||
WindowType winType = TYPE_WINDOW_INVALID;
|
||||
AccessibilityWindowType winType = TYPE_WINDOW_INVALID;
|
||||
|
||||
if (type < Rosen::WindowType::SYSTEM_WINDOW_BASE) {
|
||||
winType = TYPE_APPLICATION;
|
||||
@ -172,7 +172,9 @@ AccessibilityWindowInfo AccessibilityWindowManager::CreateAccessibilityWindowInf
|
||||
{
|
||||
AccessibilityWindowInfo info;
|
||||
info.SetWindowId(windowInfo->wid_);
|
||||
info.SetWindowType(ConvertWindowType(windowInfo->type_));
|
||||
info.SetWindowType(static_cast<uint32_t>(windowInfo->type_));
|
||||
info.SetWindowMode(static_cast<uint32_t>(windowInfo->mode_));
|
||||
info.SetAccessibilityWindowType(ConvertWindowType(windowInfo->type_));
|
||||
info.SetFocused(windowInfo->focused_);
|
||||
Rect bound;
|
||||
bound.SetLeftTopScreenPostion(windowInfo->windowRect_.posX_, windowInfo->windowRect_.posY_);
|
||||
@ -181,10 +183,12 @@ AccessibilityWindowInfo AccessibilityWindowManager::CreateAccessibilityWindowInf
|
||||
windowInfo->windowRect_.posY_ + static_cast<int32_t>(windowInfo->windowRect_.height_));
|
||||
info.SetRectInScreen(bound);
|
||||
info.SetDisplayId(windowInfo->displayId_);
|
||||
info.SetDecorEnable(windowInfo->isDecorEnable_);
|
||||
HILOG_DEBUG("Create WindowInfo Id(%{public}d) type(%{public}d) posX(%{public}d) posY(%{public}d)"
|
||||
"witdth(%{public}d) height(%{public}d) display id(%{public}ju)",
|
||||
"width(%{public}d) height(%{public}d) display id(%{public}ju) isDecorEnable(%{public}d)",
|
||||
windowInfo->wid_, windowInfo->type_, windowInfo->windowRect_.posX_, windowInfo->windowRect_.posY_,
|
||||
windowInfo->windowRect_.width_, windowInfo->windowRect_.height_, windowInfo->displayId_);
|
||||
windowInfo->windowRect_.width_, windowInfo->windowRect_.height_,
|
||||
windowInfo->displayId_, windowInfo->isDecorEnable_);
|
||||
return info;
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "ability_manager_client.h"
|
||||
#include "accessible_ability_manager_service.h"
|
||||
#include "hilog_wrapper.h"
|
||||
#include "json_utils.h"
|
||||
|
||||
namespace OHOS {
|
||||
namespace Accessibility {
|
||||
@ -68,8 +69,9 @@ void AccessibleAbilityConnection::InnerOnAbilityConnectDone(const AppExecFwk::El
|
||||
elementName_ = element;
|
||||
|
||||
if (resultCode != NO_ERROR) {
|
||||
accountData_->RemoveEnabledAbility(elementName_.GetBundleName() + "/" + elementName_.GetAbilityName());
|
||||
accountData_->RemoveConnectingA11yAbility(elementName_.GetBundleName() + "/" + elementName_.GetAbilityName());
|
||||
accountData_->RemoveEnabledAbility(Utils::GetUri(elementName_.GetBundleName(), elementName_.GetAbilityName()));
|
||||
accountData_->RemoveConnectingA11yAbility(
|
||||
Utils::GetUri(elementName_.GetBundleName(), elementName_.GetAbilityName()));
|
||||
Singleton<AccessibleAbilityManagerService>::GetInstance().UpdateAbilities();
|
||||
return;
|
||||
}
|
||||
@ -101,7 +103,8 @@ void AccessibleAbilityConnection::InnerOnAbilityConnectDone(const AppExecFwk::El
|
||||
|
||||
sptr<AccessibleAbilityConnection> pointer = this;
|
||||
accountData_->AddConnectedAbility(pointer);
|
||||
accountData_->RemoveConnectingA11yAbility(elementName_.GetBundleName() + "/" + elementName_.GetAbilityName());
|
||||
accountData_->RemoveConnectingA11yAbility(
|
||||
Utils::GetUri(elementName_.GetBundleName(), elementName_.GetAbilityName()));
|
||||
Singleton<AccessibleAbilityManagerService>::GetInstance().UpdateAccessibilityManagerService();
|
||||
|
||||
channel_ = new(std::nothrow) AccessibleAbilityChannel(*pointer);
|
||||
@ -313,7 +316,7 @@ void AccessibleAbilityConnection::Connect(const AppExecFwk::ElementName &element
|
||||
HILOG_ERROR("ConnectAbility failed!");
|
||||
return;
|
||||
}
|
||||
accountData_->AddConnectingA11yAbility(bundleName + "/" + abilitName);
|
||||
accountData_->AddConnectingA11yAbility(Utils::GetUri(bundleName, abilitName));
|
||||
}
|
||||
|
||||
int32_t AccessibleAbilityConnection::GetChannelId()
|
||||
@ -332,18 +335,18 @@ void AccessibleAbilityConnection::AccessibleAbilityConnectionDeathRecipient::OnR
|
||||
return;
|
||||
}
|
||||
|
||||
sptr<AccessibleAbilityConnection> connection =
|
||||
recipientAccountData_->GetAccessibleAbilityConnection(recipientElementName_.GetURI());
|
||||
std::string uri = Utils::GetUri(recipientElementName_);
|
||||
sptr<AccessibleAbilityConnection> connection = recipientAccountData_->GetAccessibleAbilityConnection(uri);
|
||||
if (!connection) {
|
||||
HILOG_ERROR("There is no connection for %{public}s.", recipientElementName_.GetURI().c_str());
|
||||
HILOG_ERROR("There is no connection for %{public}s.", uri.c_str());
|
||||
return;
|
||||
}
|
||||
recipientAccountData_->RemoveConnectedAbility(connection);
|
||||
recipientAccountData_->RemoveEnabledAbility(recipientElementName_.GetBundleName() + "/" +
|
||||
recipientElementName_.GetAbilityName());
|
||||
recipientAccountData_->RemoveEnabledAbility(
|
||||
Utils::GetUri(recipientElementName_.GetBundleName(), recipientElementName_.GetAbilityName()));
|
||||
|
||||
std::string uiTestUri = "/ohos.uitest/uitestability";
|
||||
if (recipientElementName_.GetURI() == uiTestUri) {
|
||||
std::string uiTestUri = Utils::GetUri("ohos.uitest", "uitestability");
|
||||
if (uri == uiTestUri) {
|
||||
recipientAccountData_->RemoveInstalledAbility("ohos.uitest");
|
||||
}
|
||||
|
||||
|
@ -799,7 +799,7 @@ RetError AccessibleAbilityManagerService::EnableUITestAbility(const sptr<IRemote
|
||||
syncPromise.set_value(RET_ERR_NULLPTR);
|
||||
return;
|
||||
}
|
||||
std::string uiTestUri = "/" + UI_TEST_BUNDLE_NAME + "/" + UI_TEST_ABILITY_NAME;
|
||||
std::string uiTestUri = Utils::GetUri(UI_TEST_BUNDLE_NAME, UI_TEST_ABILITY_NAME);
|
||||
sptr<AccessibleAbilityConnection> connection = accountData->GetAccessibleAbilityConnection(uiTestUri);
|
||||
if (connection) {
|
||||
HILOG_ERROR("connection is existed!!");
|
||||
@ -833,7 +833,7 @@ bool AccessibleAbilityManagerService::DisableUITestAbility()
|
||||
syncPromise.set_value(false);
|
||||
return;
|
||||
}
|
||||
std::string uiTestUri = "/" + UI_TEST_BUNDLE_NAME + "/" + UI_TEST_ABILITY_NAME;
|
||||
std::string uiTestUri = Utils::GetUri(UI_TEST_BUNDLE_NAME, UI_TEST_ABILITY_NAME);
|
||||
sptr<AccessibleAbilityConnection> connection = accountData->GetAccessibleAbilityConnection(uiTestUri);
|
||||
if (!connection) {
|
||||
HILOG_ERROR("connection is not existed!!");
|
||||
@ -1326,19 +1326,18 @@ void AccessibleAbilityManagerService::UpdateAbilities()
|
||||
|
||||
auto connectingAbilities = accountData->GetConnectingA11yAbilities();
|
||||
vector<string>::iterator iter = std::find(connectingAbilities.begin(),
|
||||
connectingAbilities.end(), bundleName + "/" + abilityName);
|
||||
connectingAbilities.end(), Utils::GetUri(bundleName, abilityName));
|
||||
if (iter != connectingAbilities.end()) {
|
||||
HILOG_DEBUG("The ability(bundleName[%{public}s] abilityName[%{public}s]) is connecting.",
|
||||
bundleName.c_str(), abilityName.c_str());
|
||||
continue;
|
||||
}
|
||||
|
||||
AppExecFwk::ElementName connectionElement(deviceId, bundleName, abilityName);
|
||||
sptr<AccessibleAbilityConnection> connection =
|
||||
accountData->GetAccessibleAbilityConnection(connectionElement.GetURI());
|
||||
accountData->GetAccessibleAbilityConnection(Utils::GetUri(bundleName, abilityName));
|
||||
|
||||
auto enabledAbilities = accountData->GetEnabledAbilities();
|
||||
iter = std::find(enabledAbilities.begin(), enabledAbilities.end(), bundleName + "/" + abilityName);
|
||||
iter = std::find(enabledAbilities.begin(), enabledAbilities.end(), Utils::GetUri(bundleName, abilityName));
|
||||
if (iter != enabledAbilities.end()) {
|
||||
if (!connection) {
|
||||
AppExecFwk::ElementName element(deviceId, bundleName, abilityName);
|
||||
|
@ -328,5 +328,18 @@ void PraseVecUtils::ParseCapabilitiesFromVec(const vector<string>& capabilities,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string Utils::GetUri(const OHOS::AppExecFwk::ElementName &elementName)
|
||||
{
|
||||
HILOG_DEBUG("bundle name(%{public}s) ability name(%{public}s)",
|
||||
elementName.GetBundleName().c_str(), elementName.GetAbilityName().c_str());
|
||||
return elementName.GetBundleName() + "/" + elementName.GetAbilityName();
|
||||
}
|
||||
|
||||
std::string Utils::GetUri(const std::string &bundleName, const std::string &abilityName)
|
||||
{
|
||||
HILOG_DEBUG("bundle name(%{public}s) ability name(%{public}s)", bundleName.c_str(), abilityName.c_str());
|
||||
return bundleName + "/" + abilityName;
|
||||
}
|
||||
} // namespace Accessibility
|
||||
} // namespace OHOS
|
@ -16,6 +16,7 @@
|
||||
#include "accessibility_account_data.h"
|
||||
#include "accessible_ability_manager_service.h"
|
||||
#include "hilog_wrapper.h"
|
||||
#include "json_utils.h"
|
||||
|
||||
namespace OHOS {
|
||||
namespace Accessibility {
|
||||
@ -69,10 +70,12 @@ void AccessibilityAccountData::OnAccountSwitched()
|
||||
// add connect ability.
|
||||
void AccessibilityAccountData::AddConnectedAbility(sptr<AccessibleAbilityConnection>& connection)
|
||||
{
|
||||
HILOG_DEBUG("URI is %{public}s", connection->GetElementName().GetURI().c_str());
|
||||
if (!connectedA11yAbilities_.count(connection->GetElementName().GetURI())) {
|
||||
connectedA11yAbilities_.insert(std::make_pair(connection->GetElementName().GetURI(), connection));
|
||||
std::string uri = Utils::GetUri(connection->GetElementName());
|
||||
HILOG_DEBUG("URI is %{public}s", uri.c_str());
|
||||
if (!connectedA11yAbilities_.count(uri)) {
|
||||
connectedA11yAbilities_.insert(make_pair(uri, connection));
|
||||
}
|
||||
|
||||
HILOG_DEBUG("Add ConnectedAbility: %{public}zu", connectedA11yAbilities_.size());
|
||||
}
|
||||
|
||||
|
@ -63,10 +63,10 @@ int32_t AccessibilityWindowManager::ConvertToRealWindowId(int32_t windowId, int3
|
||||
return 0;
|
||||
}
|
||||
|
||||
WindowType ConvertWindowType(Rosen::WindowType type)
|
||||
AccessibilityWindowType ConvertWindowType(Rosen::WindowType type)
|
||||
{
|
||||
(void)type;
|
||||
WindowType winType = TYPE_WINDOW_INVALID;
|
||||
AccessibilityWindowType winType = TYPE_WINDOW_INVALID;
|
||||
|
||||
if (type < Rosen::WindowType::SYSTEM_WINDOW_BASE) {
|
||||
winType = TYPE_APPLICATION;
|
||||
@ -83,7 +83,7 @@ AccessibilityWindowInfo AccessibilityWindowManager::CreateAccessibilityWindowInf
|
||||
(void)windowInfo;
|
||||
AccessibilityWindowInfo info;
|
||||
info.SetWindowId(0);
|
||||
info.SetWindowType(ConvertWindowType(Rosen::WindowType::SYSTEM_WINDOW_BASE));
|
||||
info.SetAccessibilityWindowType(ConvertWindowType(Rosen::WindowType::SYSTEM_WINDOW_BASE));
|
||||
info.SetFocused(true);
|
||||
Rect bound(TOP_X, TOP_Y, BOTTOM_X, BOTTOM_Y);
|
||||
info.SetRectInScreen(bound);
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "accessibility_event_info.h"
|
||||
#include "accessibility_window_manager.h"
|
||||
#include "accessible_ability_manager_service.h"
|
||||
#include "json_utils.h"
|
||||
#include "hilog_wrapper.h"
|
||||
#include "iservice_registry.h"
|
||||
#include "system_ability_definition.h"
|
||||
@ -346,9 +347,8 @@ void AccessibleAbilityManagerService::UpdateAbilities()
|
||||
continue;
|
||||
}
|
||||
|
||||
AppExecFwk::ElementName connectionElement("", bundleName, "");
|
||||
sptr<AccessibleAbilityConnection> connection =
|
||||
accountData->GetAccessibleAbilityConnection(connectionElement.GetURI());
|
||||
accountData->GetAccessibleAbilityConnection(Utils::GetUri(bundleName, abilityName));
|
||||
|
||||
auto enabledAbilities = accountData->GetEnabledAbilities();
|
||||
iter = std::find(enabledAbilities.begin(), enabledAbilities.end(), bundleName);
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "accessibility_constants.h"
|
||||
#include "accessibility_element_operator_proxy.h"
|
||||
#include "accessibility_element_operator_stub.h"
|
||||
#include "json_utils.h"
|
||||
#include "mock_accessibility_element_operator_proxy.h"
|
||||
#include "mock_accessibility_element_operator_stub.h"
|
||||
#include "mock_accessible_ability_client_stub_impl.h"
|
||||
@ -105,7 +106,7 @@ HWTEST_F(AccessibilityAccountDataTest, AccessibilityAccountData_Unittest_GetAcce
|
||||
EXPECT_EQ(0, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
/* add connected ability */
|
||||
accountData->AddConnectedAbility(connection);
|
||||
const std::string elementName = connection->GetElementName().GetURI();
|
||||
const std::string elementName = Utils::GetUri(connection->GetElementName());
|
||||
EXPECT_EQ(connection, accountData->GetAccessibleAbilityConnection(elementName));
|
||||
EXPECT_EQ(1, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
|
||||
@ -208,7 +209,7 @@ HWTEST_F(AccessibilityAccountDataTest, AccessibilityAccountData_Unittest_AddConn
|
||||
EXPECT_EQ(0, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
/* add connected ability */
|
||||
accountData->AddConnectedAbility(connection);
|
||||
const std::string elementName = connection->GetElementName().GetURI();
|
||||
const std::string elementName = Utils::GetUri(connection->GetElementName());
|
||||
EXPECT_EQ(connection, accountData->GetAccessibleAbilityConnection(elementName));
|
||||
EXPECT_EQ(1, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
|
||||
@ -234,7 +235,7 @@ HWTEST_F(AccessibilityAccountDataTest, AccessibilityAccountData_Unittest_RemoveC
|
||||
/* add */
|
||||
accountData->AddConnectedAbility(connection);
|
||||
EXPECT_EQ(1, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
const std::string elementName = connection->GetElementName().GetURI();
|
||||
const std::string elementName = Utils::GetUri(connection->GetElementName());
|
||||
EXPECT_EQ(connection, accountData->GetAccessibleAbilityConnection(elementName));
|
||||
/* remove */
|
||||
accountData->RemoveConnectedAbility(connection);
|
||||
@ -261,7 +262,7 @@ HWTEST_F(AccessibilityAccountDataTest, AccessibilityAccountData_Unittest_Ability
|
||||
EXPECT_EQ(0, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
/* add */
|
||||
accountData->AddConnectedAbility(connection);
|
||||
const std::string elementNameURI = connection->GetElementName().GetURI();
|
||||
const std::string elementNameURI = Utils::GetUri(connection->GetElementName());
|
||||
EXPECT_EQ(1, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
EXPECT_EQ(connection, accountData->GetAccessibleAbilityConnection(elementNameURI));
|
||||
|
||||
@ -432,7 +433,7 @@ HWTEST_F(
|
||||
EXPECT_EQ(0, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
accountData->AddConnectedAbility(connection);
|
||||
EXPECT_EQ(1, (int)accountData->GetConnectedA11yAbilities().size());
|
||||
const std::string elementName = connection->GetElementName().GetURI();
|
||||
const std::string elementName = Utils::GetUri(connection->GetElementName());
|
||||
/* get */
|
||||
EXPECT_EQ(connection, accountData->GetAccessibleAbilityConnection(elementName));
|
||||
GTEST_LOG_(INFO) << "AccessibilityAccountData_Unittest_GetAccessibleAbilityConnection001 end";
|
||||
|
@ -148,7 +148,7 @@ HWTEST_F(AccessibilityWindowManagerTest, AccessibilityWindowManager_Unittest_Cre
|
||||
AccessibilityWindowManager& windowInfoManager = Singleton<AccessibilityWindowManager>::GetInstance();
|
||||
AccessibilityWindowInfo info = windowInfoManager.CreateAccessibilityWindowInfo(winInfo->currentWindowInfo_);
|
||||
|
||||
EXPECT_EQ(TYPE_APPLICATION, info.GetWindowType());
|
||||
EXPECT_EQ(TYPE_APPLICATION, info.GetAccessibilityWindowType());
|
||||
GTEST_LOG_(INFO) << "AccessibilityWindowManager_Unittest_CreateAccessibilityWindowInfo001 end";
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@ HWTEST_F(AccessibilityWindowManagerTest, AccessibilityWindowManager_Unittest_Cre
|
||||
AccessibilityWindowManager& windowInfoManager = Singleton<AccessibilityWindowManager>::GetInstance();
|
||||
AccessibilityWindowInfo info = windowInfoManager.CreateAccessibilityWindowInfo(winInfo->currentWindowInfo_);
|
||||
|
||||
EXPECT_EQ(TYPE_SYSTEM, info.GetWindowType());
|
||||
EXPECT_EQ(TYPE_SYSTEM, info.GetAccessibilityWindowType());
|
||||
GTEST_LOG_(INFO) << "AccessibilityWindowManager_Unittest_CreateAccessibilityWindowInfo002 end";
|
||||
}
|
||||
|
||||
@ -205,7 +205,7 @@ HWTEST_F(AccessibilityWindowManagerTest, AccessibilityWindowManager_Unittest_Cre
|
||||
AccessibilityWindowManager& windowInfoManager = Singleton<AccessibilityWindowManager>::GetInstance();
|
||||
AccessibilityWindowInfo info = windowInfoManager.CreateAccessibilityWindowInfo(winInfo->currentWindowInfo_);
|
||||
|
||||
EXPECT_EQ(TYPE_WINDOW_INVALID, info.GetWindowType());
|
||||
EXPECT_EQ(TYPE_WINDOW_INVALID, info.GetAccessibilityWindowType());
|
||||
GTEST_LOG_(INFO) << "AccessibilityWindowManager_Unittest_CreateAccessibilityWindowInfo003 end";
|
||||
}
|
||||
|
||||
@ -725,7 +725,7 @@ HWTEST_F(
|
||||
|
||||
AccessibilityWindowManager& mgr = Singleton<AccessibilityWindowManager>::GetInstance();
|
||||
AccessibilityWindowInfo info = mgr.CreateAccessibilityWindowInfo(winInfo->currentWindowInfo_);
|
||||
info.SetWindowType(WindowType::TYPE_APPLICATION);
|
||||
info.SetAccessibilityWindowType(AccessibilityWindowType::TYPE_APPLICATION);
|
||||
EXPECT_EQ(0, (int)mgr.a11yWindows_.size());
|
||||
mgr.a11yWindows_.insert(std::make_pair(windowId, info));
|
||||
EXPECT_EQ(1, (int)mgr.a11yWindows_.size());
|
||||
@ -736,8 +736,8 @@ HWTEST_F(
|
||||
/* GetAccessibilityWindows */
|
||||
std::vector<AccessibilityWindowInfo> windows = mgr.GetAccessibilityWindows();
|
||||
EXPECT_EQ(1, (int)windows.size());
|
||||
static Accessibility::WindowType type = windows.begin()->GetWindowType();
|
||||
EXPECT_EQ(WindowType::TYPE_APPLICATION, type);
|
||||
static Accessibility::AccessibilityWindowType type = windows.begin()->GetAccessibilityWindowType();
|
||||
EXPECT_EQ(AccessibilityWindowType::TYPE_APPLICATION, type);
|
||||
|
||||
mgr.a11yWindows_.clear();
|
||||
GTEST_LOG_(INFO) << "AccessibilityWindowManager_Unittest_GetAccessibilityWindows001 end";
|
||||
@ -768,7 +768,7 @@ HWTEST_F(AccessibilityWindowManagerTest, AccessibilityWindowManager_Unittest_Get
|
||||
|
||||
AccessibilityWindowManager& mgr = Singleton<AccessibilityWindowManager>::GetInstance();
|
||||
AccessibilityWindowInfo info = mgr.CreateAccessibilityWindowInfo(winInfo->currentWindowInfo_);
|
||||
info.SetWindowType(WindowType::TYPE_APPLICATION);
|
||||
info.SetAccessibilityWindowType(AccessibilityWindowType::TYPE_APPLICATION);
|
||||
EXPECT_EQ(0, (int)mgr.a11yWindows_.size());
|
||||
mgr.a11yWindows_.insert(std::make_pair(windowId, info));
|
||||
EXPECT_EQ(1, (int)mgr.a11yWindows_.size());
|
||||
@ -806,7 +806,7 @@ HWTEST_F(AccessibilityWindowManagerTest, AccessibilityWindowManager_Unittest_Get
|
||||
|
||||
AccessibilityWindowManager& mgr = Singleton<AccessibilityWindowManager>::GetInstance();
|
||||
AccessibilityWindowInfo info = mgr.CreateAccessibilityWindowInfo(winInfo->currentWindowInfo_);
|
||||
info.SetWindowType(WindowType::TYPE_APPLICATION);
|
||||
info.SetAccessibilityWindowType(AccessibilityWindowType::TYPE_APPLICATION);
|
||||
EXPECT_EQ(0, (int)mgr.a11yWindows_.size());
|
||||
mgr.a11yWindows_.insert(std::make_pair(windowId, info));
|
||||
EXPECT_EQ(1, (int)mgr.a11yWindows_.size());
|
||||
@ -844,7 +844,7 @@ HWTEST_F(AccessibilityWindowManagerTest, AccessibilityWindowManager_Unittest_IsV
|
||||
|
||||
AccessibilityWindowManager& mgr = Singleton<AccessibilityWindowManager>::GetInstance();
|
||||
AccessibilityWindowInfo info = mgr.CreateAccessibilityWindowInfo(winInfo->currentWindowInfo_);
|
||||
info.SetWindowType(WindowType::TYPE_APPLICATION);
|
||||
info.SetAccessibilityWindowType(AccessibilityWindowType::TYPE_APPLICATION);
|
||||
EXPECT_EQ(0, (int)mgr.a11yWindows_.size());
|
||||
mgr.a11yWindows_.insert(std::make_pair(windowId, info));
|
||||
EXPECT_EQ(1, (int)mgr.a11yWindows_.size());
|
||||
@ -882,7 +882,7 @@ HWTEST_F(AccessibilityWindowManagerTest, AccessibilityWindowManager_Unittest_IsV
|
||||
|
||||
AccessibilityWindowManager& mgr = Singleton<AccessibilityWindowManager>::GetInstance();
|
||||
AccessibilityWindowInfo info = mgr.CreateAccessibilityWindowInfo(winInfo->currentWindowInfo_);
|
||||
info.SetWindowType(WindowType::TYPE_APPLICATION);
|
||||
info.SetAccessibilityWindowType(AccessibilityWindowType::TYPE_APPLICATION);
|
||||
EXPECT_EQ(0, (int)mgr.a11yWindows_.size());
|
||||
mgr.a11yWindows_.insert(std::make_pair(windowId, info));
|
||||
EXPECT_EQ(1, (int)mgr.a11yWindows_.size());
|
||||
|
@ -29,9 +29,11 @@ AccessibilityWindowInfoParcel::AccessibilityWindowInfoParcel(const Accessibility
|
||||
|
||||
bool AccessibilityWindowInfoParcel::ReadFromParcel(Parcel &parcel)
|
||||
{
|
||||
int32_t windowType = TYPE_WINDOW_INVALID;
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, windowType);
|
||||
windowType_ = static_cast<WindowType>(windowType);
|
||||
int32_t accessibilityWindowType = TYPE_WINDOW_INVALID;
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, accessibilityWindowType);
|
||||
accessibilityWindowType_ = static_cast<AccessibilityWindowType>(accessibilityWindowType);
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Uint32, parcel, windowType_);
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Uint32, parcel, windowMode_);
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, windowLayer_);
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, windowId_);
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, parentId_);
|
||||
@ -43,6 +45,7 @@ bool AccessibilityWindowInfoParcel::ReadFromParcel(Parcel &parcel)
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, active_);
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, focused_);
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, accessibilityFocused_);
|
||||
READ_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, isDecorEnable_);
|
||||
sptr<RectParcel> boundsInScreen = parcel.ReadStrongParcelable<RectParcel>();
|
||||
if (!boundsInScreen) {
|
||||
HILOG_ERROR("ReadStrongParcelable boundsInScreen failed.");
|
||||
@ -55,7 +58,9 @@ bool AccessibilityWindowInfoParcel::ReadFromParcel(Parcel &parcel)
|
||||
|
||||
bool AccessibilityWindowInfoParcel::Marshalling(Parcel &parcel) const
|
||||
{
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, static_cast<int32_t>(windowType_));
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, static_cast<int32_t>(accessibilityWindowType_));
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Uint32, parcel, windowType_);
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Uint32, parcel, windowMode_);
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, windowLayer_);
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, windowId_);
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Int32, parcel, parentId_);
|
||||
@ -67,6 +72,7 @@ bool AccessibilityWindowInfoParcel::Marshalling(Parcel &parcel) const
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, active_);
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, focused_);
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, accessibilityFocused_);
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Bool, parcel, isDecorEnable_);
|
||||
RectParcel rectParcel(boundsInScreen_);
|
||||
WRITE_PARCEL_AND_RETURN_FALSE_IF_FAIL(Parcelable, parcel, &rectParcel);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user