1 /* 2 * Copyright (c) 2024-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 #ifndef OHOS_JS_PIP_WINDOW_LISTENER_H 17 #define OHOS_JS_PIP_WINDOW_LISTENER_H 18 19 #include "native_engine/native_value.h" 20 #include "picture_in_picture_interface.h" 21 #include "refbase.h" 22 23 namespace OHOS { 24 namespace Rosen { 25 class JsPiPWindowListener : public IPiPLifeCycle, 26 public IPiPActionObserver, 27 public IPiPControlObserver, 28 public IPiPWindowSize, 29 public IPiPTypeNodeObserver { 30 public: JsPiPWindowListener(napi_env env,const std::shared_ptr<NativeReference> & callback)31 JsPiPWindowListener(napi_env env, const std::shared_ptr<NativeReference>& callback) 32 : env_(env), jsCallBack_(callback) {} 33 ~JsPiPWindowListener(); 34 std::shared_ptr<NativeReference> GetCallbackRef() const; 35 void OnPreparePictureInPictureStart() override; 36 void OnPictureInPictureStart() override; 37 void OnPreparePictureInPictureStop() override; 38 void OnPictureInPictureStop() override; 39 void OnPictureInPictureOperationError(int32_t errorCode) override; 40 void OnRestoreUserInterface() override; 41 void OnActionEvent(const std::string& actionEvent, int32_t statusCode) override; 42 void OnControlEvent(PiPControlType controlType, PiPControlStatus statusCode) override; 43 void OnPipSizeChange(const PiPWindowSize& size) override; 44 void OnPipTypeNodeChange(const napi_ref nodeRef) override; 45 46 private: 47 void OnPipListenerCallback(PiPState state, int32_t errorCode); 48 napi_env env_ = nullptr; 49 std::shared_ptr<NativeReference> jsCallBack_ = nullptr; 50 }; 51 } // namespace Rosen 52 } // namespace OHOS 53 #endif /* OHOS_JS_PIP_WINDOW_LISTENER_H */ 54