1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "window_visibility_changed_listener.h"
17 
18 #include "app_mgr_service_inner.h"
19 #include "hilog_tag_wrapper.h"
20 
21 namespace OHOS {
22 namespace AppExecFwk {
23 using namespace OHOS::Rosen;
WindowVisibilityChangedListener(const std::weak_ptr<AppMgrServiceInner> & appInner,const std::shared_ptr<AAFwk::TaskHandlerWrap> & handler)24 WindowVisibilityChangedListener::WindowVisibilityChangedListener(
25     const std::weak_ptr<AppMgrServiceInner> &appInner, const std::shared_ptr<AAFwk::TaskHandlerWrap> &handler)
26     : appServiceInner_(appInner), taskHandler_(handler)
27 {}
28 
OnWindowVisibilityChanged(const std::vector<sptr<WindowVisibilityInfo>> & windowVisibilityInfos)29 void WindowVisibilityChangedListener::OnWindowVisibilityChanged(
30     const std::vector<sptr<WindowVisibilityInfo>> &windowVisibilityInfos)
31 {
32     TAG_LOGD(AAFwkTag::APPMGR, "called");
33     if (windowVisibilityInfos.empty()) {
34         TAG_LOGW(AAFwkTag::APPMGR, "Window visibility info is empty.");
35         return;
36     }
37 
38     if (taskHandler_ == nullptr) {
39         TAG_LOGE(AAFwkTag::APPMGR, "Task handler is nullptr.");
40         return;
41     }
42 
43     auto task = [inner = appServiceInner_, windowVisibilityInfos] {
44         auto serviceInner = inner.lock();
45         if (serviceInner == nullptr) {
46             TAG_LOGE(AAFwkTag::APPMGR, "Failed to get app mgr service inner.");
47             return;
48         }
49         serviceInner->HandleWindowVisibilityChanged(windowVisibilityInfos);
50     };
51     taskHandler_->SubmitTask(task, "OnWindowVisibilityChanged");
52 }
53 } // namespace AppExecFwk
54 } // namespace OHOS
55