1 /* 2 * Copyright (c) 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 WEBVIEW_JAVA_SCRIPT_EXECUTE_CALLBACK_H 17 #define WEBVIEW_JAVA_SCRIPT_EXECUTE_CALLBACK_H 18 19 #include <string> 20 21 #include "webview_ffi.h" 22 #include "webview_controller_impl.h" 23 #include "nweb_value_callback.h" 24 #include "nweb_web_message.h" 25 #include "nweb_message_ext.h" 26 27 namespace OHOS::Webview { 28 29 enum class JsMessageType : int { 30 NOTSUPPORT = 0, 31 STRING, 32 NUMBER, 33 BOOLEAN, 34 ARRAYBUFFER, 35 ARRAY 36 }; 37 38 class WebviewJavaScriptExecuteCallback : 39 public OHOS::NWeb::NWebMessageValueCallback { 40 public: WebviewJavaScriptExecuteCallback(std::function<void (RetDataCString)> callbackRef)41 explicit WebviewJavaScriptExecuteCallback(std::function<void(RetDataCString)> callbackRef) 42 : callbackRef_(callbackRef) 43 {} 44 ~WebviewJavaScriptExecuteCallback() = default; 45 void OnReceiveValue(std::shared_ptr<OHOS::NWeb::NWebMessage> result) override; 46 void OnReceiveValueV2(std::shared_ptr<OHOS::NWeb::NWebHapValue> value) override; 47 48 private: 49 std::function<void(RetDataCString)> callbackRef_ = nullptr; 50 }; 51 52 class WebJsMessageExtImpl : public OHOS::FFI::FFIData { DECL_TYPE(WebJsMessageExtImpl,OHOS::FFI::FFIData)53 DECL_TYPE(WebJsMessageExtImpl, OHOS::FFI::FFIData) 54 public: 55 explicit WebJsMessageExtImpl(std::shared_ptr<NWeb::NWebMessage> value) : value_(value) {} WebJsMessageExtImpl(std::shared_ptr<NWeb::NWebHapValue> value)56 explicit WebJsMessageExtImpl(std::shared_ptr<NWeb::NWebHapValue> value) 57 { 58 value_ = NWeb::ConvertNwebHap2NwebMessage(value); 59 } 60 ~WebJsMessageExtImpl() = default; 61 62 int32_t ConvertToJsType(NWeb::NWebValue::Type type); 63 int32_t GetType(); 64 std::string GetString(); 65 double GetNumber(); 66 bool GetBoolean(); GetJsMsgResult()67 std::shared_ptr<NWeb::NWebMessage> GetJsMsgResult() 68 { 69 return value_; 70 } 71 72 private: 73 std::shared_ptr<NWeb::NWebMessage> value_ = nullptr; 74 }; 75 76 class WebviewJavaScriptExtExecuteCallback : 77 public OHOS::NWeb::NWebMessageValueCallback { 78 public: WebviewJavaScriptExtExecuteCallback(std::function<void (RetDataI64)> callbackRef)79 explicit WebviewJavaScriptExtExecuteCallback(std::function<void(RetDataI64)> callbackRef) 80 : callbackRef_(callbackRef) 81 {} 82 ~WebviewJavaScriptExtExecuteCallback() = default; 83 void OnReceiveValue(std::shared_ptr<OHOS::NWeb::NWebMessage> result) override; 84 void OnReceiveValueV2(std::shared_ptr<OHOS::NWeb::NWebHapValue> value) override; 85 86 private: 87 std::function<void(RetDataI64)> callbackRef_ = nullptr; 88 }; 89 90 } // namespace OHOS::Webview 91 #endif 92