diff --git a/zh-cn/native_sdk/web/webview/interfaces/native/arkweb_scheme_handler.h b/zh-cn/native_sdk/web/webview/interfaces/native/arkweb_scheme_handler.h index e7f2661aea7d4da812fc661cc89acfaaac63e942..db93188d7e614ea21f27de0fdc8550c6a8d99a38 100644 --- a/zh-cn/native_sdk/web/webview/interfaces/native/arkweb_scheme_handler.h +++ b/zh-cn/native_sdk/web/webview/interfaces/native/arkweb_scheme_handler.h @@ -247,6 +247,20 @@ typedef void (*ArkWeb_HttpBodyStreamReadCallback)(const ArkWeb_HttpBodyStream* h uint8_t* buffer, int bytesRead); +/** + * @brief 当OH_ArkWebHttpBodyStream_AsyncRead读取操作完成时的回调函数。 + * @param httpBodyStream ArkWeb_HttpBodyStream。 + * @param buffer 接收数据的buffer。 + * @param bytesRead OH_ArkWebHttpBodyStream_AsyncRead后的回调函数。如果bytesRead大于0,则表示buffer已填充了bytesRead大小的数据。 + * 调用者可以从buffer中读取数据,如果OH_ArkWebHttpBodyStream_IsEOF为false,则调用者可以继续读取剩余的数据。 + * + * @syscap SystemCapability.Web.Webview.Core + * @since 20 + */ +typedef void (*ArkWeb_HttpBodyStreamAsyncReadCallback)(const ArkWeb_HttpBodyStream *httpBodyStream, + uint8_t *buffer, + int bytesRead); + /** * @brief ArkWeb_HttpBodyStream初始化操作完成时回调函数。 * @param httpBodyStream ArkWeb_HttpBodyStream。 @@ -410,6 +424,22 @@ void* OH_ArkWebHttpBodyStream_GetUserData(const ArkWeb_HttpBodyStream* httpBodyS int32_t OH_ArkWebHttpBodyStream_SetReadCallback(ArkWeb_HttpBodyStream* httpBodyStream, ArkWeb_HttpBodyStreamReadCallback readCallback); +/** + * @brief 为OH_ArkWebHttpBodyStream_AsyncRead设置回调函数。 + * + * OH_ArkWebHttpBodyStream_AsyncRead的结果将通过readCallback通知给调用者。\n + * 该回调函数会在 ArkWeb 工作线程中运行。\n + * + * @param httpBodyStream ArkWeb_HttpBodyStream。 + * @param readCallback OH_ArkWebHttpBodyStream_AsyncRead的回调函数。 + * @return 如果返回0,表示成功;返回17100101,表示参数无效。 + * + * @syscap SystemCapability.Web.Webview.Core + * @since 20 + */ +int32_t OH_ArkWebHttpBodyStream_SetAsyncReadCallback(ArkWeb_HttpBodyStream *httpBodyStream, + ArkWeb_HttpBodyStreamAsyncReadCallback readCallback); + /** * @brief 初始化ArkWeb_HttpBodyStream。 * @@ -439,6 +469,20 @@ int32_t OH_ArkWebHttpBodyStream_Init(ArkWeb_HttpBodyStream* httpBodyStream, */ void OH_ArkWebHttpBodyStream_Read(const ArkWeb_HttpBodyStream* httpBodyStream, uint8_t* buffer, int bufLen); +/** + * @brief 将请求的上传数据读取到buffer。 + * + * buffer的大小必须大于bufLen。我们将从工作线程读取数据到buffer,因此在回调函数返回之前,不应在其他线程中使用buffer,以避免并发问题。\n + * + * @param httpBodyStream ArkWeb_HttpBodyStream。 + * @param buffer 接收数据的buffer。 + * @param bufLen 要读取的字节的大小。 + * + * @syscap SystemCapability.Web.Webview.Core + * @since 20 + */ +void OH_ArkWebHttpBodyStream_AsyncRead(const ArkWeb_HttpBodyStream *httpBodyStream, uint8_t *buffer, int bufLen); + /** * @brief 获取httpBodyStream的大小。 *