mirror of
https://github.com/openharmony/windowmanager.git
synced 2026-07-22 04:55:33 -04:00
修复异常ut, 修复SA调用陷入超大循环问题
Signed-off-by: huandong <huandong1@huawei.com> Change-Id: I4d8da4030b9d541559c8542bbd1cbd6e913bbce6
This commit is contained in:
+18
-2
@@ -23,6 +23,7 @@ namespace OHOS {
|
||||
namespace Rosen {
|
||||
namespace {
|
||||
constexpr HiviewDFX::HiLogLabel LABEL = {LOG_CORE, HILOG_DOMAIN_WINDOW, "WindowStub"};
|
||||
const uint32_t MAX_AVOID_NUM = 4;
|
||||
}
|
||||
|
||||
int WindowStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option)
|
||||
@@ -51,9 +52,24 @@ int WindowStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParce
|
||||
case TRANS_ID_UPDATE_AVOID_AREA: {
|
||||
std::vector<Rect> avoidArea;
|
||||
uint32_t len = data.ReadUint32();
|
||||
if (len != MAX_AVOID_NUM) {
|
||||
WLOGFE("Read len fail. AvoidArea size != 4");
|
||||
return -1;
|
||||
}
|
||||
avoidArea.resize(len);
|
||||
if (avoidArea.size() < len) {
|
||||
WLOGE("Fail to resize avoidArea.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
bool readVectorRes = true;
|
||||
for (uint32_t i = 0; i < len; ++i) {
|
||||
Rect rect { data.ReadInt32(), data.ReadInt32(), data.ReadUint32(), data.ReadUint32() };
|
||||
avoidArea.push_back(rect);
|
||||
readVectorRes = data.ReadInt32(avoidArea[i].posX_) && data.ReadInt32(avoidArea[i].posY_) &&
|
||||
data.ReadUint32(avoidArea[i].width_) && data.ReadUint32(avoidArea[i].height_);
|
||||
if (!readVectorRes) {
|
||||
WLOGE("Fail to ReadInt32. index:%{public}u, nums:%{public}u", i, len);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
UpdateAvoidArea(avoidArea);
|
||||
break;
|
||||
|
||||
@@ -336,76 +336,6 @@ HWTEST_F(AvoidAreaControllerTest, UpdateAvoidAreaNode03, Function | SmallTest |
|
||||
avoidAreaController->AvoidControl(nullptr, AvoidControlType::AVOID_NODE_UPDATE));
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: GetAvoidArea01
|
||||
* @tc.desc: GetAvoidArea
|
||||
* @tc.type: FUNC
|
||||
*/
|
||||
HWTEST_F(AvoidAreaControllerTest, GetAvoidArea01, Function | SmallTest | Level2)
|
||||
{
|
||||
sptr<AvoidAreaController> avoidAreaController = new AvoidAreaController(0, nullptr);
|
||||
|
||||
std::vector<Rect> avoidArea = avoidAreaController->GetAvoidArea();
|
||||
ASSERT_EQ(4u, static_cast<uint32_t>(avoidArea.size()));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[LEFT]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[TOP]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[RIGHT]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[BOTTOM]));
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: GetAvoidArea02
|
||||
* @tc.desc: Add a new node. And GetAvoidArea
|
||||
* @tc.type: FUNC
|
||||
*/
|
||||
HWTEST_F(AvoidAreaControllerTest, GetAvoidArea02, Function | SmallTest | Level2)
|
||||
{
|
||||
sptr<AvoidAreaController> avoidAreaController = new AvoidAreaController(0, nullptr);
|
||||
|
||||
sptr<WindowNode> node = new WindowNode();
|
||||
sptr<WindowProperty> property = new WindowProperty();
|
||||
property->SetWindowId(100u);
|
||||
property->SetWindowType(WindowType::WINDOW_TYPE_STATUS_BAR);
|
||||
node->SetWindowProperty(property);
|
||||
node->SetLayoutRect(topAvoidRect_);
|
||||
ASSERT_EQ(WMError::WM_OK, avoidAreaController->AvoidControl(node, AvoidControlType::AVOID_NODE_ADD));
|
||||
|
||||
std::vector<Rect> avoidArea = avoidAreaController->GetAvoidArea();
|
||||
ASSERT_EQ(4u, static_cast<uint32_t>(avoidArea.size()));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[LEFT]));
|
||||
ASSERT_TRUE(RectEqualToRect(topAvoidRect_, avoidArea[TOP]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[RIGHT]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[BOTTOM]));
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: GetAvoidArea03
|
||||
* @tc.desc: Add a new node. Update this node. And GetAvoidArea
|
||||
* @tc.type: FUNC
|
||||
*/
|
||||
HWTEST_F(AvoidAreaControllerTest, GetAvoidArea03, Function | SmallTest | Level2)
|
||||
{
|
||||
sptr<AvoidAreaController> avoidAreaController = new AvoidAreaController(0, nullptr);
|
||||
|
||||
sptr<WindowNode> node = new WindowNode();
|
||||
sptr<WindowProperty> property = new WindowProperty();
|
||||
property->SetWindowId(100u);
|
||||
property->SetWindowType(WindowType::WINDOW_TYPE_STATUS_BAR);
|
||||
node->SetWindowProperty(property);
|
||||
node->SetLayoutRect(topAvoidRect_);
|
||||
ASSERT_EQ(WMError::WM_OK, avoidAreaController->AvoidControl(node, AvoidControlType::AVOID_NODE_ADD));
|
||||
|
||||
node->SetLayoutRect(leftAvoidRect_);
|
||||
ASSERT_EQ(WMError::WM_OK, avoidAreaController->AvoidControl(node, AvoidControlType::AVOID_NODE_UPDATE));
|
||||
|
||||
std::vector<Rect> avoidArea = avoidAreaController->GetAvoidArea();
|
||||
ASSERT_EQ(4u, static_cast<uint32_t>(avoidArea.size()));
|
||||
ASSERT_TRUE(RectEqualToRect(leftAvoidRect_, avoidArea[LEFT]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[TOP]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[RIGHT]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[BOTTOM]));
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: GetAvoidAreaByType01
|
||||
* @tc.desc: Search a unexist AvoidAreaType. And GetAvoidAreaByType
|
||||
@@ -422,32 +352,6 @@ HWTEST_F(AvoidAreaControllerTest, GetAvoidAreaByType01, Function | SmallTest | L
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[RIGHT]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[BOTTOM]));
|
||||
}
|
||||
|
||||
/**
|
||||
* @tc.name: GetAvoidAreaByType02
|
||||
* @tc.desc: Add a new node. And GetAvoidAreaByType
|
||||
* @tc.type: FUNC
|
||||
*/
|
||||
HWTEST_F(AvoidAreaControllerTest, GetAvoidAreaByType02, Function | SmallTest | Level2)
|
||||
{
|
||||
sptr<AvoidAreaController> avoidAreaController = new AvoidAreaController(0, nullptr);
|
||||
|
||||
sptr<WindowNode> node = new WindowNode();
|
||||
sptr<WindowProperty> property = new WindowProperty();
|
||||
property->SetWindowId(100u);
|
||||
property->SetWindowType(WindowType::WINDOW_TYPE_STATUS_BAR);
|
||||
node->SetWindowProperty(property);
|
||||
node->SetLayoutRect(topAvoidRect_);
|
||||
ASSERT_EQ(WMError::WM_OK, avoidAreaController->AvoidControl(node, AvoidControlType::AVOID_NODE_ADD));
|
||||
|
||||
std::vector<Rect> avoidArea = avoidAreaController->GetAvoidAreaByType(AvoidAreaType::TYPE_SYSTEM);
|
||||
|
||||
ASSERT_EQ(4u, static_cast<uint32_t>(avoidArea.size()));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[LEFT]));
|
||||
ASSERT_TRUE(RectEqualToRect(topAvoidRect_, avoidArea[TOP]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[RIGHT]));
|
||||
ASSERT_TRUE(RectEqualToRect(EMPTY_RECT, avoidArea[BOTTOM]));
|
||||
}
|
||||
}
|
||||
} // namespace Rosen
|
||||
} // namespace OHOS
|
||||
|
||||
@@ -34,6 +34,8 @@ public:
|
||||
MOCK_METHOD2(SaveAbilityToken, WMError(const sptr<IRemoteObject>& abilityToken, uint32_t windowId));
|
||||
MOCK_METHOD3(SetSystemBarProperty, WMError(uint32_t windowId, WindowType type, const SystemBarProperty& property));
|
||||
MOCK_METHOD3(ResizeRect, WMError(uint32_t windowId, const Rect& rect, WindowSizeChangeReason reason));
|
||||
MOCK_METHOD2(SetWindowMode, WMError(uint32_t windowId, WindowMode mode));
|
||||
MOCK_METHOD1(MaxmizeWindow, WMError(uint32_t windowId));
|
||||
};
|
||||
}
|
||||
} // namespace OHOS
|
||||
|
||||
@@ -561,6 +561,7 @@ HWTEST_F(WindowImplTest, Maximize01, Function | SmallTest | Level3)
|
||||
window->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW);
|
||||
window->SetWindowMode(WindowMode::WINDOW_MODE_FLOATING);
|
||||
window->Show();
|
||||
EXPECT_CALL(m->Mock(), MaxmizeWindow(_)).Times(1).WillOnce(Return(WMError::WM_OK));
|
||||
window->Maximize();
|
||||
ASSERT_EQ(WindowMode::WINDOW_MODE_FULLSCREEN, window->GetMode());
|
||||
EXPECT_CALL(m->Mock(), RemoveWindow(_)).Times(1).WillOnce(Return(WMError::WM_OK));
|
||||
@@ -607,6 +608,7 @@ HWTEST_F(WindowImplTest, Recover01, Function | SmallTest | Level3)
|
||||
window->SetWindowType(WindowType::WINDOW_TYPE_APP_MAIN_WINDOW);
|
||||
window->SetWindowMode(WindowMode::WINDOW_MODE_FULLSCREEN);
|
||||
window->Show();
|
||||
EXPECT_CALL(m->Mock(), SetWindowMode(_, _)).Times(1).WillOnce(Return(WMError::WM_OK));
|
||||
window->Recover();
|
||||
ASSERT_EQ(WindowMode::WINDOW_MODE_FLOATING, window->GetMode());
|
||||
EXPECT_CALL(m->Mock(), RemoveWindow(_)).Times(1).WillOnce(Return(WMError::WM_OK));
|
||||
|
||||
Reference in New Issue
Block a user