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: JsPiPWindowListener(napi_env env,const std::shared_ptr<NativeReference> & callback)29 JsPiPWindowListener(napi_env env, const std::shared_ptr<NativeReference>& callback) 30 : env_(env), jsCallBack_(callback) {} 31 ~JsPiPWindowListener(); 32 std::shared_ptr<NativeReference> GetCallbackRef() const; 33 void OnPreparePictureInPictureStart() override; 34 void OnPictureInPictureStart() override; 35 void OnPreparePictureInPictureStop() override; 36 void OnPictureInPictureStop() override; 37 void OnPictureInPictureOperationError(int32_t errorCode) override; 38 void OnRestoreUserInterface() override; 39 void OnActionEvent(const std::string& actionEvent, int32_t statusCode) override; 40 void OnControlEvent(PiPControlType controlType, PiPControlStatus statusCode) override; 41 42 private: 43 void OnPipListenerCallback(PiPState state, int32_t errorCode); 44 napi_env env_ = nullptr; 45 std::shared_ptr<NativeReference> jsCallBack_ = nullptr; 46 }; 47 } // namespace Rosen 48 } // namespace OHOS 49 #endif /* OHOS_JS_PIP_WINDOW_LISTENER_H */ 50