修复异常ut, 修复SA调用陷入超大循环问题

Signed-off-by: huandong <huandong1@huawei.com>
Change-Id: I4d8da4030b9d541559c8542bbd1cbd6e913bbce6
This commit is contained in:
huandong
2022-03-11 15:39:31 +08:00
parent d14eebccab
commit e3d66e74c5
4 changed files with 22 additions and 98 deletions
+18 -2
View File
@@ -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
+2
View File
@@ -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
+2
View File
@@ -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));