fix code style

Signed-off-by: xiaojianfeng <xiaojianfeng3@huawei.com>
Change-Id: I70a83035135945f5af011d1b66a2bb581b4a6114
This commit is contained in:
xiaojianfeng
2022-06-25 17:17:40 +08:00
parent 85c663e30f
commit 94b983586a
21 changed files with 66 additions and 226 deletions
+1 -1
View File
@@ -71,7 +71,7 @@ public:
class IAvoidAreaChangedListener : virtual public RefBase {
public:
virtual void OnAvoidAreaChanged(const AvoidArea avoidAreas, AvoidAreaType type) = 0;
virtual void OnAvoidAreaChanged(const AvoidArea avoidArea, AvoidAreaType type) = 0;
};
class IWindowDragListener : virtual public RefBase {
+1 -1
View File
@@ -217,7 +217,7 @@ enum class AvoidAreaType : uint32_t {
TYPE_SYSTEM, // area of SystemUI
TYPE_CUTOUT, // cutout of screen
TYPE_SYSTEM_GESTURE, // area for system gesture
TYPE_KEYBOARD,
TYPE_KEYBOARD, // area for soft input keyboard
};
enum class OccupiedAreaType : uint32_t {
+1 -1
View File
@@ -86,7 +86,7 @@ declare namespace window {
TYPE_SYSTEM_GESTURE,
/**
* area for keyboard
* area for soft input keyboard
* @since 9
*/
TYPE_KEYBOARD
@@ -52,7 +52,7 @@ public:
void OnSystemBarPropertyChange(DisplayId displayId, const SystemBarRegionTints& tints) override;
void OnSizeChange(Rect rect, WindowSizeChangeReason reason) override;
void OnModeChange(WindowMode mode) override;
void OnAvoidAreaChanged(const AvoidArea avoidAreas, AvoidAreaType type) override;
void OnAvoidAreaChanged(const AvoidArea avoidArea, AvoidAreaType type) override;
void AfterForeground() override;
void AfterBackground() override;
void AfterFocused() override;
@@ -30,12 +30,12 @@ JsWindowRegisterManager::JsWindowRegisterManager()
};
// white register list for window
listenerProcess_[CaseType::CASE_WINDOW] = {
{WINDOW_SIZE_CHANGE_CB, &JsWindowRegisterManager::ProcessWindowChangeRegister },
{SYSTEM_AVOID_AREA_CHANGE_CB, &JsWindowRegisterManager::ProcessSystemAvoidAreaChangeRegister },
{AVOID_AREA_CHANGE_CB, &JsWindowRegisterManager::ProcessAvoidAreaChangeRegister },
{LIFECYCLE_EVENT_CB, &JsWindowRegisterManager::ProcessLifeCycleEventRegister },
{KEYBOARD_HEIGHT_CHANGE_CB, &JsWindowRegisterManager::ProcessOccupiedAreaChangeRegister },
{TOUCH_OUTSIDE_CB, &JsWindowRegisterManager::ProcessTouchOutsideRegister }
{ WINDOW_SIZE_CHANGE_CB, &JsWindowRegisterManager::ProcessWindowChangeRegister },
{ SYSTEM_AVOID_AREA_CHANGE_CB, &JsWindowRegisterManager::ProcessSystemAvoidAreaChangeRegister },
{ AVOID_AREA_CHANGE_CB, &JsWindowRegisterManager::ProcessAvoidAreaChangeRegister },
{ LIFECYCLE_EVENT_CB, &JsWindowRegisterManager::ProcessLifeCycleEventRegister },
{ KEYBOARD_HEIGHT_CHANGE_CB, &JsWindowRegisterManager::ProcessOccupiedAreaChangeRegister },
{ TOUCH_OUTSIDE_CB, &JsWindowRegisterManager::ProcessTouchOutsideRegister }
};
// white register list for window stage
listenerProcess_[CaseType::CASE_STAGE] = {
@@ -70,6 +70,10 @@ bool JsWindowRegisterManager::ProcessSystemAvoidAreaChangeRegister(sptr<JsWindow
WLOGFE("[NAPI]Window is nullptr");
return false;
}
if (listener == nullptr) {
WLOGFE("[NAPI]listener is nullptr");
return false;
}
listener->SetIsDeprecatedInterface(true);
sptr<IAvoidAreaChangedListener> thisListener(listener);
if (isRegister) {
@@ -102,8 +102,7 @@ NativeValue* AvoidAreaTypeInit(NativeEngine* engine)
static_cast<int32_t>(AvoidAreaType::TYPE_CUTOUT)));
object->SetProperty("TYPE_SYSTEM_GESTURE", CreateJsValue(*engine,
static_cast<int32_t>(AvoidAreaType::TYPE_SYSTEM_GESTURE)));
object->SetProperty("TYPE_KEYBOARD", CreateJsValue(*engine,
static_cast<int32_t>(AvoidAreaType::TYPE_KEYBOARD)));
object->SetProperty("TYPE_KEYBOARD", CreateJsValue(*engine, static_cast<int32_t>(AvoidAreaType::TYPE_KEYBOARD)));
return objValue;
}
-1
View File
@@ -261,7 +261,6 @@ void WindowAdapter::MinimizeWindowsByLauncher(std::vector<uint32_t> windowIds, b
WMError WindowAdapter::UpdateAvoidAreaListener(uint32_t windowId, bool haveListener)
{
INIT_PROXY_CHECK_RETURN(WMError::WM_ERROR_SAMGR);
return windowManagerServiceProxy_->UpdateAvoidAreaListener(windowId, haveListener);
}
} // namespace Rosen
+2 -2
View File
@@ -57,8 +57,8 @@ void WindowAgent::UpdateFocusStatus(bool focused)
void WindowAgent::UpdateAvoidArea(const sptr<AvoidArea>& avoidArea, AvoidAreaType type)
{
if (window_ == nullptr) {
WLOGFE("window_ is nullptr");
if (window_ == nullptr || avoidArea == nullptr) {
WLOGFE("window_ or avoidArea is nullptr.");
return;
}
window_->UpdateAvoidArea(avoidArea, type);
+1 -7
View File
@@ -295,7 +295,6 @@ WMError WindowImpl::GetAvoidAreaByType(AvoidAreaType type, AvoidArea& avoidArea)
if (ret != WMError::WM_OK) {
WLOGFE("GetAvoidAreaByType errCode:%{public}d winId:%{public}u Type is :%{public}u.",
static_cast<int32_t>(ret), property_->GetWindowId(), static_cast<uint32_t>(type));
return ret;
}
return ret;
}
@@ -2145,12 +2144,7 @@ void WindowImpl::NotifyAvoidAreaChange(const sptr<AvoidArea>& avoidArea, AvoidAr
std::lock_guard<std::recursive_mutex> lock(mutex_);
avoidAreaChangeListeners = avoidAreaChangeListeners_;
}
PostListenerTask([avoidAreaChangeListeners, avoidArea, type]() {
AvoidArea outAvoidArea;
outAvoidArea.topRect_ = avoidArea->topRect_;
outAvoidArea.leftRect_ = avoidArea->leftRect_;
outAvoidArea.rightRect_ = avoidArea->rightRect_;
outAvoidArea.bottomRect_ = avoidArea->bottomRect_;
PostListenerTask([avoidAreaChangeListeners, outAvoidArea = *avoidArea, type]() {
for (auto& listener : avoidAreaChangeListeners) {
if (listener != nullptr) {
listener->OnAvoidAreaChanged(outAvoidArea, type);
+1 -1
View File
@@ -25,9 +25,9 @@ group("systemtest") {
":wm_window_effect_test",
":wm_window_focus_test",
":wm_window_gamut_test",
":wm_window_immersive_test",
":wm_window_input_method_test",
":wm_window_input_test",
":wm_window_layout_test",
":wm_window_mode_support_info_test",
":wm_window_move_drag_test",
":wm_window_multi_ability_test",
+11 -160
View File
@@ -59,8 +59,8 @@ public:
class TestAvoidAreaChangedListener : public IAvoidAreaChangedListener {
public:
AvoidArea avoidAreas_;
void OnAvoidAreaChanged(const AvoidArea avoidAreas) override;
AvoidArea avoidArea_;
void OnAvoidAreaChanged(const AvoidArea avoidArea, AvoidAreaType type) override;
};
class WindowImmersiveTest : public testing::Test {
@@ -97,7 +97,7 @@ sptr<TestAvoidAreaChangedListener> WindowImmersiveTest::testAvoidAreaChangedList
void WindowImmersiveTest::SetWindowSystemProps(const sptr<Window>& window, const SystemBarRegionTints& tints)
{
for (auto tint : tints) {
window->SetSystemBarProperty(tint.type_, tint.propWindowImmersiveTest _);
window->SetSystemBarProperty(tint.type_, tint.prop_);
}
}
@@ -106,16 +106,15 @@ void WindowImmersiveTest::DumpFailedInfo(const SystemBarRegionTints& expect)
auto act = testSystemBarChangedListener_->tints_;
WLOGFI("WindowImmersiveTest Expected:");
for (auto tint : expect) {
WLOGFI("WindowType: %{public}4d, Enable: %{public}4d, Color: %{public}x | %{public}x",
static_cast<uint32_t>(tint.type_), tint.prop_.enable_,
tint.prop_.backgroundColor_, tint.prop_.contentColor_);
WLOGFI("WindowType: %{public}4d, Enable: %{public}4d, Color: %{public}x | %{public}x",
static_cast<uint32_t>(tint.type_), tint.prop_.enable_,
tint.prop_.backgroundColor_, tint.prop_.contentColor_);
}
WLOGFI("WindowImmersiveTest Act: ");
for (auto tint : act) {
WLOGFI("WindowType: %{public}4d, Enable: %{public}4d, Color: %{public}x | %{public}x",
static_cast<uint32_t>(tint.type_), tint.prop_.enable_,
tint.prop_.backgroundColor_, tint.prop_.contentColor_);
WLOGFI("WindowType: %{public}4d, Enable: %{public}4d, Color: %{public}x | %{public}x",
static_cast<uint32_t>(tint.type_), tint.prop_.enable_,
tint.prop_.backgroundColor_, tint.prop_.contentColor_);
}
}
@@ -189,9 +188,9 @@ void TestSystemBarChangedListener::OnSystemBarPropertyChange(DisplayId displayId
}
}
void TestAvoidAreaChangedListener::OnAvoidAreaChanged(AvoidArea avoidAreas)
void TestAvoidAreaChangedListener::OnAvoidAreaChanged(const AvoidArea avoidArea, AvoidAreaType type)
{
avoidAreas_ = avoidAreas;
avoidArea_ = avoidArea;
}
void WindowImmersiveTest::SetUpTestCase()
@@ -394,154 +393,6 @@ HWTEST_F(WindowImmersiveTest, GetAvoidAreaByTypeTest01, Function | MediumTest |
ASSERT_EQ(WMError::WM_OK, win->Hide());
}
/**
* @tc.name: GetAvoidAreaByTypeTest02
* @tc.desc: Add SystemBar left avoid. And Test GetAvoidArea.
* @tc.type: FUNC
*/
HWTEST_F(WindowImmersiveTest, GetAvoidAreaByTypeTest02, Function | MediumTest | Level3)
{
// Add full screenwindow for call GetAvoidArea, and push_back in activeWindows_
const sptr<Window>& win = utils::CreateTestWindow(fullScreenAppinfo_);
activeWindows_.push_back(win);
ASSERT_EQ(WMError::WM_OK, win->Show());
WLOGFI("win.posY_=%{public}d", win->GetRect().posY_);
// Add a unexist leftAvoid
avoidBarInfo_.rect = {0, 0, leftAvoidW_, leftAvoidH_};
const sptr<Window>& left = utils::CreateTestWindow(avoidBarInfo_);
activeWindows_.push_back(left);
WLOGFI("win.posY_=%{public}d", win->GetRect().posY_);
ASSERT_EQ(WMError::WM_OK, left->Show());
ASSERT_EQ(WMError::WM_OK, left->Resize(leftAvoidW_, leftAvoidH_));
// Test GetAvoidArea
AvoidArea avoidarea;
WMError ret = win->GetAvoidAreaByType(AvoidAreaType::TYPE_SYSTEM, avoidarea);
WLOGFI("ret = [%{public}u, avoidArea: top[%{public}d, %{public}d, %{public}u, %{public}u], left[%{public}d, %{public}d, %{public}u, %{public}u], " \
"right[%{public}d, %{public}d, %{public}u, %{public}u], bottom[%{public}d, %{public}d, %{public}u, %{public}u]", ret,
avoidarea.topRect_.posX_, avoidarea.topRect_.posY_, avoidarea.topRect_.width_, avoidarea.topRect_.height_,
avoidarea.leftRect_.posX_, avoidarea.leftRect_.posY_, avoidarea.leftRect_.width_, avoidarea.leftRect_.height_,
avoidarea.rightRect_.posX_, avoidarea.rightRect_.posY_, avoidarea.rightRect_.width_, avoidarea.rightRect_.height_,
avoidarea.bottomRect_.posX_, avoidarea.bottomRect_.posY_, avoidarea.bottomRect_.width_, avoidarea.bottomRect_.height_);
ASSERT_EQ(WMError::WM_OK, ret);
ASSERT_TRUE(utils::RectEqualTo(left, avoidarea.leftRect_));
ASSERT_EQ(WMError::WM_OK, left->Hide());
ASSERT_EQ(WMError::WM_OK, win->Hide());
}
/**
* @tc.name: GetAvoidAreaByTypeTest03
* @tc.desc: Add SystemBar top avoid. And Test GetAvoidArea.
* @tc.type: FUNC
*/
HWTEST_F(WindowImmersiveTest, GetAvoidAreaByTypeTest03, Function | MediumTest | Level3)
{
// Add full screenwindow for call GetAvoidArea, and push_back in activeWindows_
const sptr<Window>& win = utils::CreateTestWindow(fullScreenAppinfo_);
activeWindows_.push_back(win);
// Add a unexist topAvoid
avoidBarInfo_.name = "TopAvoidTest";
avoidBarInfo_.rect = {0, 0, topAvoidW_, topAvoidH_};
const sptr<Window>& top = utils::CreateTestWindow(avoidBarInfo_);
activeWindows_.push_back(top);
ASSERT_EQ(WMError::WM_OK, top->Show());
ASSERT_EQ(WMError::WM_OK, top->Resize(topAvoidW_, topAvoidH_));
// Tesr GetAvoidArea
AvoidArea avoidarea;
WMError ret = win->GetAvoidAreaByType(AvoidAreaType::TYPE_SYSTEM, avoidarea);
ASSERT_EQ(WMError::WM_OK, ret);
ASSERT_TRUE(utils::RectEqualTo(top, avoidarea.topRect));
ASSERT_EQ(WMError::WM_OK, top->Hide());
ASSERT_EQ(WMError::WM_OK, win->Hide());
}
/**
* @tc.name: OnAvoidAreaChangedTest01
* @tc.desc: Add unexistavoid and Update this avoid. Test OnAvoidAreaChanged listener
* @tc.type: FUNC
*/
HWTEST_F(WindowImmersiveTest, OnAvoidAreaChangedTest01, Function | MediumTest | Level3)
{
// Add full screenwindow for RegisterAvoidAreaChangeListener
const sptr<Window>& window = utils::CreateTestWindow(fullScreenAppinfo_);
sptr<IAvoidAreaChangedListener> thisListener(testAvoidAreaChangedListener_);
window->RegisterAvoidAreaChangeListener(thisListener);
activeWindows_.push_back(window);
ASSERT_EQ(WMError::WM_OK, window->Show());
// Add a unexist topAvoid
avoidBarInfo_.name = "TopAvoidTest";
avoidBarInfo_.rect = {0, 0, topAvoidW_, topAvoidH_};
const sptr<Window>& top = utils::CreateTestWindow(avoidBarInfo_);
activeWindows_.push_back(top);
ASSERT_EQ(WMError::WM_OK, top->Show());
ASSERT_EQ(WMError::WM_OK, top->Resize(topAvoidW_, topAvoidH_));
// Await 100ms and get callback result in listener. Compare current avoidArea
usleep(WAIT_ASYNC_US);
std::vector<Rect> avoidArea = testAvoidAreaChangedListener_->avoidAreas_;
ASSERT_EQ(4u, static_cast<uint32_t>(avoidArea.size())); // 4: avoidAreaNum(left, top, right, bottom)
ASSERT_TRUE(utils::RectEqualToRect(avoidBarInfo_.rect, avoidArea[1])); // 1: left Rect
// Update topavoid. Enlarge topAvoidH_
uint32_t bigHeight = std::min(static_cast<uint32_t>(utils::displayRect_.height_),
static_cast<uint32_t>(utils::displayRect_.width_ * 0.5)); // 0.5 : just use bigger height for update
Rect bigTopRect = {0, 0, topAvoidW_, bigHeight};
ASSERT_EQ(WMError::WM_OK, top->Resize(topAvoidW_, bigHeight));
// Await 100ms and get callback result in listener. Compare current avoidArea
usleep(WAIT_ASYNC_US);
std::vector<Rect> avoidArea2 = testAvoidAreaChangedListener_->avoidAreas_;
ASSERT_TRUE(utils::RectEqualToRect(bigTopRect, avoidArea2[1]));
window->UnregisterAvoidAreaChangeListener(thisListener);
ASSERT_EQ(WMError::WM_OK, top->Hide());
ASSERT_EQ(WMError::WM_OK, window->Hide());
}
/**
* @tc.name: OnAvoidAreaChangedTest02
* @tc.desc: Add unexistavoid and remove this avoid. Test OnAvoidAreaChanged listener
* @tc.type: FUNC
*/
HWTEST_F(WindowImmersiveTest, OnAvoidAreaChangedTest02, Function | MediumTest | Level3)
{
// Add full screenwindow for call UpdateAvoidChange
const sptr<Window>& window = utils::CreateTestWindow(fullScreenAppinfo_);
sptr<IAvoidAreaChangedListener> thisListener(testAvoidAreaChangedListener_);
window->RegisterAvoidAreaChangeListener(thisListener);
activeWindows_.push_back(window);
ASSERT_EQ(WMError::WM_OK, window->Show());
// Add a unexist leftAvoid
avoidBarInfo_.rect = {0, 0, leftAvoidW_, leftAvoidH_};
const sptr<Window>& left = utils::CreateTestWindow(avoidBarInfo_);
activeWindows_.push_back(left);
ASSERT_EQ(WMError::WM_OK, left->Show());
ASSERT_EQ(WMError::WM_OK, left->Resize(leftAvoidW_, leftAvoidH_));
// Await 100ms and get callback result in listener. Compare current avoidArea
usleep(WAIT_ASYNC_US);
std::vector<Rect> avoidArea = testAvoidAreaChangedListener_->avoidAreas_;
ASSERT_EQ(4u, static_cast<uint32_t>(avoidArea.size())); // 4: avoidAreaNum(left, top, right, bottom)
ASSERT_TRUE(utils::RectEqualToRect(avoidBarInfo_.rect, avoidArea[0])); // 0: left Rect
// Remove left avoid.
ASSERT_EQ(WMError::WM_OK, left->Hide());
// Await 100ms and get callback result in listener. Compare current avoidArea
usleep(WAIT_ASYNC_US);
std::vector<Rect> avoidArea2 = testAvoidAreaChangedListener_->avoidAreas_;
ASSERT_TRUE(utils::RectEqualToRect(EMPTY_RECT, avoidArea2[0])); // 0: left Rect
window->UnregisterAvoidAreaChangeListener(thisListener);
ASSERT_EQ(WMError::WM_OK, window->Hide());
}
/**
* @tc.name: DockWindowTest01
* @tc.desc: Add unexistavoid and remove this avoid. Test OnAvoidAreaChanged listener
@@ -118,10 +118,6 @@ HWTEST_F(WindowSplitImmersiveTest, SplitImmersive01, Function | MediumTest | Lev
// check is out split Immersive
ASSERT_EQ(WindowMode::WINDOW_MODE_FULLSCREEN, fullWindow->GetMode());
Rect curFullScreenRect = fullWindow->GetRect();
AvoidArea avoidArea;
fullWindow->GetAvoidAreaByType(AvoidAreaType::TYPE_SYSTEM, avoidArea);
ASSERT_EQ(avoidArea.topRect_.height_, curFullScreenRect.posY_);
ASSERT_EQ(WMError::WM_OK, fullWindow->Hide());
sleep(SPLIT_TEST_SLEEP_S);
+2 -2
View File
@@ -55,7 +55,7 @@ private:
AvoidPosType CalculateOverlayRect(const sptr<WindowNode>& node,
const sptr<WindowNode>& overlayNode, Rect& overlayRect) const;
AvoidPosType GetAvoidPosType(const Rect& windowRect, const Rect& overlayRect) const;
void SetAvoidAreaRect(AvoidArea& avoidArea, Rect& rect, AvoidPosType type) const;
void SetAvoidAreaRect(AvoidArea& avoidArea, const Rect& rect, AvoidPosType type) const;
bool UpdateAvoidAreaIfNeed(const AvoidArea& avoidArea, const sptr<WindowNode>& node, AvoidAreaType avoidAreaType);
AvoidArea GetAvoidAreaSystemType(const sptr<WindowNode>& node) const;
AvoidArea GetAvoidAreaKeyboardType(const sptr<WindowNode>& node) const;
@@ -64,8 +64,8 @@ private:
std::unordered_map<uint32_t, sptr<WindowNode>> overlayWindowMap_;
std::set<sptr<WindowNode>> avoidAreaListenerNodes_;
std::map<uint32_t, std::map<AvoidAreaType, AvoidArea>> lastUpdatedAvoidArea_;
DEFINE_VAR_DEFAULT_FUNC_SET(bool, FlagForProcessWindowChange, isForbidProcessingWindowChange, false)
uint32_t lastSoftInputKeyboardAreaUpdatedWindowId_ { 0 };
DEFINE_VAR_DEFAULT_FUNC_SET(bool, FlagForProcessWindowChange, isForbidProcessingWindowChange, false)
};
}
}
+1 -1
View File
@@ -43,7 +43,7 @@ public:
WMError RequestFocus(uint32_t windowId);
WMError SetWindowBackgroundBlur(uint32_t windowId, WindowBlurLevel level);
WMError SetAlpha(uint32_t windowId, float alpha);
AvoidArea GetAvoidAreaByType(uint32_t windowId, AvoidAreaType avoidAreaType);
AvoidArea GetAvoidAreaByType(uint32_t windowId, AvoidAreaType avoidAreaType) const;
WMError GetTopWindowId(uint32_t mainWinId, uint32_t& topWinId);
void NotifyDisplayStateChange(DisplayId defaultDisplayId, sptr<DisplayInfo> displayInfo,
const std::map<DisplayId, sptr<DisplayInfo>>& displayInfoMap, DisplayStateChangeType type);
+1 -1
View File
@@ -56,7 +56,7 @@ public:
uint32_t ToOverrideBrightness(float brightness);
void UpdateBrightness(uint32_t id, bool byRemoved);
void HandleKeepScreenOn(const sptr<WindowNode>& node, bool requireLock);
AvoidArea GetAvoidAreaByType(const sptr<WindowNode>& node, AvoidAreaType avoidAreaType);
AvoidArea GetAvoidAreaByType(const sptr<WindowNode>& node, AvoidAreaType avoidAreaType) const;
WMError MinimizeStructuredAppWindowsExceptSelf(const sptr<WindowNode>& node);
void TraverseContainer(std::vector<sptr<WindowNode>>& windowNodes) const;
uint64_t GetScreenId(DisplayId displayId) const;
@@ -59,7 +59,6 @@ public:
void MinimizeWindowsByLauncher(std::vector<uint32_t> windowIds, bool isAnimated,
sptr<RSIWindowAnimationFinishedCallback>& finishCallback) override;
WMError UpdateAvoidAreaListener(uint32_t windowId, bool haveListener) override;
private:
static inline BrokerDelegator<WindowManagerProxy> delegator_;
};
+27 -27
View File
@@ -75,11 +75,10 @@ void AvoidAreaController::AddOrRemoveOverlayWindowIfNeed(const sptr<WindowNode>&
uint32_t overlayId = overlayNode->GetWindowId();
bool isRecorded = (overlayWindowMap_.find(overlayId) != overlayWindowMap_.end());
if (isAdding == isRecorded) {
WLOGE("error occured in overlay. overlayId %{public}u isAdding %{public}d record flag %{public}d",
WLOGFE("error occured in overlay. overlayId %{public}u isAdding %{public}d record flag %{public}d",
overlayId, isAdding, isRecorded);
return;
}
WLOGFE("overlayId %{public}u isAdding %{public}d record flag %{public}d", overlayId, isAdding, isRecorded);
if (isAdding) {
overlayWindowMap_.insert(std::make_pair(overlayId, overlayNode));
} else {
@@ -102,34 +101,36 @@ void AvoidAreaController::AddOrRemoveKeyboard(const sptr<WindowNode>& keyboardNo
const uint32_t callingWindowId = keyboardNode->GetCallingWindow();
sptr<WindowNode> callingWindow = nullptr;
sptr<WindowNode> focusWindow = nullptr;
sptr<WindowNode> lastSoftInputKeyboardAreaUpdatedWindow = nullptr;
sptr<WindowNode> lastKeyboardAreaUpdatedWindow = nullptr;
for (auto window : avoidAreaListenerNodes_) {
if (window != nullptr && window->GetWindowToken() != nullptr && window->GetWindowId() == callingWindowId) {
if (window == nullptr || window->GetWindowToken() == nullptr) {
continue;
}
if (window->GetWindowId() == callingWindowId) {
callingWindow = window;
}
if (window != nullptr && window->GetWindowToken() != nullptr && window->GetWindowId() == focusedWindow_) {
if (window->GetWindowId() == focusedWindow_) {
focusWindow = window;
}
if (window != nullptr && window->GetWindowToken() != nullptr &&
window->GetWindowId() == lastSoftInputKeyboardAreaUpdatedWindowId_) {
lastSoftInputKeyboardAreaUpdatedWindow = window;
if (window->GetWindowId() == lastSoftInputKeyboardAreaUpdatedWindowId_) {
lastKeyboardAreaUpdatedWindow = window;
}
}
if (callingWindow == nullptr) {
callingWindow = focusWindow;
}
if (lastSoftInputKeyboardAreaUpdatedWindow != nullptr && lastSoftInputKeyboardAreaUpdatedWindow != callingWindow) {
const WindowMode windowMode = lastSoftInputKeyboardAreaUpdatedWindow->GetWindowMode();
if (lastKeyboardAreaUpdatedWindow != nullptr && lastKeyboardAreaUpdatedWindow != callingWindow) {
const WindowMode windowMode = lastKeyboardAreaUpdatedWindow->GetWindowMode();
if (windowMode == WindowMode::WINDOW_MODE_FULLSCREEN ||
windowMode == WindowMode::WINDOW_MODE_SPLIT_PRIMARY ||
windowMode == WindowMode::WINDOW_MODE_SPLIT_SECONDARY ||
windowMode == WindowMode::WINDOW_MODE_FLOATING) {
auto avoidArea = GetAvoidAreaByType(lastSoftInputKeyboardAreaUpdatedWindow, AvoidAreaType::TYPE_KEYBOARD);
UpdateAvoidAreaIfNeed(avoidArea, lastSoftInputKeyboardAreaUpdatedWindow, AvoidAreaType::TYPE_KEYBOARD);
auto avoidArea = GetAvoidAreaByType(lastKeyboardAreaUpdatedWindow, AvoidAreaType::TYPE_KEYBOARD);
UpdateAvoidAreaIfNeed(avoidArea, lastKeyboardAreaUpdatedWindow, AvoidAreaType::TYPE_KEYBOARD);
}
}
if (callingWindow == nullptr && focusWindow == nullptr) {
WLOGFI("callingWindow: %{public}u is nullptr, focusWindow: %{public}u is nullptr.",
if (callingWindow == nullptr) {
WLOGFE("callingWindow: %{public}u is nullptr, focusWindow: %{public}u is nullptr.",
callingWindowId, focusedWindow_);
return;
}
@@ -168,15 +169,14 @@ void AvoidAreaController::UpdateOverlayWindowIfNeed(const sptr<WindowNode>& node
WLOGE("window: %{public}u is not in avoidAreaListenerNodes, don't update avoid area.", node->GetWindowId());
return;
}
AvoidArea systemAvoidArea = GetAvoidAreaByType(node, AvoidAreaType::TYPE_SYSTEM);
AvoidArea cutoutAvoidArea = GetAvoidAreaByType(node, AvoidAreaType::TYPE_CUTOUT);
AvoidArea gestureAvoidArea = GetAvoidAreaByType(node, AvoidAreaType::TYPE_SYSTEM_GESTURE);
AvoidArea keyboardAvoidArea = GetAvoidAreaByType(node, AvoidAreaType::TYPE_KEYBOARD);
UpdateAvoidAreaIfNeed(systemAvoidArea, node, AvoidAreaType::TYPE_SYSTEM);
UpdateAvoidAreaIfNeed(cutoutAvoidArea, node, AvoidAreaType::TYPE_CUTOUT);
UpdateAvoidAreaIfNeed(gestureAvoidArea, node, AvoidAreaType::TYPE_SYSTEM_GESTURE);
if (UpdateAvoidAreaIfNeed(keyboardAvoidArea, node, AvoidAreaType::TYPE_KEYBOARD)) {
lastSoftInputKeyboardAreaUpdatedWindowId_ = node->GetWindowId();
uint32_t start = static_cast<uint32_t>(AvoidAreaType::TYPE_SYSTEM);
uint32_t end = static_cast<uint32_t>(AvoidAreaType::TYPE_KEYBOARD);
for (int type = start; type <= end; type++) {
AvoidArea systemAvoidArea = GetAvoidAreaByType(node, static_cast<AvoidAreaType>(type));
bool res = UpdateAvoidAreaIfNeed(systemAvoidArea, node, static_cast<AvoidAreaType>(type));
if (res && type == static_cast<uint32_t>(AvoidAreaType::TYPE_KEYBOARD)) {
lastSoftInputKeyboardAreaUpdatedWindowId_ = node->GetWindowId();
}
}
}
}
@@ -241,7 +241,7 @@ AvoidPosType AvoidAreaController::GetAvoidPosType(const Rect& windowRect, const
return AvoidPosType::AVOID_POS_BOTTOM;
}
void AvoidAreaController::SetAvoidAreaRect(AvoidArea& avoidArea, Rect& rect, AvoidPosType type) const
void AvoidAreaController::SetAvoidAreaRect(AvoidArea& avoidArea, const Rect& rect, AvoidPosType type) const
{
switch (type) {
case AvoidPosType::AVOID_POS_TOP : {
@@ -335,10 +335,9 @@ AvoidArea AvoidAreaController::GetAvoidAreaSystemType(const sptr<WindowNode>& no
AvoidArea AvoidAreaController::GetAvoidAreaKeyboardType(const sptr<WindowNode>& node) const
{
AvoidArea avoidArea;
if (focusedWindow_ != node->GetWindowId()) {
WLOGFI("focusedWindow: %{public}u is not windowId: %{public}u", focusedWindow_, node->GetWindowId());
return avoidArea;
return {};
}
for (auto& iter : overlayWindowMap_) {
if (iter.second != nullptr &&
@@ -351,11 +350,12 @@ AvoidArea AvoidAreaController::GetAvoidAreaKeyboardType(const sptr<WindowNode>&
}
Rect avoidAreaRect;
AvoidPosType avoidPosType = CalculateOverlayRect(node, iter.second, avoidAreaRect);
AvoidArea avoidArea;
SetAvoidAreaRect(avoidArea, avoidAreaRect, avoidPosType);
return avoidArea;
}
}
return avoidArea;
return {};
}
}
}
+1 -1
View File
@@ -616,7 +616,7 @@ WMError WindowController::SetWindowAnimationController(const sptr<RSIWindowAnima
return RemoteAnimation::SetWindowAnimationController(controller);
}
AvoidArea WindowController::GetAvoidAreaByType(uint32_t windowId, AvoidAreaType avoidAreaType)
AvoidArea WindowController::GetAvoidAreaByType(uint32_t windowId, AvoidAreaType avoidAreaType) const
{
return windowRoot_->GetAvoidAreaByType(windowId, avoidAreaType);
}
-1
View File
@@ -669,7 +669,6 @@ void WindowManagerService::GetFullScreenWindowRequestedOrientation(DisplayId dis
WMError WindowManagerService::UpdateAvoidAreaListener(uint32_t windowId, bool haveAvoidAreaListener)
{
return wmsTaskLooper_->ScheduleTask([this, windowId, haveAvoidAreaListener]() {
WM_SCOPED_TRACE("wms:UpdateAvoidAreaListener");
sptr<WindowNode> node = windowRoot_->GetWindowNode(windowId);
if (node == nullptr) {
WLOGFE("get window node failed. win %{public}u", windowId);
+3 -4
View File
@@ -224,7 +224,6 @@ WMError WindowNodeContainer::UpdateWindowNode(sptr<WindowNode>& node, WindowUpda
if (WindowHelper::IsMainWindow(node->GetWindowType()) && WindowHelper::IsSwitchCascadeReason(reason)) {
SwitchLayoutPolicy(WindowLayoutMode::CASCADE, node->GetDisplayId());
}
WLOGFI("UpdateWindowNode windowId: %{public}u begin", node->GetWindowId());
layoutPolicy_->UpdateWindowNode(node);
NotifyIfAvoidAreaChanged(node, AvoidControlType::AVOID_NODE_UPDATE);
DumpScreenWindowTree();
@@ -862,8 +861,8 @@ void WindowNodeContainer::NotifyIfKeyboardRegionChanged(const sptr<WindowNode>&
WLOGFI("keyboard size change callingWindow: [%{public}s, %{public}u], " \
"overlap rect: [%{public}d, %{public}d, %{public}u, %{public}u]",
callingWindow->GetWindowName().c_str(), callingWindow->GetWindowId(),
overlapRect.posX_, overlapRect.posY_, overlapRect.width_, overlapRect.height_);
callingWindow->GetWindowName().c_str(), callingWindow->GetWindowId(),
overlapRect.posX_, overlapRect.posY_, overlapRect.width_, overlapRect.height_);
sptr<OccupiedAreaChangeInfo> info = new OccupiedAreaChangeInfo(OccupiedAreaType::TYPE_INPUT, overlapRect);
callingWindow->GetWindowToken()->UpdateOccupiedAreaChangeInfo(info);
return;
@@ -1082,7 +1081,7 @@ void WindowNodeContainer::TraverseWindowNode(sptr<WindowNode>& node, std::vector
}
}
AvoidArea WindowNodeContainer::GetAvoidAreaByType(const sptr<WindowNode>& node, AvoidAreaType avoidAreaType)
AvoidArea WindowNodeContainer::GetAvoidAreaByType(const sptr<WindowNode>& node, AvoidAreaType avoidAreaType) const
{
if (CheckWindowNodeWhetherInWindowTree(node)) {
return avoidController_->GetAvoidAreaByType(node, avoidAreaType);
+1 -1
View File
@@ -72,7 +72,7 @@ sptr<WindowNodeContainer> WindowRoot::GetOrCreateWindowNodeContainer(DisplayId d
}
// In case of have no container for default display, create container
WLOGFE("Create container for current display, displayId: %{public}" PRIu64 "", displayId);
WLOGFI("Create container for current display, displayId: %{public}" PRIu64 "", displayId);
sptr<DisplayInfo> displayInfo = DisplayManagerServiceInner::GetInstance().GetDisplayById(displayId);
return CreateWindowNodeContainer(displayInfo);
}